Está en la página 1de 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:
WGM13 1
WGM12 1
WGM11 1
WGM10 0

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

ICR1 debe contener el valor TOP de 19 999, por lo tanto se deben de inicializar los
siguientes registros como se indica:
ICR1H 0b01001110
ICR1L 0b00011111

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).



















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-0 del registro determinan como se tomar el voltaje de referencia, como
describe la siguiente tabla.
Valor
de bits
Modo de operacin
0 0 AREF, internal Vref turned off
0 1 AVCC with external capacitor at
AREF pin
1 0 Reserved
1 1 Internal 2.56V Vref with external
capacitor at AREF pin


Los bits MUX4-0 sirven 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 ADLAR determina 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 Conversion Al utilizar este modo de operacin, cada una de las conversiones
debe ser inicializada por algn evento (trigger).
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.

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

UDR USART 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 estado
cada 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.

UCSRA USART 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
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).

UCSRB USART 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 interrupcin
generada 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.
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 bit
0 0 1 6 bit
0 1 0 7 bit
0 1 1 8 bit
1 0 0 Reserved
1 0 1 Reserved
1 1 0 Reserved
1 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.

UCSRC USART 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 Mode
0 0 Disabled
0 1 Reserved
1 0 Enabled,
Even Parity
1 1 Enabled,
Odd Parity

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 on
RxD Pin)
0 Rising XCK Edge Falling XCK Edge
1 Falling XCK Edge Rising XCK Edge


UBRRL Y UBRRH USART 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-12 no 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
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 de operacin Ecuacin para calcular la
tasa (Baud Rate)
Ecuacin para calcular el
valor de UBRR
Modo asncrono normal
(U2X = 0)


Modo asncrono a doble
velocidad (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 la
instruccin 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.