Apuntes AVR

download Apuntes AVR

of 9

Transcript of Apuntes AVR

  • 8/10/2019 Apuntes AVR

    1/9

    Timer1 en modo FastPWM para un Servomotor

    CLK 8MHz

    Prescaler 8

    TOP 19,999

    TCCR1A

    COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10

    7 6 5 4 3 2 1 0

    TCCR1B

    ICNC1 ICES1 - WGM13 WGM12 CS12 CS11 CS10

    7 6 5 4 3 2 1 0

    Para establecer el Timer1 en modo FastPWM donde TOP = ICR1, se necesitan establecer

    los siguientes bits:

    WGM131

    WGM121

    WGM111

    WGM100

    Para establecer el prescaler en 8 se deben establecer los CS10..12 de esta manera:

    CS120

    CS111

    CS100

    ICR1 debe contener el valor TOP de 19 999, por lo tanto se deben de inicializar los

    siguientes registros como se indica:

    ICR1H0b01001110

    ICR1L0b00011111

  • 8/10/2019 Apuntes AVR

    2/9

    Ahora el Timer1 est configurado para poder proveer hasta dos salidas PWM en los pines

    OC1A y OC1B. Para activarlas, el puerto D tiene que estar configurado como salida.

    Adems es necesario establecer los registros OCR1xH y OCR1xL (donde x es A o B

    dependiendo del canal a usar). Para calcular los valores a cargar a estos registros se

    usar la siguiente frmula:

    Donde V va de 1 a 2 (puede variar dependiendo del servo).

    Finalmente para inicializar el PWM se deben de cambiar los bits 7 y 6 (para el canal A) o

    el 5 y 4 (para el canal B) en modo non-inverting (10).

  • 8/10/2019 Apuntes AVR

    3/9

    ADC (Analog to Digital Converter)

    ADMUX (ADC Multiplexer Selection)

    REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0

    7 6 5 4 3 2 1 0

    Los bits REFS1-0del registro determinan como se tomar el voltaje de referencia, como

    describe la siguiente tabla.

    Valorde bits

    Modo de operacin

    0 0 AREF, internal Vref turned off

    0 1 AVCC with external capacitor atAREF pin

    1 0 Reserved

    1 1 Internal 2.56V Vref with externalcapacitor at AREF pin

    Los bits MUX4-0sirven para configurar el pin del Puerto A que tomaremos como entrada

    para realizar la conversin con el ADC. Para la lectura de un pin sin ninguna comparacin

    se inicializa esos bits en el nmero del pin del puerto A que se desea usar (por ejemplo si

    se va a usar el pin 4 se debe de introducir 00100 a los bits del registro, el cual equivale a

    un cuatro en binario).

    El bit ADLARdetermina cmo quedar almacenado el resultado de la conversin en los

    registros ADCH y ADCL, 0 para alinearlo a la derecha y 1 para alinearlo a la izquierda.

    SFIOR (Special Function Input/Output Register)

    ADTS2 ADTS1 ADTS0 - ACME PUD PSR2 PSR10

    7 6 5 4 3 2 1 0

    El ADC funciona en 2 modos diferentes:

    Free running El ADC se mantiene realizando conversiones constantemente y

    actualizando cada vez el contenido de registro de datos del ADC.

    Single ConversionAl utilizar este modo de operacin, cada una de las conversiones

    debe ser inicializada por algn evento (trigger).

  • 8/10/2019 Apuntes AVR

    4/9

    Los bits ADTS2-0 del registro establecen el modo de operacin del ADC, como lo

    describe la siguiente tabla. Si se desea emplear algn trigger (diferente al free running

    mode) el bit ADATE del registro ADCSRA deber ser configurado en 1.

    ADTS2-0 Trigger Source

    0 0 0 Free Running Mode

    0 0 1 Analog Comparator

    0 1 0 External Interrupt Request 0

    0 1 1 Timer/Counter0 Compare Match

    1 0 0 Timer/Counter0 Overflow

    1 0 1 Timer/Counter1 Compare Match B

    1 1 0 Timer/Counter1 Overflow

    1 1 1 Timer/Counter1 Capture Event

    ADCSRA (ADC Control and Status Register)

    ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

    7 6 5 4 3 2 1 0

    El bit ADEN (ADC Enable) del registro determina si el ADC estar activado (1) o

    desactivado (0).

    El bit ADSC(ADC Start Conversion) se usa cuando el ADC est en modo Free Running.

    Se le pone un 1 para indicarle el inicio de la primera conversin.

    El bit ADATE(ADC Auto Trigger Enable) activa el trigger para iniciar la conversin.

    El bit ADIF (ADC Interrupt Flag) es una bandera que se activa cuando se genera una

    interrupcin de una conversin, y se desactiva con el reti.

    El bit ADIE (ADC Interrupt Enable), si est activo, genera una interrupcin cada vez que

    se termina una conversin.

    Los bits ADPS2-0(ADC Prescaler Select Bits) determinan el prescaler que se emplear

    para dividir la frecuencia de reloj del microprocesador.

  • 8/10/2019 Apuntes AVR

    5/9

    USART (Universal Synchronous and

    Asynchronous serial Receiver and Transmitter)

    El USART del ATmega8535 puede funcionar de cuatro modos diferentes segn la

    configuracin de su reloj:

    Normal Asncrono

    Asncrono de doble velocidad

    Sncrono Maestro

    Sncrono Esclavo

    UDRUSART I/O DATA REGISTER

    Este registro es utilizado como buffer para transmisin o recepcin, es decir que en este

    registro deben ponerse los datos que se desea enviar por el serial, o bien pueden leerse

    los datos recibidos (este buffer nicamente puede ser ledo o modificado cuando la

    bandera UDRE del registro UCSRA est en 1.

    Si se trata de escribir un dato y la bandera no est habilitada el dato ser ignorado. Si se

    escribe un dato, este es almacenado en el registro de transmisin serial y ser enviado a

    travs del pin TxD.

    El buffer de recepcin consiste en un FIFO de dos niveles, el cual cambiar de estadocada vez que se acceda al buffer, es por ello que resulta importante no usar instrucciones

    como SBI o CBI en este registro. Y debe tenerse tambin cuidado en el uso de

    instrucciones como SBIC o SBIS, puesto que tambin cambiarn el contenido del FIFO.

    UCSRAUSART CONTROL AND STATUS REGISTER A

    RXC TXC UDRE FE DOR PE U2X MPCM

    7 6 5 4 3 2 1 0

    El bit RXC (USART Receive Complete) del registro es una bandera que estar activa

    cuando haya datos sin leer en el buffer de recepcin, y se limpiar cuando los datos

    hayan sido ledos. La bandera puede ser empleada para activar la interrupcin de

    Recepcin.

    El bit TXC(USART Transmit Complete) es una bandera que se activa cuando la totalidad

    de los datos han sido enviados y no hay datos nuevos en el buffer de transmisin. Se

  • 8/10/2019 Apuntes AVR

    6/9

    limpia automticamente cuando la interrupcin de transmisin se ejecuta o puede

    limpiarse escribindole un 1. Esta bandera puede generar una interrupcin.

    El bit UDRE(USART Data Register Empty) es una bandera que indica que el registro de

    transmisin UDR est listo para recibir nuevos datos, si UDRE es 1, el buffer est vaco y

    por lo tanto pueden enviarse nuevos datos. Esta bandera puede generar una interrupcin.

    El bit FE(Frame Error) se activa cuando existe un error en los datos que se reciben.

    El bit DOR(Data OverRun) se activa cuando se detecta un Overrun. Esto ocurre cuando

    el buffer de recepcin est lleno y hay un byte en espera de ser recibido.

    EL bit PE(Parity Error) se activa cuando se detecta un error de paridad en la recepcin

    (solamente funciona si el chequeo de paridad se encuentra habilitado (UPM1 = 1)).

    El bit U2X(Double the USART Transmission Speed) funciona solamente cuando se est

    empleando la transmisin asncrona, y debe quedar como 0 cuando se est empleando la

    operacin sncrona. Si el contenido de este bit es 1, se reducir el divisor para la tasa de

    transferencia de datos de 16 a 8, lo cual producir una transmisin asncrona al doble de

    velocidad.

    Con el bit MPCM (Multi-processor Communication Mode) se puede habilitar el modo de

    multi-procesadores, de manera que todas las seales que se reciban y que no contengan

    la informacin relativa a la direccin de la que provienen sern ignoradas (ms

    informacin en la pgina 162 del datasheet).

    UCSRBUSART CONTROL AND STATUS REGISTER B

    RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8

    7 6 5 4 3 2 1 0

    El bit RXCIE (RX Complete Interrupt Enable) habilita la interrupcin generada por la

    bandera RXC, es decir que se generar una interrupcin cada vez que se reciba un dato.

    El bit TXCIE (TX Complete Interrupt Enable) habilita la interrupcin generada por la

    bandera TXC, lo que quiere decir que se generar una interrupcin cada vez que la

    totalidad de los datos hayan sido enviados y no haya en el buffer ninguna informacin

    pendiente para enviar.

    El bit UDRIE (USART Data Register Empty Interrupt Enable) habilita la interrupcingenerada por la bandera UDRE.

    El bit RXEN(Receiver Enable) sirve para habilitar la recepcin de datos en el pin RxD, si

    este bit tiene un 0, entonces no podrn recibirse datos ni funcionarn las banderas FE,

    DOR ni PE.

    El bit TXEN(Transmitter Enable) sirve para habilitar la transmisin de datos.

  • 8/10/2019 Apuntes AVR

    7/9

    Los bits UCSZ2-0(Character Size) sirven para configurar el nmero de bits de datos que

    se emplearn en la transmisin y en la recepcin. En este registro solamente se

    encuentra el UCSZ2, mientras que el UCSZ1 y UCSZ0 se encuentran en el registro

    UCSRC.

    UCSZ2 UCSZ1 UCSZ0 Character Size

    0 0 0 5 bit0 0 1 6 bit0 1 0 7 bit0 1 1 8 bit1 0 0 Reserved

    1 0 1 Reserved1 1 0 Reserved1 1 1 9 bit

    El bit RXB8(Receive Data Bit 8) funciona como el noveno bit de la recepcin si se est

    trabajando con datos de 9 bits. Debe ser ledo antes de consultar el registro UDR.

    El bit TXB8 (Transmit Data Bit 8) funciona como el noveno bit de transmisin, debe ser

    escrito antes de consultar el registro UDR.

    UCSRCUSART CONTROL AND STATUS REGISTER C

    URSEL UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL

    7 6 5 4 3 2 1 0

    El bit URSEL(Register Select) sirve para seleccionar entre el acceso al registro UCSRC

    y el registro UBRRH. Cuando se va a escribir algn bit del registro UCSRC este bit deber

    contener un 1.

    El bit UMSEL se utiliza para seleccionar entre la operacin sncrona o asncrona del

    USART (0 para asncrona y 1 para sncrona).

    Los bits UPM1-0 (Parity Mode) sirven para configurar el USART de modo que se genere

    paridad y se realice el chequeo de la misma. Si se encuentra habilitada, el

    microprocesador automticamente generar y enviar los bits de paridad

    correspondientes a cada dato, y realizar las comparaciones pertinentes para saber si los

    datos recibidos se encuentran ntegros.

    UPM1 UPM0 Parity Mode0 0 Disabled

    0 1 Reserved

    1 0 Enabled,Even Parity

    1 1 Enabled,Odd Parity

  • 8/10/2019 Apuntes AVR

    8/9

    El bit USBS(Stop Bit Select) selecciona los nmeros de bits de stop que sern

    enviados por el transmisor. Si se establece en 0 ser de 1 bit, y si se establece en 1 ser

    de 2 bits.

    Los bits UCSZ1-0 (Character Size) se usan junto con el bit UCSZ2 como ya se haba

    mencionado. Estos indican cuantos bits sern empleados para la transmisin y recepcin

    de informacin.

    El bit UCPOL(Clock Polarity) se emplea nicamente en la transmisin sncrona, debe

    quedar como 0 cuando se est empleando la comunicacin asncrona.

    UCPOL Transmitted Data Changed(Output of TxD pin)

    Received Data Sampled (Input onRxD Pin)

    0 Rising XCK Edge Falling XCK Edge1 Falling XCK Edge Rising XCK Edge

    UBRRL Y UBRRHUSART BAUD RATE REGISTERS

    UBRRH

    URSEL - - - UBRR11-8

    15 14 13 12 11 10 9 8

    UBRRL

    UBRR7-0

    7 6 5 4 3 2 1 0

    *El registro UBRRH comparte la ubicacin con el registro UCSRC. Toda la informacin

    sobre el acceso a este registro aparece en la pgina 163 del datasheet.

    El bit URSEL (Register Select) selecciona entre el acceso al registro UBRRH y el

    UCSRC. URSEL deber contener 0 cuando se vaya a escribir informacin en el registro

    UBRRH.

    Los bits 14-12no son importantes para la comunicacin serial.

    Los bits UBRR11-0(USART Baud Rate Register) contienen la informacin referente a la

    tasa de transferencia con la que trabajar el USART.

    Reloj Interno del USART

  • 8/10/2019 Apuntes AVR

    9/9

    La comunicacin serial del AVR emplea un reloj interno, que es posible configurar de

    acuerdo a las necesidades de la transmisin, la tasa de transferencia que se desea

    emplear y la frecuencia del oscilador del microprocesador.

    Un contador decreciente es cargado con el contenido de UBRR cada vez que llega al

    valor de 0, esto produce un cambio en el estado del reloj interno del USART.

    Para calcular la tasa de transferencia se pueden utilizar las siguientes formulas.

    Modo d e operacin Ecuacin para calcular latasa (Baud Rate)

    Ecuacin para calcular elvalor de UBRR

    Modo asncrono normal(U2X = 0)

    Modo asncrono a doblevelocidad (U2X = 1)

    Modo sncrono maestro

    *El (baud rate) de transferencia est definida en bits por segundo.

    *Los valores de UBRR van de 0 a 4095.

    Inicializacin del USART

    El USART debe ser inicializado antes de realizar cualquier tipo de comunicacin. Este

    proceso de inicializacin consiste en especificar los bauds a los que se trabajar,

    establecer el modo de operacin y habilitar la transmisin o la recepcin, dependiendo del

    uso que se les vaya a dar. Si se emplear el USART controlado por interrupciones, es

    importante que la bandera de interrupciones globales (la que se habilita con la instruccin

    sei) se encuentre deshabilitada al momento de hacer la inicializacin (Es decir que lainstruccin sei deber ser escrita despus de haber inicializado el USART).

    Si durante alguna parte del programa se desea reinicializar el USART para cambiar los

    bauds a los que se est trabajando o el modo de funcionamiento, se debe tener cuidado

    de no estar realizando una transmisin o recepcin de informacin en ese momento, para

    ello se pueden revisar las banderas TXC y RXC.