Sie sind auf Seite 1von 75

ASDRBAL LPEZ CHAU.

DEDICATORIA A mi Amada Esposa Lutecia. A Mam y Pap.

CONTENIDO
I TRODUCCI ................................................................................................................ 7 OMBRE DEL PERIFRICO: TIMER/COU TER 1. .................................................. 9 DESCRIPCIN GENERAL. ............................................................................................. 9 DISPONIBLE EN .............................................................................................................. 9 APLICACIONES ............................................................................................................... 9 REGISTROS INVOLUCRADOS ...................................................................................... 9 MODO TEMPORIZADOR Y MODO CONTADOR. .................................................... 13 SECUENCIA DE CONFIGURACIN MODO TEMPORIZADOR Y CONTADOR... 14 I.S.R. ................................................................................................................................. 14 MODO CAPTURA .......................................................................................................... 15 SECUENCIA DE CONFIGURACIN MODO CAPTURA. ......................................... 16 I.S.R. ................................................................................................................................. 16 MODO COMPARADOR DE IGUALDAD. ................................................................... 17 SECUENCIA DE CONFIGURACIN MODO COMPARADOR DE IGUALDAD. ... 18 I.S.R. ................................................................................................................................. 18 MODO GENERADOR DE SEALES PWM (MODULACIN POR ANCHO DE PULSO) ............................................................................................................................ 19 SECUENCIA DE CONFIGURACIN MODO PWM. .................................................. 21 I.S.R. ................................................................................................................................. 21 IMPLANTACIN. ........................................................................................................... 22 TIMER/COUNTER 1 MODO TEMPORIZADOR. ........................................................ 22 TIMER/COUNTER 1 MODO CAPTURA. ..................................................................... 23 TIMER/COUNTER 1 MODO GENERADOR DE SEALES PWM. ........................... 25 TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD. ............................... 26 OMBRE DEL PERIFRICO: TIMER/COU TER0. ................................................. 29 FUNCIONAMIENTO GENERAL .................................................................................. 29 DISPONIBLE EN ............................................................................................................ 29 APLICACIONES ............................................................................................................. 29 REGISTROS INVOLUCRADOS. ................................................................................... 29 SECUENCIA DE CONFIGURACIN ........................................................................... 32 I.S.R. ................................................................................................................................. 32 IMPLANTACIN. ........................................................................................................... 33 TIMER/COUNTER 0 MODO TEMPORIZADOR. ........................................................ 33 NOTAS DE CONFIGURACIN. ................................................................................... 35 OMBRE DEL PERIFRICO: ADC- CO VERTIDOR A ALGICO DIGITAL. 37 DESCRIPCIN GENERAL. ........................................................................................... 37 DISPONIBLE EN ............................................................................................................ 37 APLICACIONES ............................................................................................................. 37 REGISTROS INVOLUCRADOS .................................................................................... 37 SECUENCIA DE CONFIGURACIN ADC. ................................................................. 39 I.S.R. ................................................................................................................................. 40 IMPLANTACION ............................................................................................................ 41 OMBRE DEL PERIFRICO: COMPARADOR A ALGICO............................... 45 DESCRIPCIN GENERAL. ........................................................................................... 45 DISPONIBLE EN ............................................................................................................ 45 3

APLICACIONES ............................................................................................................. 45 REGISTROS INVOLUCRADOS .................................................................................... 45 DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. ................... 45 DISPOSITIVO AT90S1200. ........................................................................................ 45 DISPOSITIVO AT90XX2333, AT90XX4433. ........................................................... 45 SECUENCIA DE CONFIGURACIN COMPARADOR ANALGICO. .................... 47 I.S.R. ................................................................................................................................. 48 IMPLANTACION ............................................................................................................ 49 OMBRE DEL PERIFRICO: PERRO GUARDI (WATCHDOG TIMER). ..... 52 DESCRIPCIN GENERAL. .......................................................................................... 52 DISPONIBLE EN ............................................................................................................ 52 APLICACIONES. ............................................................................................................ 52 REGISTROS INVOLUCRADOS. ................................................................................... 52 FUNCIN ........................................................................................................................ 52 SECUENCIA DE CONFIGURACIN WDT. ................................................................ 53 IMPLANTACIN. ........................................................................................................... 54 OMBRE DEL PERIFRICO: SPI - I TERFAZ SERIAL PERIFERICA. ............. 56 DESCRIPCIN GENERAL ............................................................................................ 56 DISPONIBLE EN ............................................................................................................ 56 APLICACIONES ............................................................................................................. 56 REGISTROS INVOLUCRADOS .................................................................................... 56 FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO MAESTRO. ......... 58 FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO ESCLAVO. .......... 59 FASE Y POLARIDAD DE LA SEAL DE RELOJ. ..................................................... 59 SECUENCIA DE CONFIGURACIN SPI. ................................................................... 60 I.S.R. ................................................................................................................................. 60 IMPLANTACION ............................................................................................................ 61 OMBRE DEL PERIFRICO: UART - U IVERSAL ASY CHRO OUS RECEIVER A D TRA SMITTER................................................................................. 64 DESCRIPCIN GENERAL. ........................................................................................... 64 DISPONIBLE EN ............................................................................................................ 64 APLICACIONES ............................................................................................................. 64 REGISTROS INVOLUCRADOS .................................................................................... 64 RECEPCIN Y TRANSMISIN DE DATOS. .............................................................. 65 SELECCIN DEL BAUD RATE.................................................................................... 66 EJEMPLO NUMERICO. ................................................................................................. 67 SECUENCIA DE CONFIGURACIN UART ............................................................... 68 I.S.R. ................................................................................................................................. 69 IMPLANTACION ............................................................................................................ 69 GLOSARIO......................................................................................................................... 73 BIBLIOGRAFA. ............................................................................................................... 75

TABLAS
Tabla TC1-1. Registros Involucrados con el Timer/Counter1. ............................................ 11 Tabla TC1-2. Bits y funcin de los registros especiales para el Timer/Counter1. ............... 12 Tabla TC1-2. Funcin de los Bits de los registros especiales para el Timer/Counter1. ....... 13 Tabla TC1-3. Funcin de los Registros Especiales de 16 Bits asociados con el Timer/Counter1. ........................................................................................................... 13 Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro TCNT1 .......................................................................................................................... 14 Tabla TC1-5 Vector de Interrupcin para Timer/Counter1 Overflow. ............................... 15 Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. ................................................... 15 Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B. .................................................. 15 Tabla TC1-8 Vector de Interrupcin para el evento de captura del Timer/Counter1........... 16 Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin OC1A. ........................................................................................................................... 17 Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin OC1B. ........................................................................................................................... 17 Tabla TC1-11. Nmero de pin correspondiente a OC1A y OC1B. ...................................... 18 Tabla TC1-12 Vector de Interrupcin para el evento de comparacin de igualdad del Timer/Counter1. ........................................................................................................... 19 Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o B). .................................................................................................................................. 20 Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. ...................... 20 Tabla TC1-15. Frecuencia de la Seal PWM, Valores mximos de TCNT1, y Resolucin. T1 es la frecuencia a la que se incrementa TCNT1. .................................................................. 21 Tabla TC0-1. Registros involucrados con el Timer/Counter 0. ........................................... 29 Tabla TC0-2. Bits y funcin de los registros especiales para el Timer/Counter 0. .............. 30 TABLA TC0-3. Origen de la seal de reloj y pre escalamiento. ......................................... 31 Tabla TC0-4. Localizacin de pin T0 para la familia AT90X. ............................................ 31 Tabla TC0-5. Vector de interrupcin para Timer/Counter 0 ................................................ 33 Tabla ADC-1A. Registros Involucrados con ADC .............................................................. 37 Tabla ADC-1B. Registros Involucrados con ADC. ............................................................. 37 Tabla ADC-1C. Registros Involucrados con ADC. ............................................................. 37 Tabla ADC-2. Bits de los registros especiales utilizados para el ADC. ............................... 38 Tabla ADC-3. Seleccin canal de entrada con los bits MUX2, MUX1 y MUX0 del registro ADMUX. ...................................................................................................................... 38 Tabla ADC-4. Localizacin de las entradas para el ADC en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 39 Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la seleccin de la seal AD Clock. ............................................................................................................ 39 Tabla ADC-6. Vectores de interrupcin para el ADC. ........................................................ 40 Tabla CA-1A. Registros Involucrados con el Comparador Analgico. .............................. 45 Tabla CA-1B. Registros Involucrados con el Comparador Analgico. ............................... 45 Tabla CA-1C. Registros Involucrados con el Comparador Analgico. ............................... 45 Tabla CA-2. Bits de los registros especiales utilizados para el comparador analgico. ..... 46

Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generacin de interrupcin del Comparador Analgico. .................................................................... 47 Tabla CA-4. Localizacin de los pines AIN0 y AIN1 en la familia AVR. EMPAQUETADO DIP). .............................................................................................. 47 Tabla CA-5. Vectores de interrupcin para el comprador analgico. .................................. 48 Tabla WDT-1A. Registros involucrados. ............................................................................. 52 Tabla WDT-1B. Registros involucrados. ............................................................................. 52 Tabla WDT-2. Origen de la seal de reloj y pre escalamiento para el perro guardin. ....... 53 Tabla SPI-1A. Registros Involucrados con SPI ................................................................... 56 Tabla SPI-1B. Registros Involucrados con SPI. ................................................................... 56 Tabla SPI-1C. Registros Involucrados con SPI. ................................................................... 56 Tabla SPI-2. Bits de los registros especiales utilizados para el SPI ..................................... 57 Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la seal de Clock. .............................................................................................................. 57 Tabla SPI-4. Localizacin de los pines MISO, MOSI, SCK y SS en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 58 Figura SPI-1. Efecto del bit CPHA sobre la seal SCK. ...................................................... 59 Tabla SPI-5. Vectores de interrupcin para el SPI. .............................................................. 61 Tabla UART-1. Registros Involucrados con UART ............................................................ 64 Tabla UART-2. Bits de los registros especiales utilizados UART. ..................................... 65 Tabla UART-3. Localizacin de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP).............................................................................................. 66 Tabla UART-4. Valores ms comunes de Baud Rate. ......................................................... 67 Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. .............................. 68 Tabla UART-6. Vectores de interrupcin para UART........................................................ 69

I TRODUCCI Un perifrico es un circuito electrnico especial incluido en un microcontrolador, que realiza una funcin o tarea especfica. Los perifricos de un microcontrolador permiten ahorro de espacio y dinero en muchas aplicaciones electrnicas. Este libro muestra de una manera clara y concisa, la forma de configurar todos los perifricos incluidos en los microcontroladores de la familia AVR de ATMEL(1). No se pretende que este trabajo sea un sustituto de las hojas de especificaciones proporcionadas por ATMEL, sino ms bien, se espera que sirva como una herramienta de consulta para aquellas personas que ya utilizan la familia AVR, y como una gua para aquellos que comienzan a estudiar o a realizar proyectos con microcontroladores. Cada captulo del libro es dedicado completamente a un perifrico en especifico. Se incluye en cada uno de los captulos las secciones siguientes: DESCRIPCI GE ERAL. En esta seccin se describe el funcionamiento general del perifrico. DISPO IBLE E . Se muestran los microcontroladores en los que esta incluido cada perifrico. APLICACIO ES. Son mencionadas algunas aplicaciones donde puede ser utilizado. REGISTROS I VOLUCRADOS. Se describe el efecto de cada bit de los registros especiales involucrados con cada perifrico. SECUE CIA DE CO FIGURACI . En esta seccin de cada capitulo se explica paso a paso cmo configurar un perifrico. Si el lector ya ha tenido contacto con microcontroladores, puede ir directamente a esta seccin y a la seccin IMPLANTACIN sin problema alguno. I.S.R. Se incluyen los vectores y las direcciones de interrupcin, as como una descripcin de las condiciones que hacen que se genere cada interrupcin. IMPLA TACI . Cada captulo del libro incluye el cdigo fuente completo para configurar un perifrico y dejarlo funcionando correctamente. Se implantan todos los pasos descritos en la seccin SECUE CIA DE CO FIGURACI . El cdigo esta escrito en lenguaje ensamblador y totalmente comentado. Si el lector programa en otro lenguaje diferente a ensamblador, puede tomar como referencia el cdigo fuente proporcionado en esta obra.
Los microcontroladores AVR de ATMEL que se tratan en este libro son los siguientes: AT90S1200, AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414, AT90xS4434, AT90xS8535, AT90xS8534.
(1)

OMBRE DEL PERIFRICO: TIMER/COU TER 1. DESCRIPCI GE ERAL. El Timer/Counter1 es un perifrico bastante flexible, con l se puede medir intervalos de tiempo, contar pulsos externos y generar seales PWM entre otras cosas. Los modos de funcionamiento para este perifrico son los siguientes: MODO TEMPORIZADOR. Genera interrupciones cada vez que un contador interno de 16 bits se desborda. La seal de reloj para el registro contador interno se deriva del oscilador principal del microcontrolador. MODO CO TADOR. Parecido al modo temporizador, pero la seal de reloj para el registro contador integrado es externa, proveniente del pin T1. MODO CAPTURA. Cada vez que se produce un flanco previamente configurado, en la termina ICP del dispositivo, el contenido del contador es almacenado a un registro especial de solo lectura, esto puede generar a dems una interrupcin. MODO COMPARACI DE IGUALDAD. El contenido del contador es comparado continuamente con un valor almacenado en ciertos registros especiales. Cuando el contador es igual en magnitud al valor de los registros especiales, se puede producir una interrupcin de comparacin de igualdad. MODO GE ERACI DE SEALES PWM. Permite generar seales PWM (Modulacin por Ancho de Pulso) con resolucin de 8, 9 o 10 bits. DISPO IBLE E AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535, AT90C8534. APLICACIO ES Generacin de seales PWM. Bases de Tiempo. Medicin de frecuencia. REGISTROS I VOLUCRADOS Este perifrico esta presente en muchos miembros de la familia AT90X, sin embargo en no en todos los dispositivos se tienen las mismas prestaciones de este perifrico. Por ejemplo, en algunos no se puede utilizar al Timer/Counter1 como generador de PWM. La Tabla TC1-1 muestra los registros involucrados y los bits para cada miembro que contiene a este perifrico.

DISPOSITIVO: AT90S8515 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TOIE1 OCIE1A OCIE1B TICIE1 TIMSK TOV1 OCF1A OCF1B ICF1 TIFR PWM11 PWM10 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 CS10 ICNC1 ICES1 CTC1 CS12 CS11 TCCR1B Todos Los Bits TC T1 Todos Los Bits OCR1A Todos Los Bits OCR1B Todos Los Bits ICR1

DISPOSITIVO: AT90S2313 OMBRE B7 B6 REGISTRO TOIE1 OCIE1A TIMSK TOV1 OCF1A TIFR COM1A1 COM1A0 TCCR1A ICNC1 ICES1 TCCR1B Todos Los TC T1 Todos Los OCR1A Todos Los ICR1

B5

B4

B3 TICIE1 ICF1 CTC1

B2

B1

B0

CS12

PWM11 CS11

PWM10 CS10

Bits Bits Bits

DISPOSITIVO: AT90XX2333, AT90XX4433 OMBRE B7 B6 B5 B4 REGISTRO TOIE1 OCIE1 TIMSK TOV1 OCF1 TIFR COM11 COM10 TCCR1A ICNC1 ICES1 TCCR1B Todos Los Bits TC T1 Todos Los Bits OCR1 Todos Los Bits ICR1

B3 TICIE1 ICF1 CTC1

B2

B1

B0

CS12

PWM11 CS11

PWM10 CS10

10

DISPOSITIVO: AT90XX4434, AT90XX8535 OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO TICIE1 OCIE1A OCIE1B TOIE1 TIMSK ICF1 OCF1A OCF1B TOV1 TIFR PWM11 PWM10 TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 ICNC1 ICES1 CTC1 CS12 CS11 CS10 TCCR1B Todos Los Bits TC T1 Todos Los Bits OCR1A Todos Los Bits OCR1B Todos Los Bits ICR1

DISPOSITIVO: AT90C8534 OMBRE B7 B6 REGISTRO TIMSK TIFR TCCR1 Todos Los TC T1

B5

B4

B3

B2 TOIE1 TOV1 CS12

B1

B0

CS11

CS10

Bits

Tabla TC1-1. Registros Involucrados con el Timer/Counter1. Una explicacin detallada de cada bit se encuentra en la Tabla TC1-2. Observe que NO TODOS los dispositivos contienen en sus registros especiales los bits que se muestran en la siguiente tabla.

11

FU CI 1 Habilita interrupcin de sobreflujo del Timer/Counter1. El Sobreflujo o Desborde se produce cuando el registro TCNT1 pasa de $ffff a $0000. OCE1A Timer/Counter1 Output 1 Habilita la interrupcin por comparacin de CompareA Match igualdad ( Contenido de OCR1A igual al de Interrupt Enable. TCNT1). OCIE1B Timer/Counter1 Output 1 Habilita la interrupcin por comparacin de CompareB Match igualdad (Contenido de OCR1B igual al de Interrupt Enable. TCNT1). TICIE1 Timer/Counter1 Capture 1 Habilita la interrupcin de captura. Interrupt Enable TOV1 Timer/Counter1 Overflow flag 1 indica que el registro TCNT1 se ha desbordado, genera interrupcin si stas estn habilitadas 1 indica que los contenidos de los registros TCNT1 y OCR1A son iguales. Esto puede producir una interrupcin de comparacin de igualdad. 1 indica que los contenidos de los registros TCNT1 y OCR1B son iguales. Esto puede producir una interrupcin de comparacin de igualdad. 1 indica que el contenido de TCNT1 ha sido transferido al registro ICR1. Puede producir una interrupcin. 1 Habilita el cancelador de ruido para la captura. Para que un flanco en el pin ICP genere la captura, se toman cuatro muestras, que deben ser todas vlidas de acuerdo al bit ICES1. La frecuencia de muestreo es la del cristal. 0 La captura se genera en el primer flanco indicado por el bit ICES1. 1 Captura en flanco descendente presentado en el pin ICP. 0 Captura en flanco ascendente presentado en el pin ICP. En la captura, el contenido de TCNT1 se transfiere a ICR1.

BIT SIG IFICADO TOIE1 Timer/Counter1 Overflow Interrupt Enable

OCF1A Output Compare Flag 1A.

OCF1A Output Compare Flag 1B.

ICF1

Input Capture Flag.

IC C1 Input Capture1 Noise Canceler.

ICES1

Input Capture Edge Select.

Tabla TC1-2. Bits y funcin de los registros especiales para el Timer/Counter1. Continua... 12

Continuacin... BIT SIG IFICADO FU CI CTC1 Clear Timer/Counter1 on 1 reinicia TCNT1 a $0000 cuando Compare Match. OCR1A se iguala con TCNT1. 0 TCNT1 continua su cuenta normal. Tabla TC1-2. Funcin de los Bits de los registros especiales para el Timer/Counter1. REGISTROS DE 16 BITS. Algunos registros especiales utilizados, tienen una longitud de total 16 bits, y se forman con dos registros de 8 bits cada uno. Para leer cualquiera de los registros mostrados en la Tabla TC1-3, debe primero leerse el byte bajo(L) y luego el alto(H). Para escribir a cualquiera de estos registros, debe primero escribirse el byte alto (H) y luego el bajo (L). TC T1 OCR1A Registro contador de 16 bits, formado por TCNT1H y TCNT1L. Registro de 16 bits, formado por OCR1AH y OCR1AL. Se compara continuamente con TCNT1. Registro de 16 bits, formado por OCR1BH y OCR1BL. Se compara continuamente con TCNT1. Registro de solo lectura de 16 bits, formado por ICR1H y OCR1L. El contenido de TCNT1 se transfiere a este archivo en un evento de captura.

OCR1B

ICR1

Tabla TC1-3. Funcin de los Registros Especiales de 16 Bits asociados con el Timer/Counter1.

MODO TEMPORIZADOR Y MODO CO TADOR. El registro TCNT1 del Timer/Counter1 puede contar pulsos derivados del oscilador principal, o provenientes del exterior. En el primer caso, cuando el registro TCNT1 se incrementa por pulsos generados por el oscilador principal, funciona en modo temporizador. Cuando el perifrico cuenta pulsos externos, presentados en el pin T1 del microcontrolador, trabaja en modo contador. En la Tabla TC1-5 se puede observar el nmero de pin T1 para cada dispositivo. Para configurar el perifrico en cualquiera de estos modos de funcionamiento, es necesario manipular los bits CS12,CS11 y CS10, que se muestran en la Tabla TC1-4.

13

EFECTO CS12 CS11 CS10 0 0 0 El registro TCNT1 no cambia. Timer/Counter1 en STOP 0 0 1 TCNT1 se incrementa a la velocidad de CK. 0 1 0 TCNT1 se incrementa a la velocidad de CK/8. 0 1 1 TCNT1 se incrementa a la velocidad de CK/64. 1 0 0 TCNT1 se incrementa a la velocidad de CK/256. 1 0 1 TCNT1 se incrementa a la velocidad de CK/1024. 1 1 0 TCNT1 se incrementa en cada flanco negativo presentado en el pin T1. 1 1 1 TCNT1 se incrementa en cada flanco positivo presentado en el pin T1. Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro TCNT1

SECUE CIA DE CO FIGURACI MODO TEMPORIZADOR Y CO TADOR. 1. Deshabilitar las interrupciones globales (Recomendado). SREG<I>=0 2. Establecer el valor del registro TCNT1. Lo ms comn es hacer TCNT1 = $0000, pero puede ser cualquier otro valor vlido. Para esto primero escriba el byte alto y luego el byte bajo del registro TCNT1: Primero TCNT1H y luego TCNT1L. 3. Si se desea utilizar la interrupcin de sobre flujo (cuando el registro TCNT1 se desborda), habilite la interrupcin utilizando el bit TOIE1 del registro TIMSK. TIMSK<TOIE1>=1. En caso de no utilizar la interrupcin, ponga este bit en 0. 4. Limpie el bit TOV1 del registro TIFR. 5. Establezca la fuente de la seal de reloj. Ver Tabla TC1-4. 6. Habilite interrupciones globales. SREG<I>=1 I.S.R. Si la interrupcin est habilitada, el CPU salta a la direccin vector de interrupcin de este perifrico cada vez que el registro TCNT1 tiene el valor $FFFF -65535 en decimal- e intenta incrementar su valor (se desborda). Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin del vector de interrupcin para re direccionar a la posicin de memoria donde se encuentra realmente la ISR. En la ISR puede (y quiz hasta deba) reiniciar el registro TCNT1 con un valor apropiado. Observe entre mayor sea el valor de TCNT1 la interrupcin siguiente se producir en un tiempo menor.

14

DISPOSITIVO VECTOR DIRECCIO PI T1 7 $006 2 (PDIP) AT90S4414 7 $006 2 AT90S8515 6 $005 9 AT90S2313 6 $005 11 AT90S2333 6 $005 11 AT90LS2333 6 $005 11 AT90S4433 6 $005 11 AT90LS4433 9 $008 2 (PDIP) AT90S4434 9 $008 2 (PDIP) AT90LS4434 9 $008 2 (PDIP) AT90S8535 9 $008 2 (PDIP) AT90LS8535 4 $003 AT90C8534 Tabla TC1-5 Vector de Interrupcin para Timer/Counter1 Overflow. MODO CAPTURA En este modo de operacin, el contenido del registro TCNT1 es almacenado en ICR1 cuando un flanco ascendente o descendente se presenta en el pin ICP del dispositivo. Llamaremos disparo a cualquiera de estos flancos que provocan la captura. Para evitar disparos falsos, el dispositivo cuenta con un cancelador de ruido. Si el cancelador se habilita, entonces al producirse un disparo se toman cuatro muestras en el pin ICP del dispositivo antes de proceder a la captura. Las muestras son tomadas a la frecuencia del oscilador principal y si todas ellas coinciden se efecta la captura. Cuando las cuatro muestras no coinciden se considera un disparo falso y la captura no se realiza. En el caso de que el cancelador de ruido se encuentre deshabilitado la captura se realiza inmediatamente al presentarse un disparo. Para seleccionar el flanco de captura se utiliza el bit ICES1 del registro TCCR1B. Esto se muestra en la Tabla TC1-6. BIT Evento de Captura Disparado por ICES1 0 Flanco Descendente en el pin ICP 1 Flanco Ascendente en el pin ICP. Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. El bit ICNC1 del registro TCCR1B permite habilitar o desactivar el cancelador de ruido. Vea la Tabla TC1-7. BIT CA CELADOR DE IC C1 RUIDO 0 Deshabilitado 1 Habilitado Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B.

15

SECUE CIA DE CO FIGURACI MODO CAPTURA. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> =0 2 Habilite o Deshabilite el cancelador de ruido. TCCR1B < ICNC1> =0 Deshabilitado. TCCR1B < ICNC1> =1 Habilitado. 3 Programe el flanco de captura. TCCR1B < ICES1> =0 Descendente. TCCR1B < ICES1> =1 Ascendente. 4 Si requiere atender la interrupcin de captura (habilitarla), active el bit TICIE1 del registro TIMSK. TIMSK<TICIE1>=1. En caso de no necesitar atender la interrupcin ponga este bit en cero. Si la interrupcin es habilitada, cada vez que se produzca una captura el CPU saltar hacia el vector de interrupcin correspondiente. 5 Establezca el valor del registro TCNT1. 6 Establezca la fuente de la seal de reloj. Ver Tabla TC1-4 7 Habilite interrupciones globales. SREG<I>=1 I.S.R. Si las interrupciones globales y la interrupcin del modo de captura estn habilitadas, el CPU saltar a la direccin vector de interrupcin correspondiente cada vez que se presente el flanco predeterminado en el pin ICP del dispositivo. El valor actual del registro TCNT1 es capturado en el registro especial de solo lectura ICR1. Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin del vector de interrupcin para re direccionar a la direccin de memoria donde se encuentra realmente la ISR. PI ICP (PDIP) $003 31 AT90S4414 4 $003 31 AT90S8515 4 $003 11 AT90S2313 4 $003 14 AT90S2333 4 $003 14 AT90LS2333 4 $003 14 AT90S4433 4 $003 14 AT90LS4433 4 $005 20 AT90S4434 6 $005 20 AT90LS4434 6 $005 20 AT90S8535 6 $005 20 AT90LS8535 6 AT90C8534 Tabla TC1-8 Vector de Interrupcin para el evento de captura del Timer/Counter1. Por ltimo, recuerde que para leer el registro ICR1 debe primero acceder al byte bajo (ICR1L) y luego al alto (ICR1H). DISPOSITIVO VECTOR DIRECCIO

16

MODO COMPARADOR DE IGUALDAD. En modo comparador de igualdad el Timer/Counter1 utiliza los registros TCCR1A, OCR1A y TCNT1. Estos ltimos dos registros son comparados continuamente. Cuando el contenido del archivo TCNT1 es idntico al del registro OCR1A, el pin OC1A del microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-9, segn el valor de los bits COM1A1 y COM1A0. COM1A0 EFECTO 0 Desconecta el perifrico del pin OC1A. (Sin efecto sobre el pin). 0 1 Invierte el estado del pin OC1A 1 0 Pone en 0 el pin OC1A 1 1 Pone en1 el pin OC1A Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin OC1A. Algunos dispositivos de la familia AVR, contienen los bits COM1B1 y COM1B0 en el registro TCCR1A. Cuando el contenido del archivo TCNT1 es idntico al del registro OCR1B, el pin OC1B del microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-10, segn el valor de los bits COM1B1 y COM1B0. COM1B0 EFECTO 0 Desconecta el perifrico del pin OC1B. (Sin efecto sobre el pin). 0 1 Invierte el estado del pin OC1B 1 0 Pone en 0 el pin OC1B 1 1 Pone en1 el pin OC1B Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin OC1B. En la Tabla TC1-11 se muestra el nmero de pin OC1A y OC1B para cada dispositivo. COM1B1 0 COM1A1 0

17

DISPOSITIVO OC1A OC1B AT90S2313 15 AT90S8515 15 29 AT90S2333 15 AT90S4414 15 29 AT90S4434 19 18 AT90LS4434 19 18 AT90S8535 19 18 AT90LS8535 19 18 AT90C8534 Tabla TC1-11. Nmero de pin correspondiente a OC1A y OC1B. SECUE CIA DE CO FIGURACI MODO COMPARADOR DE IGUALDAD. 1 2 3 4 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> =0 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a OCR1AL). Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a OCR1BL). Si requiere atender la interrupcin de comparacin de igualdad (habilitarla) para el registro OCR1A, active el bit OCIE1A del registro TIMSK. TIMSK< OCIE1A >=1. En caso de no necesitar atender la interrupcin ponga este bit en cero. Si requiere atender la interrupcin de comparacin de igualdad (habilitarla) para el registro OCR1B, active el bit OCIE1B del registro TIMSK. TIMSK< OCIE1B >=1. En caso de no necesitar atender la interrupcin ponga este bit en cero. Seleccione la fuente de la seal de reloj para el registro TCNT1. Ver Tabla TC1-4. Habilite interrupciones globales. SREG<I>=1

6 7

I.S.R. Si las interrupciones globales y la interrupcin del modo de comparacin estn habilitadas, el CPU saltara a la direccin vector de interrupcin correspondiente cada vez que el valor actual del registro TCNT1 sea idntico al valor del registro OCR1A o al de OCR1B. Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin del vector de interrupcin para re direccionar a la direccin de memoria donde se encuentra realmente la ISR.

DISPOSITIVO

VECTOR COMPARACI

DIRECCI COMPARACI

VECTOR COMPARACI

DIRECCI COMPARACI

18

DE IGUALDAD CO OCCR1A

DE IGUALDAD CO OCCR1A

DE IGUALDAD CO OCCR1B

DE IGUALDAD CO OCCR1B

5 $004 6 $005 AT90S4414 5 $004 6 $005 AT90S8515 5 $004 AT90S2313 5 $004 AT90S2333 5 $004 AT90LS2333 5 $004 AT90S4433 5 $004 AT90LS4433 7 $006 8 $007 AT90S4434 7 $006 8 $007 AT90LS4434 7 $006 8 $007 AT90S8535 7 $006 8 $007 AT90LS8535 AT90C8534 Tabla TC1-12 Vector de Interrupcin para el evento de comparacin de igualdad del Timer/Counter1.

MODO GE ERADOR DE SEALES PWM (MODULACI PULSO)

POR A CHO DE

Los microcontroladores de la familia AVR contienen los circuitos necesarios para generar seales PWM. El archivo TCNT1, en este modo de operacin se comporta como un contador cclico ascendente y descendente. Primero TCNT1 comienza su cuenta ascendente desde $0000 hasta llegar a un VALOR MXIMO, y despus desciende hacia cero. Una vez en cero comienza nuevamente el ciclo. Los 10 bits menos significativos del registro TCNT1 son comparados continuamente con los de los 10 bits menos significativos de los registros OCR1A y OCR1B. Cuando se igualan los 10 bits de estos registros, los pines OC1A o OC1B realizan una de las acciones que se muestra en la Tabla TC1-13. El valor que contenga el registro OCR1A o OCR1B determinar el ciclo til de la seal PWM.

19

COM1x1 0 0 1

COM1x0 EFECTO SOBRE EL PI OC1x 0 Sin efecto 1 Sin efecto 0 Pasa a 0 Cuando los 10 bits menos significativos de TCNT1 (en su cuenta ascendente) y los de OCR1A de igualan TCNT1. Pasa a 1 Cuando los 10 bits menos significativos de TCNT1 (en su cuenta descendente) y los de OCR1A de igualan. 1 1 PWM invertido. Pasa a 1 Cuando los 10 bits menos significativos de TCNT1 (en su cuenta ascendente) y los de OCR1A de igualan TCNT1. Pasa a 0 Cuando los 10 bits menos significativos de TCNT1 (en su cuenta descendente) y los de OCR1A de igualan. Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede
ser A o B).

La Tabla TC1-11 muestra el nmero de pin correspondiente para cada dispositivo de la familia AVR. La resolucin de la seal PWM puede ser de 8, 9 o 10 bits, segn se configure en los bits PWM11 y PWM10 del registro TCCR1A. La Tabla TC1-14 muestra las posibles combinaciones. EFECTO PWM11 PWM10 0 0 PWM deshabilitado. 0 1 PWM de 8 bits. 1 0 PWM de 9 bits. 1 1 PWM de 10 bits. Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. El VALOR MXIMO al que llega el registro TCNT1 est en funcin de la resolucin de la seal PWM. La Tabla TC1-15 muestra los valores mximos de TCNT1, la frecuencia y la resolucin de la seal PWM

20

FRECUE CIA DE LA SEAL PWM f


1

MXIMO VALOR RESOLUCI DE (BITS) TC T1

255 8 510 f 1 511 9 1022 f 1 1023 10 2046 Tabla TC1-15. Frecuencia de la Seal PWM, Valores mximos de TCNT1, y Resolucin. T1 es la frecuencia a la que se incrementa TCNT1. SECUE CIA DE CO FIGURACI MODO PWM. 1 2 3 4 5 6 7
Deshabilite Interrupciones Globales. (Recomendado pero no necesario). SREG<I> =0 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a OCR1AL). Este valor determina el ciclo til de la seal PWM en el pin OC1A. Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a OCR1BL). Este valor determina el ciclo til de la seal PWM en el pin OC1B Seleccione el modo normal o invertido de seal PWM. Ver Tabla TC1-13. Seleccione la resolucin de la seal PWM. Ver Tabla TC1-14. Seleccione la fuente de la seal de reloj para el registro TCNT1. Ver Tabla TC1-4. Habilite interrupciones globales. SREG<I>=1

I.S.R. En modo PWM el perifrico Timer/Counter1 genera la interrupcin de sobre flujo normal como en el modo Temporizador.

21

IMPLA TACI . La secuencia de configuracin, de los registros especiales, se muestra programada en lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los ejemplos de implantacin como referencia. TIMER/COU TER 1 MODO TEMPORIZADOR. En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER1 del microcontrolador para que incremente el registro TCNT1 en cada pulso de reloj. El PORTB se incrementa en cada interrupcin.
;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin ;donde se encuentra RESET .org $006 ;vector de TIMER/COUNTER1 Sobreflujo rjmp TIMER1_ISR ;redireccionado a TIMER1_ISR ;********************************************** ;Esta ISR se ejecuta cada vez que TCNT1 se desborda. TIMER1_ISR: ;ISR del TIMER/COUNTER1 Sobreflujo inc r18 ;incrementa registro r18 out PORTB,r18 ;y saca el valor por el PORTB ldi r17,0 ; out TCNT1H,R17 ;pone valor de TCNT1 en 0. out TCNT1L,R17 ;pone valor de TCNT1 en 0. reti ;regresa de interrupcin. ;********************************************** RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO1 cli ;SREG<I>=0.int. deshabilitadas.

22

;PASO2 ldi out out ;PASO3 in ori out 4 in ori out 5 ldi out 6 sei nop nop nop loop r17,TIMSK ;Habilita interrupcin r17,(1<<TOIE1) ;del TIMER/COUNTER1 TIMSK,r17 ;TIMSK<TOIE1>=1 r17,TIFR ;Limpia posible r17,(1<<TOV1) ;interrupcin anterior TIFR,r17 ;TIFR<TOV1>=0 ;Selecciona el origen de la r17,1 ;seal de reloj TCCR1B,r17 ;Se incrementar TCNT1 en cada pulso de ;SREG<7>=1. int. habilitadas ;Espera hasta que ;se generen interrupciones. r17,0 TCNT1H,R17 TCNT1L,R17 ;Inicia TCNT1 con valor 0 ;Primero escribir en TCNT1H ;despues escribir en TCNT1L

;PASO

;PASO

RELOJ.

;PASO loop:

rjmp

;loop infinito

TIMER/COU TER 1 MODO CAPTURA. En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo de Captura. Cuando se presenta un flanco descendente en el pin ICP del microcontrolador, se exhibe en el PORTB, el valor de TCNT1H. TCNT1 se incrementa en cada ciclo del oscilador principal.
;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin ;donde se encuentra RESET .org $003 ;vector de TIMER/COUNTER1 Captura rjmp ISR_CAPT ;redireccionado a TIMER1_ISR_CAPT ;**********************************************

23

;Esta ISR se jecuta cada vez que se produce un disparo (Flanco Negativo) ISR_CAPT: ;ISR del TIMER/COUNTER1 CAPTURA in r18,ICR1L ;Lee el valor capturado de TCNT1 in r18,ICR1H ;Primero byte Bajo y luego el Byte Alto. out PORTB,r18 ;Saca el valor de TCNT1H por el PORTB reti ;regresa de interrupcin. ;********************************************** RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 in r17,TCCR1B ;Habilita ori r17,(1<<ICNC1) ;Cancelador out TCCR1B,r17 ;de Ruido ;PASO 3 in r17,TCCR1B ;Establece Disparo ldi r18,(1<<ICES1) ;con flanco com r18 ;Descendente and r17,r18 out TCCR1B,r17 ;En el pin ICP. ;PASO 4 in r17,TIMSK ;Habilita interrupcin ori r17,(1<<TICIE1) ;del Captura del TIMER/COUNTER1 out TIMSK,r17 ;PASO 5 clr r17 out TCNT1H,r17 ;Establece el valor de TCNT1 out TCNT1L,r17 ;PASO ;PASO 6 ldi r17,1 ;Se incrementa TCNT1 en cada ;ciclo del oscilador principal out TCCR1B,r17 ; ;PASO 7 sei ;SREG<7>=1. int. habilitadas loop: nop ;Espera hasta que ;se generen interrupciones.

24

rjmp

nop nop loop

;loop infinito

TIMER/COU TER 1 MODO GE ERADOR DE SEALES PWM. En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo Generador de seales PWM.
;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin ;donde se encuentra RESET ;********************************************** RESET: ;inicio de programa. ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 ldi r17,0x1 ;Establece valor de OCR1A. out OCR1AH,R17 ;Entre mayor sea ldi R17,0xff ;el valor, mayor es out OCR1AL,R17 ;el ciclo util. Mximo Valor 0x3FF ;PASO 3 ldi r17,0x02 ;Establece valor de OCR1B. out OCR1BH,R17 ;Entre mayor sea ldi R17,0xcc ;el valor, mayor es out OCR1BL,R17 ;el ciclo util. ;PASO 4 in r17,TCCR1A ;Modo PWM normal ori r17,(0xA0) ;(no invertido) out TCCR1A,r17 ;COM1x1=1 COM1x0=0.

25

;PASO 5 in ori out ;PASO 6 ldi out ;PASO 7 sei loop: nop nop nop rjmp loop

r17,TCCR1A r17,(0x03) TCCR1A,r17 r17,1 TCCR1B,r17

;Selecciona la resolucin. ;10 Bits.

;seal de reloj ;Se incrementar TCNT1 en cada pulso de

RELOJ.

;SREG<7>=1. int. habilitadas ;Por los pines OC1A y OC1B ;se generan seales PWM

;loop infinito

TIMER/COU TER 1 MODO COMPARADOR DE IGUALDAD. En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo Comparador de Igualdad.
;********************************************** .include "8515def.inc" ;archivo que contiene los nombres y direcciones ;de registros especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;********************************************** .org $000 ;vector de inicio. rjmp RESET ;redireccionado a la direccin ;donde se encuentra RESET .org OC1Aaddr ;($004)Redirecciona a rjmp CompA ;CompA. .org OC1Baddr ;($005) Redirecciona a rjmp CompB ;CompB ;********************************************** CompA: ;Escriba aqu su codigo. reti ;********************************************** CompB: ;Escriba aqu su codigo. reti

26

;********************************************** RESET: ;inicio de programa. ;********************************************** ldi r16,high(RAMEND) ;Establece la direccion de out SPH,r16 ;la Pila. ldi r16,low(RAMEND) out SPL,r16 ;********************************************** ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 ldi r17,0x00 ;Establece valor de OCR1A. out OCR1AH,R17 ; ldi R17,0xff ; out OCR1AL,R17 ; ;PASO 3 ldi r17,0x02 ;Establece valor de OCR1B. out OCR1BH,R17 ; ldi R17,0x00 ; out OCR1BL,R17 ; ;PASO 4 in r17,TIMSK ;Habilita Interrupcin ori r17,(1<<OCIE1A) ;de Comparacion de Igualdad out TIMSK,r17 ;PASO 5 in r17,TIMSK ;Habilita Interrupcin ori r17,(1<<OCIE1B) ;de Comparacion de Igualdad out TIMSK,r17 ;PASO 6 ldi r17,1 ;seal de reloj out TCCR1B,r17 ;Se incrementar TCNT1 en cada pulso de ;PASO 7 sei loop: nop nop nop loop

RELOJ.

;SREG<7>=1. int. habilitadas ;Por los pines OC1A y OC1B ;se generan seales PWM

rjmp

;loop infinito

27

28

OMBRE DEL PERIFRICO: TIMER/COU TER0. FU CIO AMIE TO GE ERAL Un temporizador (Timer) es un perifrico que se encarga generar un evento (interrupcin) cada vez que ha pasado cierto intervalo de tiempo. La interrupcin de un temporizador se genera cuando el circuito contador del mismo, sufre un sobre flujo, es decir, cuando se desborda. La velocidad a la que un temporizador genera interrupciones depende del origen de la seal de reloj que alimente al mismo. En la familia de microcontroladores AVR, dicha seal de reloj puede provenir del exterior o ser generada internamente. Cuando la seal es interna, la velocidad del temporizador depende de la frecuencia del cristal colocado al microcontrolador. Cuando es externa, depender de la velocidad de los pulsos que se introduzcan por alguna terminal especfica del dispositivo. Un temporizador cuya seal de reloj es externa, se dice que est configurado en modo contador (Counter). DISPO IBLE E AT90S1200, T90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, T90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535, AT90C8534. APLICACIO ES Medicin de intervalos de tiempo. Generacin de bases de Tiempo. Tacmetro digital. REGISTROS I VOLUCRADOS. DISPOSITIVO: AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515.
OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL REGISTRO. TCCR0 CS02 CS01 CS00 TCNT0 MSB LSB TIMSK TOIE0 TIFR TOV0

DISPOSITIVO: AT90XX4434, AT90XX8535, AT90C8534.


OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL REGISTRO. TCCR0 CS02 CS01 CS00 TCNT0 MSB LSB TIMSK TOIE0 TIFR TOV0

Tabla TC0-1. Registros involucrados con el Timer/Counter 0.

29

El significado de cada bit y su funcin se puede observar en la Tabla TC0-2.

BIT CS02 a CS00

MSB a LSB

TOIE0

TOV0

significado FU CI Clock Select0 bits 2,1 Selecciona y0 el origen y el pre escalamiento de la seal de RELOJ para el Timer/Counter0. Ver Tabla TC0-3. Bit ms significativo a bit menos significativo del contador del Timer/Counter0. Timer/Counter0 TOIE0=1 Habilita interrupcin del Overflow Interrupt Timer/Counter0. Enable TOIE0=0 Deshabilita Interrupcin del Timer/Counter0. TOV0 se pone en 1 cuando el Timer/Counter0 produce la interrupcin de sobreflujo.

Tabla TC0-2. Bits y funcin de los registros especiales para el Timer/Counter 0. El Timer/Counter 0 tiene un registro especial de 8 bits llamado TCNT0, que tiene la funcin de contar de manera ascendente. Por ser un registro de 8 bits, cuando llega a su mximo valor 255 ($ff) e intenta incrementarse se desborda, y esto puede producir una interrupcin, si esta ltima se encuentra habilitada. Los bits CS02, CS01 y CS00 determinan la velocidad a la que el registro TCNT0 incrementa su valor. Estos bits se encuentran localizados en el registro TCCR0. Los posibles valores de estos bits, y el efecto que producen en la velocidad de conteo de TCNT0, se muestran en la Tabla TC0-3.

30

CS02

CS01

0 0 0 0 1 1 1

0 0 1 1 0 0 1

CS00 ORIGE Y PREESCALAMIE TO DE LA SEAL DE RELOJ. 0 DETENID, NO CUENTA. 1 1/fosc (ms rpido) 0 8/osc 1 64/osc 0 256/fosc 1 1024/fosc (ms lento) Terminal T0, 0 flanco descendente. (modo contador). Terminal T0, 1 flanco ascendente. (modo contador).

TABLA TC0-3. Origen de la seal de reloj y pre escalamiento. Cuando este perifrico se configura en modo contador, se le introducen pulsos por el pin T0, localizado en cada dispositivo como se muestra en la Tabla TC0-4. DISPOSITIVO PIN T0 AT90S1200 8 AT90S2313 8 AT90S2323 7 AT90LS2323 7 AT90S2343 7 AT90LS2343 7 AT90S2333 2 AT90LS2333 2 AT90S4433 2 AT90LS4433 3 AT90S4414 1 AT90S8515 1 AT90S4434 1 AT90LS4434 1 AT90S8535 1 AT90LS8535 1 AT90C8534 Tabla TC0-4. Localizacin de pin T0 para la familia AT90X.

31

SECUE CIA DE CO FIGURACI 1.- Ponga SREG<I>=0. (Bit 7 del registro SREG). Deshabilita interrupciones. 2.- Haga TCNT0=0. Inicie contador en $00 o en un valor que necesite. 3.- Haga TIMSK<TOIE0>=1 Habilita interrupcin del TIMER/COUNTER 0, Si requiere interrupciones. En caso contrario ponga ese bit en0. 4.- Haga TIFR<TOV0>=1". Limpia posible interrupcin falsa. 5.- Ponga SREG<I>=1. (Bit 7 del registro SREG). Habilita interrupciones. 6.- Seleccione el origen de la seal de RELOJ para el TIMER/COUNTER0. Ver Tabla TC0-3. Ejemplo: TCCR0 =0 hace que este perifrico se pare, es decir, TCNT0 no cuenta y por lo tanto el TIMER/COUNTER0 no genera interrupciones. TCCR0=1 hace que el TCNT0 se incremente con cada pulso de reloj, es la forma ms rpida en la que este perifrico genera interrupciones. TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma ms lenta en la que este perifrico genera interrupciones (con RELOJ interno). TCCR0=6 hace que el TCNT0 se incremente con cada flanco negativo (cuando la seal pasa de 1 a 0) aplicado en la terminal T0 del microcontrolador. I.S.R. El CPU salta a la direccin vector de interrupcin de este perifrico cada vez que el registro TCNT0 tiene el valor $FF (255 en decimal) e intenta incrementar su valor (se desborda). Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin del vector de interrupcin para re direccionar a la posicin de memoria donde se encuentra realmente la ISR del TIMER/COUNTER0.
En la ISR puede (y quiz hasta deba) reiniciar el registro TCNT0 con un valor apropiado, generalmente se pone en 0, aunque puede ser otro valor. Observe entre mayor sea el valor de TCNT0 la interrupcin siguiente se producir en un tiempo menor. No es necesario que ponga el bit 7 del archivo TIFR en 0 cada vez que se produzca una interrupcin, al atenderse la ISR el hardware lo realiza.

32

DISPOSITIVO DIRECCI $002 AT90S1200 $006 AT90S2313 $002 AT90S2323 $002 AT90LS2323 $002 AT90S2343 $002 AT90LS2343 $006 AT90S2333 $006 AT90LS2333 $006 AT90S4433 $006 AT90LS4433 $007 AT90S4414 $007 AT90S8515

VECTOR 4 7 3 3 3 3 7 7 7 7 8 8

Tabla TC0-5. Vector de interrupcin para Timer/Counter 0

IMPLA TACI . La secuencia de configuracin, de los registros especiales, se muestra programada en lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los ejemplos de implantacin como referencia. TIMER/COU TER 0 MODO TEMPORIZADOR. En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER 0 del microcontrolador para que incremente el registro TCNT0 en cada pulso de reloj. Si el dispositivo tiene colocado un cristal de 4 MHz, las interrupciones se generarn cada 65 micro segundos aproximadamente.
;Timer/Counter0 Modo Temporizador ;***************************************************************** .include "1200def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;***************************************************************** .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se ;encuentra RESET .org $002 ;vector de TIMER/COUNTER0 rjmp TIMER0_ISR ;redireccionado a TIMER_ISR ;***************************************************************** ;Esta ISR se produce cada vez que TCNT0 se desborda.

33

TIMER0_ISR: ;ISR del TIMER/COUNTER0 inc r18 ;incrementa registro r18 out PORTB,r18 ;y saca el valor por el PORTB ldi r17,0 ; out TCNT0,R17 ;pone valor de TCNT0 en 0. reti ;regresa de interrupcin. ;************************************************************************ RESET: ;inicio de programa. ldi r17,$ff ;configura PORTB out DDRB,r17 ; como salida ;***************************************************************** ;ldi r16,high(RAMEND) ;Descomente para dispositivos ;con RAM mayor 256 Bytes ; out SPH,r16 ; ldi r16,low(RAMEND) ; out SPL,r16 ;***************************************************************** ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0 ;Inicia TCNT0 con valor 0 out TCNT0,R17 ; ;PASO3 in r17,TIMSK ;Habilita interrupcin ori r17,(1<<TOIE0) ;del TIMER/COUNTER0 out TIMSK,r17 ;TIMSK<TOIE0>=1 ;PASO 4 in r17,TIFR ;Limpia posible ori r17,(1<<TOV0) ;interrupcin anterior out TIFR,r17 ;TIFR<TOV0>=0 ;PASO 5 sei ;SREG<7>=1. int. habilitadas ;Selecciona el origen de la ;PASO 6 ldi r17,1 ;seal de reloj out TCCR0,r17 ;Se incrementar TCNT0 en cada pulso de RELOJ. ;TCCR0=1. (Si se quiere visualizar por el PORTB ;hacer ;TCCR0=5, ;LO MAS LENTO POSIBLE) loop: ;Espera hasta que nop ;se generen interrupciones. nop nop rjmp loop ;loop infinito

34

OTAS DE CO FIGURACI . Para este perifrico los cambios ms importantes en el programa son en el paso 6, es aqu donde se le indica al perifrico el origen de la seal de RELOJ. Consulte TABLA TC0-3 y sustituya el valor que requiera en la lnea de cdigo ldi r17,1 del paso 6.

35

36

OMBRE DEL PERIFRICO: ADC- CO VERTIDOR A ALGICO DIGITAL. DESCRIPCI GE ERAL. Un circuito Convertidor Analgico Digital ADC- es integrado en algunos microcontroladores para procesamiento de seales analgicas. El Convertidor Analgico Digital integrado en los microcontroladores de la familia AVR es tipo aproximacin sucesiva y tienen una resolucin de 10 bits. La frecuencia mxima de muestreo es 15 KSPS (15000 Muestras Por Segundo aproximadamente). Otras caractersticas son las siguientes: 2 LSB, 0.5 LSB INL, Tiempo de conversin 65-260 uS, Cancelador de ruido integrado, rango de entrada Rail to Rail. El ADC puede ser configurado en dos modos de operacin: Modo de una Sola Conversin. Se tiene que iniciar manualmente cada conversin. Modo en Conversin Continua. Las conversiones se realizan de manera repetida automticamente. DISPO IBLE E AT90xS4434, AT90xS8535, AT90xS2333, AT90xS4433. APLICACIO ES Sistemas de adquisicin de seales analgicas, Sistemas de Control Digital, etc. REGISTROS I VOLUCRADOS

OMBRE REGISTRO ADMUX

B7

B6

B5

B4

B3

B2

B1

B0

- MUX2 MUX1 MUX0 Tabla ADC-1A. Registros Involucrados con ADC

OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ADCSR ADE ADSC ADFR ADIF ADIE ADPS2 ADPS1 ADPS0 Tabla ADC-1B. Registros Involucrados con ADC.

OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ADCH ADC9 ADC8 ADCL ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0 Tabla ADC-1C. Registros Involucrados con ADC.

37

El significado de cada bit y su funcin se puede observar en la Tabla ADC-2. BIT SIG IFICADO MUX2 Analog Channel Select MUX1 Analog Channel Select MUX0 Analog Channel Select ADPS0 ADPS1 ADPS2 ADIE
ADC Prescaler Select Bits. ADC Prescaler Select Bits. ADC Prescaler Select Bits. ADC Interrupt Enable

FU CI Ver Tabla ADC-3. Ver Tabla ADC-3. Ver Tabla ADC-3.

Ver Tabla ADC-4 Ver Tabla ADC-4 Ver Tabla ADC-4 1 Habilita la interrupcin de Conversin Completa. Se establece a 1 cuando una ADIF ADC Interrupt Flag Conversin ha terminado. 1 Selecciona Modo en Conversin ADFR ADC Free Run Select Continua. 0 Selecciona Modo de una Sola Conversin. Se debe escribir un 1 en este bit para ADSC ADC Start Conversion iniciar la conversin. ADC Enable 1 Habilita al ADC. ADE Tabla ADC-2. Bits de los registros especiales utilizados para el ADC.

La entrada del ADC tiene un circuito Muestreador Retenedor, que mantiene la seal invariante una vez que ha comenzado la conversin. El nmero de entradas analgicas conectadas al ADC, a travs de un multiplexor analgico vara de un microcontrolador a otro, siendo ocho el nmero mximo. La conversin analgica a digital se realiza sobre un solo canal o entrada analgica seleccionado, para esto se utilizan los bits MUX2, MUX1 y MUX0. La Tabla ADC-3 muestra las posibles combinaciones de estos bits y el canal seleccionado. Recuerde que algunos microcontroladores no tienen disponible los ocho canales de entrada.

MUX2 MUX1

MUX0

CA AL SELECCIO ADO

0 0 0 0 0 0 1 1 0 1 0 2 0 1 1 3 1 0 0 4 1 0 1 5 1 1 0 6 1 1 1 7 Tabla ADC-3. Seleccin canal de entrada con los bits MUX2, MUX1 y MUX0 del registro ADMUX.

38

La Tabla ADC-4 muestra la posicin de las entradas o canales analgicos para cada miembro de la familia AVR. canal de entrada analogico DISPOSITIVO 0 1 2 3 4 5 6 7 40 39 38 37 36 35 34 33 AT90xS4434 (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) 40 39 38 37 36 35 34 33 AT90xS8535 (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) 23 24 25 26 27 28 AT90xS2333 (PC0) (PC1) (PC2) (PC3) (PC4) (PC5) 23 24 25 26 27 28 AT90xS4433 (PC0) (PC1) (PC2) (PC3) (PC4) (PC5) Tabla ADC-4. Localizacin de las entradas para el ADC en la familia AVR. (EMPAQUETADO DIP).
Para realizar las conversiones analgico a digital, el circuito ADC requiere de una seal se reloj (AD Clock) que se deriva del oscilador principal, la frecuencia de la seal AD Clock debe ser mayor a 50Hz y menor a 200KHz. Si se selecciona la frecuencia ms alta, aumentar tambin la velocidad de conversin, pero la precisin disminuir, esto es, a mayor frecuencia, menor precisin. Para establecer la frecuencia de la seal AD Clock se utilizan los bits ADPS2, ADPS1 y ADPS0 del registro ADCSR. La Tabla ADC-5 muestra las frecuencias posibles.

ADPS2 ADPS1 ADPS0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1

Frecuencia

FOSC FOSC FOSC FOSC FOSC FOSC FOSC FOSC

2 2 4 8 16 32 64

128 Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la seleccin de la seal AD Clock.

SECUE CIA DE CO FIGURACI ADC.


39

1.- Deshabilite interrupciones. Recomendado pero no necesario. 2.- Configure como entrada los pines del microcontrolador que utilizar como entradas analgicas. 3.- Seleccione la frecuencia de la seal AD Clock. Ver Tabla ADC-5. 4.- Seleccione el modo de operacin: Modo de una Sola Conversin ADCSR<ADFR>=0 Modo de Conversin Continua ADCSR<ADFR>=1 5.- Si lo requiere, habilite la interrupcin del ADC. Por lo general s se habilita la interrupcin. ADCSR<ADIE>=1 6.- Limpie posible interrupcin falsa del ADC, para esto escriba un 1 en el bit ADIF del registro ADCSR. 7.- Seleccione el canal de entrada analgico deseado. Ver Tabla ADC-3 y Tabla ADC-4. 8.- Habilite el ADC. 9.- Habilite interrupciones globales. 10.- Inicie conversin. ADCSR<ADSC>=1 Para Modo de una Sola Conversin es necesario iniciar cada una despus de que el ADC ha terminado. En Modo de Conversin Continua se ejecuta la correspondiente ISR cada vez que el ADC termina una conversin y automticamente comienza la siguiente. Para reducir el ruido que induce el CPU del microcontrolador, se puede poner en estado de espera pasivo a este ltimo (cancelador de ruido) para esto hay que realizar los siguientes pasos:
1. Configurar al ADC en Modo de una Sola Conversin y habilitar la interrupcin. 2. Entrar a modo de espera (IDLE) 3. Al terminar una conversin el ADC, se ejecutar la ISR.

I.S.R. La Tabla ADC-6 muestra los vectores y direcciones de interrupcin del ADC. La interrupcin sucede cada vez que se termina una conversin analgico a digital. Si programa en ensamblador necesitar redireccionar hacia donde realmente se encuentre la ISR. DISPOSITIVO AT90xS4434 AT90xS8535 AT90xS2333 AT90xS4433 VECTOR 15 15 12 12 DIRECCIO $00E $00E $00B $00B

Tabla ADC-6. Vectores de interrupcin para el ADC.

40

IMPLA TACIO En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en velocidad. El siguiente programa muestra como configurar al ADC en Modo de Conversin Continua.
;CONVERTIDOR ANALOGICO DIGITAL ;Modo Conversin Continua ;************************************************************ .include "4434def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************ .org ADCCaddr ;Vector de ADC conversin terminada rjmp ADC_Fin ;redireccionado. ;************************************************************ ADC_Fin: ;Escriba aqui su codigo in r17,ADCL in r18,ADCH out PORTB,r17 reti RESET: ;inicio de programa. ;************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************ ldi r17,0xff out DDRB,r17 ;Puerto B como salida ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ;PASO2 ldi r17,0x00 ;Configura como entrada Puerto A out DDRA,r17 ;Son las entradas Analgicas ;PASO3 cbi ADCSR,ADPS2 ;Frecuencia de la seal ADC Clock sbi ADCSR,ADPS1 ;es fosc/4 cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0 ;PASO4 sbi ADCSR,ADFR ;Modo Conversin Continua ;PASO5

41

sbi ;PASO6 sbi ;PASO7 cbi cbi cbi ;PASO8 sbi ;PASO9 sei ;PASO10 sbi loop: nop nop loop

ADCSR,ADIE ADCSR,ADIF ADMUX,MUX2 ADMUX,MUX1 ADMUX,MUX0 ADCSR,ADEN

;Habilita Int ADC ;Limpia Posible Interrupcin Falsa ;Selecciona Canal 0 ;Pin 40, PA0

;Habilita ADC ;Habilita Interrupciones Globales

ADCSR,ADSC

;Inicia la primera conversin.

rjmp

;loop infinito

El siguiente programa muestra como configurar al ADC en Modo de una Sola Conversin.
;CONVERTIDOR ANALOGICO DIGITAL

;Modo una Sola Conversin ;************************************************************


.include "4434def.inc" ;archivo que contiene los nombres de ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. registros

;************************************************************
.org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************.org ADCCaddr ;Vector de ADC conversin terminada rjmp ADC_Fin ;redireccionado. ;************************************************************ ADC_Fin: ;Escriba aqui su codigo ldi r17,0xff reti RESET: ;inicio de programa. ;************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16

42

;************************************************************ ldi r17,0xff out DDRB,r17 ;Puerto B como salida ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0x00 ;Configura como entrada Puerto A out DDRA,r17 ;Son las entradas Analgicas ;PASO3 cbi ADCSR,ADPS2 ;Frecuencia de la seal ADC Clock sbi ADCSR,ADPS1 ;es fosc/4 cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0 ;PASO4 cbi ADCSR,ADFR ;Modo Conversin Continua ;PASO5 sbi ADCSR,ADIE ;Habilita Int ADC ;PASO6 sbi ADCSR,ADIF ;Limpia Posible Interrupcin Falsa ;PASO7 cbi ADMUX,MUX2 ;Selecciona Canal 0 cbi ADMUX,MUX1 ;Pin 40, PA0 cbi ADMUX,MUX0 ;PASO8 sbi ADCSR,ADEN ;Habilita ADC ;PASO9 sei ;Habilita Interrupciones Globales ;PASO10 sbi ADCSR,ADSC ;Inicia la primera conversin. loop: nop nop sbrs r17,0 ;espera hasta terminar conversion rjmp loop in r17,ADCL in r18,ADCH out PORTB,r17 ldi r17,0x00 nop rjmp loop ;loop infinito

43

44

OMBRE DEL PERIFRICO: COMPARADOR A ALGICO. DESCRIPCI GE ERAL.


El comparador de voltaje conecta su entrada negativa y positiva a los pines AIN1 y AIN0 del microcontrolador respectivamente. La salida del comparador analgico est conectada directamente al bit ACO del registro ACSR.

DISPO IBLE E AT90S8515, AT90S1200, AT90LS4433.

AT90S2313,

90S2333,AT90LS2333,

AT90S4433,

APLICACIO ES Deteccin picos de seales analgicas. Control de potencia por ngulo de disparo con Tiristores. Conversin analgico a digital. REGISTROS I VOLUCRADOS
DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACD ACO ACI ACIE ACIC ACIS1 ACIS0 ACSR Tabla CA-1A. Registros Involucrados con el Comparador Analgico. DISPOSITIVO AT90S1200. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACD ACO ACI ACIE ACIS1 ACIS0 ACSR Tabla CA-1B. Registros Involucrados con el Comparador Analgico.

DISPOSITIVO AT90XX2333, AT90XX4433. OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO ACD AINBG ACO ACI ACIE ACIC ACIS1 ACIS0 ACSR Tabla CA-1C. Registros Involucrados con el Comparador Analgico.

45

El significado de cada bit y su funcin se puede observar en la Tabla CA-2.

FU CI 1 Apaga al comparador analgico. 0 Enciende comparador analgico. Conectado de manera directa a la ACO salida del comparador analgico. 1 indica que se ha producido una ACI interrupcin debida del comparador analgico . Ver bits ACIS1 y ACIS0. 1 Habilita interrupcin del ACIE Analog Comparator Interrupt Enable. comparador analgico. 1 Hace que la captura del ACIC Analog Comparator Input Capture Enable. Timer/Counter1 sea activada por el comparador analgico. Ver Tabla CA-3. ACIS1 Analog Comparator Interrupt Mode Select. Ver Tabla CA-3. ACIS0 Analog Comparator Interrupt Mode Select. 1 Habilita la referencia interna. En AI BG Analog Comparator BandGap Select este caso un voltaje de 1.22 0.05V se aplica en la entrada positiva (AIN0) del comparador, sustituyendo a la seal proveniente del exterior. 0 La seal proveniente del exterior se aplica a la entrada AIN0 del comparador analgico. Tabla CA-2. Bits de los registros especiales utilizados para el comparador analgico.
La salida del comprador analgico conectada al bit

BIT ACD

SIG IFICADO Analog Comparator Disable. Analog comparator Output. Analog Comparator Interrupt Flag.

ACO del registro ACR- tendr

valor 1 siempre que la seal en el pin AIN0 sea mayor a la de AIN1. En caso contrario la salida ser 0. La interrupcin del comparador analgico se puede producir cuando el bit ACO pasa de 0 a 1 (flanco positivo) o cuando pasa de 1 a 0 (flanco negativo). Los bits ACIS1 y ACIS0 configuran la interrupcin del comparador analgico, como se muestra en la Tabla CA-3.

46

MOTIVO DE GE ERACI DE I TERRUPCI La salida del comparador 0 0 analgico cambia de estado. Reservado. 0 1 La salida del comparador 1 0 analgico produce un flanco negativo. La salida del comparador 1 1 analgico produce un flanco positivo. Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generacin de interrupcin del Comparador Analgico. ACIS1 ACIS0

La localizacin de los pines AIN0 y AIN1 de cada elemento de la familia AVR se muestra en la Tabla CA-4.

AI 0 AI 1 (in +) (in -) PB0 PB1 AT90S1200 (PIN 12) (PIN 13) PB0 PB1 AT90S2313 (PIN 12) (PIN 13) PD6 PD7 AT90XX2333 (PIN 12) (PIN 13) PD6 PD7 AT90XX4433 (PIN 12) (PIN 13) PB 2 PB 3 AT90S8515 (PIN 3) (PIN 4) PB 2 PB 3 AT90XX4414 (PIN 3) (PIN 4) PB 2 PB 3 AT90XX8535 (PIN 3) (PIN 4) Tabla CA-4. Localizacin de los pines AIN0 y AIN1 en la familia AVR. EMPAQUETADO DIP). DISPOSITIVO

SECUE CIA DE CO FIGURACI COMPARADOR A ALGICO. 1 Deshabilite interrupciones globales. SREG<I>=0 2 Deshabilite la interrupcin del comparador analgico (Siempre que cambie la configuracin de este perifrico, lo recomendable es deshabilitar su interrupcin). ACSR<ACIE>=0

47

3 4 5 6 7 8

Configure los pines AIN1 y AIN0 como entradas. Si el dispositivo soporta referencia interna, coloque un 1 o un 0 en el bit AINBG de acuerdo a lo indicado en la Tabla CA-2. Seleccione el evento que generar la interrupcin. Ver Tabla CA-3. Si requiere producir un evento de captura (ver capitulo Timer/Counter1) ponga el bit ACIC en 1. En caso contrario pngalo en 0. Habilite el comparado analgico ACSR<ACD>=1. Si lo requiere, habilite la interrupcin del comparador analgico y las interrupciones globales ACSR<ACIE>=1. SREG<I>=1.

I.S.R. Cuando se produce cualquiera de las situaciones presentadas en la Tabla CA-3, y adems, las interrupciones globales han sido habilitadas, el CPU salta a la direccin mostrada en la Tabla CA-5.
DISPOSITIVO AT90S1200 AT90S2313 AT90S4414 AT90S8515 AT90XX2333 AT90XX4433 AT90XX4434

VECTOR 5 11 13 13 14 14 17

DIRECCIO $003 $00A $00C $00C $00D $00D $010

Tabla CA-5. Vectores de interrupcin para el comprador analgico.

48

IMPLA TACIO En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en velocidad.
El programa siguiente configura al comparador analgico para que genere interrupciones en cada flanco negativo.
;AIN0 y AIN1 se encuentran en el PORTB ;del AT90S8515. Si usa otro dispositivo ;Vea Tabla CA-4. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************************ .org ACIaddr ;vector del Comparador Analogico rjmp CompAn ;redireccionado. ;************************************************************************ CompAn: ;Escriba aqui su codigo reti RESET: ;inicio de programa. ;************************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************************ ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0x80 ;Deshabilita int del out ACSR,r17 ;Comparador Analogico. (ACIE="0") ;PASO3 ldi r17,0x00 ;Configura como entrada los pines out DDRB,r17 ;correspondientes a AIN0 y AIN1 ;Esta linea cambia en otro dispositivo. ;PASO4 ;// in r17,ACSR ;EL AT90S8515 no tiene circuito de ;// ori r17,(1<<AINBG) ;referencia interna ;// out ACSR,r17 ;

49

;PASO5 in ori out ;PASO6 ; in ; ori ; out ;PASO7 in andi out ;PASO8 in ori out sei loop: nop nop nop rjmp loop r17,ACSR r17,0x02 ACSR,r17 ;Se generara la interrupcin en cada ;flanco descendente de la salida del ;Comparador Analogico (bit ACO)

r17,ACSR r17,(1<<ACIC) ;Si desa habilitar el evento de captura ACSR,r17 ;descomente esto r17,ACSR r17,0x7f ACSR,r17 ;Habilita al comparador Analogico ;ACD="0"

r17,ACSR ;Habilita int del Comparador r17,(1<<ACIE) ;Analogico ACSR,r17

;loop infinito

50

51

OMBRE DEL PERIFRICO: PERRO GUARDI

(WATCHDOG TIMER).

DESCRIPCI GE ERAL. Este perifrico permite que el microcontrolador se reinicie automticamente mediante un circuito contador, que se incrementa continuamente a una frecuencia de 1MHz aproximadamente. Para evitar que el microcontrolador se reinicie, hay que restablecer el valor del contador antes de que este se desborde. El restablecimiento del contador se efecta mediante una instruccin especial (WDR). DISPO IBLE E
AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535

APLICACIO ES.
El WATCHDOG TIMER se utiliza generalmente en aquellas situaciones en las que se corre el riesgo de que el microcontrolador entre en un estado de espera infinito.

REGISTROS I VOLUCRADOS. DISPOSITIVO: AT90S1200.


OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 FU CI DEL ARCHIVO. WDTCR WDE WDP2 WDP1 WDP0 WDE = 1 habilita WATCHDOG TIMER. WDE = 0 deshabilita WATCHDOG TIMER.

Tabla WDT-1A. Registros involucrados. DISPOSITIVO: AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333, AT90LS2333, AT090S4433,AT90LS4433,AT90S8515, AT90S4414, AT90S4434, AT90LS4434, AT90S8535, AT90LS8535.
OMBRE BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 DEL ARCHIVO. WDTCR WDTOE WDE WDP2 WDP1 WDP0

Tabla WDT-1B. Registros involucrados. El bit WDE de registro WDTCR es el responsable de habilitar o deshabilitar el perifrico Perro Guardin. Los tres bits menos significativos de este registro permiten establecer el

52

mximo intervalo de tiempo que puede ocurrir entre dos instrucciones WDR para evitar una interrupcin, es decir, con estos tres bits se controla el limite mximo de tiempo que con el que se cuenta para restablecer el contador interno del Perro Guardin, antes de que el microcontrolador se reinicie. La Tabla WDT-2 muestra las posibles combinaciones de los bits WDP2, WDP1 y WDP0. El bit WDTOE del registro WDTCR ayuda a prevenir una desactivacin accidental del Perro Guardin. Para activar al Perro Guardin, simplemente escriba un 1 al bit WDE. Para desactivarlo siga los siguientes pasos (excepto para AT90S1200): (a) Escriba al mismo tiempo un 1 en los bits WDTOE y WDE del registro WDTCR. (b) En seguida, antes de cuatro ciclos de reloj, escriba un 0 al bit WDE.
MERO DE CICLOS DEL CO TADOR I TERO DEL PERRO GUARDIA . (K CICLOS)
16 32 64 128 256 512 1024 2048

I TERVALO DE TIEMPO WDP2 WDP1 WDP0 A5v (mili segundos)

I TERVALO DE TIEMPO A3v (mili segundos)


47 94 190 380 750 1500 3000 6000

0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1

15 30 60 120 240 490 970 1900

Tabla WDT-2. Origen de la seal de reloj y pre escalamiento para el perro guardin.

SECUE CIA DE CO FIGURACI WDT. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> =0 2 Seleccione el intervalo de tiempo. Ver Tabla WDT-2. 3 Habilite el Perro Guardin. WDTCR<WDE>=1 A partir del momento de habilitar al Perro Guardin, cuenta con el intervalo de tiempo especificado en la Tabla WDT-2 , para ejecutar una instruccin WDR. En caso de NO ejecutar la instruccin WDR, el microcontrolador se reiniciar. 4 Habilite interrupciones globales. SREG<I>=1

53

IMPLA TACI . En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.


La secuencia de configuracin, de los registros especiales, se muestra programada en lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los ejemplos de implantacin como referencia.
;************************************************************.include "1200def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************.org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************ RESET: ;inicio de programa. ;************************************************************;ldi r16,high(RAMEND) ;Descomente para dispositivos ;con RAM mayor 256 Bytes ; out SPH,r16 ; ldi r16,low(RAMEND) ; out SPL,r16 ;************************************************************;PASO1 ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0 out WDTCR,r17 ;Watch Dog Timer se ;reinicia cada 15 ms. ;PASO3 in r17,WDTCR ori r17,(1<<WDE) ;Habilita Watch Dog Timer out WDTCR,r17 ;PASO4 sei ;Habilita interrupciones. loop: ;Como No se ejecuta nop ;nunca la instruccion WDR nop ;el microcontrolador nop ;se reiniciar . rjmp loop ;loop infinito WDR ;nunca se ejecuta

54

55

OMBRE DEL PERIFRICO: SPI - I TERFAZ SERIAL PERIFERICA. DESCRIPCI GE ERAL Este perifrico permite al microcontrolador comunicarse de manera serial con otros dispositivos externos as como con otros microcontroladores. El tipo de comunicacin es bi-direccional del tipo asncrona y con una alta velocidad de transferencia. Por favor, lea la seccin REGISTROS INVOLUCRADOS de este capitulo para una explicacin ms detallada.

DISPO IBLE E AT90xS2333, AT90xS4433, AT90S8515,AT90S4414, AT90Xs4434 y AT90Xs8535.

APLICACIO ES Comunicaciones seriales con dispositivos electrnicos (ADC, Memorias, etc.) o entre varios microcontroladores. REGISTROS I VOLUCRADOS

OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO SPCR SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 Tabla SPI-1A. Registros Involucrados con SPI

OMBRE B7 B6 B5 B4 B3 B2 B1 REGISTRO SPSR SPIF WCOL Tabla SPI-1B. Registros Involucrados con SPI.

B0 -

OMBRE B7 B6 B5 B4 B3 B2 B1 REGISTRO SPDR MSB Tabla SPI-1C. Registros Involucrados con SPI.

B0 LSB

El significado de cada bit y su funcin se puede observar en la Tabla SPI-2.

56

BIT SPIE SPE DORD

SIG IFICADO SPI Interrupt Enable

MSTR

CPOL

CPHA SPR1 SPR0 SPIF

FU CI 1 Habilita interrupcin del SPI 0 La deshabilita. SPI Enable 1 Habilita al Perifrico SPI 0 Lo deshabilita. Data Order Especifica el orden en que se transmiten los datos. 1 Se enva primero el LSB 0 Se enva primero el MSB Master/Slave Select Especifica el modo de operacin 1 Modo Maestro 0 Modo Esclavo Clock Polarity Especifica la polaridad de la seal de Clock (SCK). 1 SCK Se mantiene en ALTO (1) cuando esta en estado de Espera (Idle). 0 SCK Se mantiene en BAJO (0) cuando esta en estado de Espera (Idle). Clock Phase Especifica la fase de la seal SCK con respecto los datos. Ver Figura SPI-1. SPI Clock Rate Select Ver Tabla SPI-3 SPI Clock Rate Select Ver Tabla SPI-3
SPI Interrupt Flag

Se pone en 1 cuando se completa una Transferencia. WCOL Write Collision Flag Este bit es puesto en 1 si se escribe en el registro SPDR mientras se esta efectuando una transferencia. Tabla SPI-2. Bits de los registros especiales utilizados para el SPI Los bits SPR1 y SPR0 determinan la velocidad de la seal SCK, misma que se encarga de sincronizar las transferencias de datos.

SPR1 SPR0 FRECUE CIA DE SCK Fosc principal/4 0 0 Fosc principal/16 0 1 Fosc principal/64 1 0 Fosc principal/128 1 1 Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la seal de Clock.
En una comunicacin SPI existe siempre un MAESTRO y un ESCLAVO. Generalmente un microcontrolador AVR toma el papel de maestro y cualquier dispositivo conectado a l se comporta como esclavo (Aunque los papeles pueden intercambiarse). Para comunicar un

57

dispositivo mediante SPI con un microcontrolador AVR, se utilizan cuatro pines de este ltimo: MISO, MOSI, SCK y SS . La localizacin de estos pines se muestra en la Tabla SPI-4.

MISO MOSI SCK SS 18 17 19 16 (PB4) (PB3) (PB5) (PB2) 18 17 19 16 AT90xS4433 (PB4) (PB3) (PB5) (PB2) 7 6 8 5 AT90S8515 (PB6) (PB5) (PB7) (PB4) 7 6 8 5 AT90S4414 (PB6) (PB5) (PB7) (PB4) 7 6 8 5 AT90Xs4434 (PB6) (PB5) (PB7) (PB4) 7 6 8 5 AT90Xs8535 (PB6) (PB5) (PB7) (PB4) Tabla SPI-4. Localizacin de los pines MISO, MOSI, SCK y SS en la familia AVR. (EMPAQUETADO DIP). DISPOSITIVO AT90xS2333 FU CIO DE LOS PI ES MOSI, MISO, SCK Y SS E MODO MAESTRO.
El pin MOSI del microcontrolador puede ser configurado como entrada o salida en modo MAESTRO, sin embargo, para transmisiones se utiliza como SALIDA de los datos. Por el pin SCK se saca la seal de reloj que sincroniza el envo de bits desde un dispositivo hacia otro. Este pin tambin puede ser configurado como entrada o salida en modo MAESTRO. El pin MISO se comporta como ENTRADA de los datos seriales cuando el dispositivo AVR se encuentra en modo MAESTRO. Por ltimo, el pin SS puede ser configurado como entrada o como salida. Al ser configurado este pin como SALIDA no afecta el funcionamiento del perifrico SPI. Si el pin SS se configura como ENTRADA entonces afecta el sistema SPI de la siguiente manera: El pin SS debe mantenerse siempre en nivel alto (1), en caso de que este pin pase a nivel bajo (0) el microcontrolador pasar automticamente a modo ESCLAVO. Esto evita una posible contencin del bus poniendo los pines SCK y MOSI como entradas. Al pasar de modo MAESTRO a modo ESCLAVO por un cambio de nivel en el pin SS , el bit SPIF del registro SPSR es puesto a cero (0), por lo que se puede generar una interrupcin. Como recomendacin, si configura al pin SS como entrada, asegrese de que el microcontrolador permanece en modo MAESTRO antes de transmitir datos.

58

FU CIO DE LOS PI ES MOSI, MISO, SCK Y SS E MODO ESCLAVO.


El Pin MOSI se comporta como entrada de los datos. El pin SCK se comporta como entrada de la seal de reloj que sincroniza la transferencia de datos. El pin MISO puede ser configurado como entrada o salida en modo ESCLAVO. Normalmente se utiliza como salida de datos. El pin SS en modo ESCLAVO se comporta como entrada. Para poder recibir datos este pin debe mantenerse en estado bajo (0). En el caso de que el pin SS se encuentre en nivel alto (1), los tres pines (MOSI, MISO, SCK) se configuran automticamente como entradas, deshabilitando cualquier recepcin de datos.

FASE Y POLARIDAD DE LA SEAL DE RELOJ. Los bits DORD, CPOL y CPHA del registro SPCR permiten configurar adecuadamente el formato en las transmisiones seriales . El formato requerido depender de los circuitos externos conectados al microcontrolador. El bit DORD puesto en 1 hace que en cada palabra transmitida, el bit menos significativo sea enviado primero. Si DORD es puesto a 0, entonces se enva primero el bit mas significativo. El bit CPOL especifica la polaridad de la seal de reloj (SCK): CPOL en 1 hace que SCK se mantenga en ALTO (1) cuando NO se est transmitiendo, CPOL en 0 hace que SCK se mantenga en BAJO (0) cuando no hay transmisiones. El bit CPHA permite adelantar o atrasar la seal reloj SCK con respecto a los datos provenientes del ESCLAVO. La Figura SPI-1 muestra este hecho. Observe que con CPHA en 0 los datos desde el ESCLAVO estn preparados antes de que cambie la seal SCK.

SCK CYCLE# (FOR REFERENCE)

SCK CYCLE# (FOR REFERENCE)

MOSI (FROM MASTER)

MSB MSB

6 6

5 5

4 4

3 3

2 2

1 1

LSB LSB

MOSI (FROM MASTER)

MSB MSB

6 6

5 5

4 4

3 3

2 2

1 1

LSB LSB

MISO (FROM SLAVE)

MISO (FROM SLAVE)

SCK (CPOL=0) SCK (CPOL=1) SS (TO SLAVE)

SCK (CPOL=0) SCK (CPOL=1) SS (TO SLAVE)

CPHA=0

CPHA=1

Figura SPI-1. Efecto del bit CPHA sobre la seal SCK.

59

SECUE CIA DE CO FIGURACI SPI. 1.- Deshabilite interrupciones. Ponga SREG<I>=0. 2.- Configure los pines MOSI, MISO, SCK Y SS de acuerdo a lo requerido en su aplicacin. Si el modo de operacin del microcontrolador ser como MAESTRO, generalmente MOSI es SALIDA, MISO ENTRADA , SCK SALIDA y SS es SALIDA. En modo MAESTRO SS se configura como entrada solo cuando hay ms de un microcontrolador conectado al bus SPI (MOSI, MISO y SCK). En modo ESCLAVO todos los pines son configurados automticamente como entradas, a excepcin de MISO que puede configurarse como salida o entrada, aunque generalmente se establece como SALIDA. Recuerde que en modo ESCLAVO los circuitos externos deben poner el pin SS en nivel bajo (0) para habilitar al SPI. 3.- Establezca el modo de operacin: MAESTRO o ESCLAVO. Ver Tabla SPI-2. 4.- Establezca los bits DORD, CPOL y CPHA segn sea necesario. Ver Tabla SPI-2 y Figura SPI-1. 5.- Seleccione la frecuencia de la seal SCK. Ver Tabla SPI-3. 6.- Habilite la interrupcin del perifrico SPI si as lo requiere. Generalmente s es necesario habilitarla. Ver Tabla SPI-2. SPCR<SPIE>=1. 7.- Habilite el perifrico SPI. SPCR<SPE>=1 8.- Habilite interrupciones globales. SREG<I>=1.
Para transmitir una palabra (8 bits) por medio de SPI, simplemente escriba al registro SPDR el dato correspondiente. Cuando se completa una transmisin o recepcin, se genera la interrupcin correspondiente (siempre que se encuentren habilitadas las interrupciones). Para evitar corrupcin de datos, antes de escribir al registro SPDR verifique que se haya completado la transferencia anterior. Si por alguna razn se escribe al registro SPDR antes de terminar una transmisin, entonces el bit WCOL se establece a 1 indicando un error. Para leer la ultima palabra recibida, lea el valor del registro SPDR.

I.S.R. Si las interrupciones globales se encuentran habilitadas y el bit SPIE esta establecido en 1, el perifrico SPI puede generar una interrupcin en cualquiera de los dos siguientes casos: 1. Cada vez que una transferencia es completada. 2. Si el pin SS esta configurado como entrada y es establecido a 0 por cualquier circuito externo mientras en microcontrolador se encuentra en modo MAESTRO.

60

La Tabla SPI-5 muestra el vector de interrupcin y la direccin correspondiente para cada dispositivo de la familia AVR.

DISPOSITIVO AT90S4414 AT90S8515 AT90xS2333 AT90xS4433 AT90xS4434 AT90Xs8535

VECTOR 9 9 8 8 11 11

DIRECCIO $008 $008 $007 $007 $00A $00A

Tabla SPI-5. Vectores de interrupcin para el SPI.

IMPLA TACIO En aras de la claridad, el cdigo presentado no est optimizado en tamao ni en velocidad.
El siguiente programa configura al microcontrolador en modo MAESTRO. El registro r17 contiene un valor que se incrementa y enva a travs de SPI. El registro r18 se utiliza para notificar que ya se ha enviado el dato.
;SPI MODO MAESTRO. ;***************************************************************** .include "8515def.inc" ;archivo que contiene los nombres de ;registros especiales. ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;***************************************************************** .org $0 ;vector de inicio. Rjmp RESET ;redireccionado a la direccin donde se ;encuentra RESET .org SPIaddr rjmp SPI_INT ;redireccionado hacia SPI_INT. ;***************************************************************** SPI_INT: ;Solamente pone el registro r18 en $ff, para ;notificar que ya se ha enviado el dato. ldi r18,0xff reti RESET: ;inicio de programa. ;***************************************************************** ldi r16,high(RAMEND) ;Comente para dispositivos ;con RAM menor a 256 Bytes out SPH,r16 ldi r16,low(RAMEND) out SPL,r16

61

;***************************************************************** ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ;Para el AT90S8515 modo MAESTRO ;__ ;SS PB4 SALIDA ;MOSI PB5 SALIDA ;MISO PB6 ENTRADA ;SCK PB7 SALIDA ldi r17,0b10110000 out DDRB,r17 ;PASO3 sbi SPCR,MSTR;Poner el AVR en Modo Maestro. ;PASO4 cbi SPCR,CPOL;SCK en Bajo cuando no transmite. cbi SPCR,DORD;MSB se envia primero. cbi SPCR,CPHA;fase del SCK. ;PASO5 cbi SPCR,SPR0;Frecuencia de seal cbi SPCR,SPR0;SCK es igual a fosc principal. ;PASO6 sbi SPCR,SPIE;Habilita Int SPI ;PASO7 sbi SPCR,SPE;Habilita periferico SPI ;PASO8 sei ;Habilita Int globales. clr loop: inc r17 ;Dato a Enviar. clr r18 ;r18 =0 out SPDR,r17;Envia dato por SPI rcall Funcion_Espera rjmp loop ;loop infinito ;Espera hasta que se haya transmitido el dato ;a traves de SPI. Funcion_Espera: stop: nop nop SBRS r18,0 rjmp stop ret r17

62

63

OMBRE DEL PERIFRICO: UART RECEIVER A D TRA SMITTER.

U IVERSAL

ASY CHRO OUS

DESCRIPCI GE ERAL. La UART permite al microcontrolador establecer comunicaciones seriales RS-232 con otros dispositivos. El tipo de comunicacin Full Duplex, Asncrona y las velocidades de transferencia son de hasta 115200 b.p.s. DISPO IBLE E AT90S2313, AT90xS2333, AT90xS8535.

AT90xS4433,

AT90S4414,

AT90S8515AT90xS4434,

APLICACIO ES La UART es a menudo utilizada para realizar interfaces con computadoras personales. Tambin se utiliza para adquisicin de datos mediante la conexin con otros instrumentos tales como multmetros. REGISTROS I VOLUCRADOS OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO RXC TXC UDRE FE OR USR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 UCR MSB LSB UBRR MSB LSB UDR Tabla UART-1. Registros Involucrados con UART

El significado de cada bit y su funcin se puede observar en la Tabla UART-2. BIT significado FU CI RXC UART Receive Complete Este bit se establece a 1 cuando se recibe un dato de manera serial por la UART. TXC UART Transmit Complete Este bit se establece a 1 cuando ha terminado de enviar un dato por la UART.. Mediante este bit la UART indica ya est lista UDRE UART Data Register Empty para enviar otro dato. Framing Error Se establece a 1 cuando el bit de STOP es cero. FE (Un Error en la recepcin). Se establece a 1 cuando llega un nuevo dato por OR Overrun la UART y no se ley el anterior. (Se ha perdido un dato). Continua...

64

Continuacin... BIT SIG IFICADO RXCIE RX Complete Interrupt Enable TXCIE TX Complete Interrupt Enable Data Register UDRIE UART Interrupt Enable Receiver Enable RXE Transmitter Enable TXE CHR9 9 Bit Characters

FU CI 1 Habilita Interrupcin de Recepcin.


1 Habilita Interrupcin de Transmisin. 1 Habilita Interrupcin de Registro de Datos Vaco. 1 Habilita la Recepcin de datos. 1 Habilita la Transmisin de datos. 1 Hace que la longitud de los datos sea de 9 bits. 0 Longitud de los datos 8 bits. Si CHR9 es 1 este bit contiene el noveno bit recibido. Si CHR9 es 1 este bit ser el noveno bit a transmitir.

RXB8 Receive Data Bit 8 TXB8 Transmit Data Bit 8

Tabla UART-2. Bits de los registros especiales utilizados UART.

RECEPCI Y TRA SMISI DE DATOS.


Para recibir o transmitir por la UART se deben de habilitar primero los bits RXEN y TXEN del registro UCR. El registro UDR se utiliza para recibir y transmitir datos por la UART. La longitud de los datos generalmente es de 8 bits, sin embargo, se puede configurar al perifrico para que la longitud sea de 9 bits mediante el bit CHR9 del registro UCR. Esto es til para ciertas aplicaciones donde el noveno bit puede servir como bit de direccin. Para saber si ha llegado un dato por la UART puede utilizarse el bit RXC del registro USR: si este bit se encuentra en 1 puede leerse el registro UDR para recuperar el ltimo dato recibido. Otra opcin es habilitar la interrupcin de recepcin y dentro de la I.S.R. leer el registro UDR. Para transmitir datos por la UART simplemente escriba al registro UDR, esto har que el perifrico realice lo necesario para comenzar a transmitir. Es conveniente revisar el bit TXC, para asegurarse que ya se ha transmitido completamente un dato antes de enviar otro. La recepcin y transmisin de datos se realiza por los pines RXD y TXD del microcontrolador, la Tabla UART-3 muestra la posicin de estos pines en cada miembro de la familia AVR con empaque DIP.

65

TXD RXD 3 2 AT90S2313 (PD1) (PD0) 3 2 AT90xS2333 (PD1) (PD0) 3 2 AT90xS4433 (PD1) (PD0) 11 10 AT90S8515 (PD1) (PD0) 11 10 AT90S4414 (PD1) (PD0) 15 14 AT90xS4434 (PD1) (PD0) 7 6 AT90xS8535 (PB6) (PB5) Tabla UART-3. Localizacin de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP).
En las comunicaciones seriales la velocidad de transmisin / recepcin de datos es muy importante. Esta velocidad esta relacionada con el Baud Rate.

DISPOSITIVO

SELECCI DEL BAUD RATE. Para seleccionar el Baud Rate se utiliza el registro especial UBRR. La ecuacin (1) muestra la relacin entre el valor de Baud Rate y el del registro UBRR.
Baud Rate = fosc --------------(1) 16(UBRR + 1)

En la ecuacin (1) Baud Rate puede tomar cualquier valor, sin embargo los valores ms comunes son mostrados en la Tabla UART-4.

66

Baud rate 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 Tabla UART-4. Valores ms comunes de Baud Rate.
En lugar de proporcionar una tabla completa con valores de UBRR, Baud Rate y frecuencias de oscilador principal (fosc) se mostrar un mtodo para encontrar el valor de UBRR en funcin de Baud Rate y fosc. Para configurar las transmisiones / recepciones a un Baud Rate especfico (Tabla UART-3) proceda como se muestra a continuacin.

(a) Encuentre el valor de UBRR para un Baud Rate. f osc UBRR = 1 --------------(2) 16(BaudRate ) (b) El valor de UBRR encontrado en el paso (a) se redondea. Este valor debe estar entre 1 y 255. (c) Sustituya en la ecuacin (1) el valor de UBRR encontrado en el paso (b). Con esto encontrar Baud RateREAL (d) Calcule el porcentaje de error. Baud Rate REAL --------------(3) % Error = 100 1 Baud Rate
Se recomienda que el porcentaje de error sea menor a 1%.

EJEMPLO UMERICO. Suponga que se desea configurar la UART a un Baud Rate de 19200. La frecuencia del oscilador (cristal) del microcontrolador es 4MHz. 4000000 (a) UBRR = 1 =12.02 16(19200 )
(b) Redondeando se tiene UBRR =12 (c) Baud Rate REAL = 4000000 = 19230.769 16(12 + 1)

67

19230.769 (d) % Error = 100 1 = 0.16 0.2 19200 En resumen se tiene Baud Rate 19200, fosc=4MHz, UBRR=12, Error 0.2 %. Como el error es menor a 1% se puede utilizar el valor encontrado de UBRR sin problemas. Algunas frecuencias de osciladores permiten seleccionar valores de Baud Rate con porcentajes de error muy bajos. La Tabla UART-5 muestra algunos ejemplos.

fosc= 1.8432 Mhz BAUD RATE 2400 4800 9600 14400 19200 28800 38400 57600 76800 115200 %ERROR UBRR

fosc= 3.6864 Mhz %ERROR UBRR

fosc= 7.3728 Mhz %ERROR UBRR

0.0 47 0.0 95 0.0 191 0.0 23 0.0 47 0.0 95 0.0 11 0.0 23 0.0 47 0.0 7 0.0 15 0.0 31 0.0 5 0.0 11 0.0 23 0.0 3 0.0 7 0.0 15 0.0 2 0.0 5 0.0 11 0.0 1 0.0 3 0.0 7 33.3 1 0.0 2 0.0 5 0.0 0 0.0 1 0.0 3 Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal.

SECUE CIA DE CO FIGURACI UART


Deshabilite interrupciones. Recomendado pero no necesario. Configure los pines TXD y RXD como entradas. Configure el Baud Rate. Ver SECCION SELECCIN DEL Baud Rate Seleccione la longitud de los datos. Generalmente es 8 bits. UCR<CHR9>=0 8 bits UCR<CHR9>=1 9 bits 5. Si su aplicacin lo requiere, habilite las interrupciones siguientes:

1. 2. 3. 4.

Interrupcin de Recepcin. UCR<RXCIE>=1 Interrupcin de Transmisin. UCR< TXCIE >=1 Interrupcin de UDR vaco. UCR<UDRIE>=1

6. Habilite la interrupcin transmisin y recepcin de datos. Ver Tabla UART-2. 7. Habilite interrupciones globales.
Para transmitir un dato por medio de la UART, simplemente escriba al registro UDR el dato correspondiente. Para leer la ultima palabra recibida, lea el valor del registro UDR.

68

I.S.R. Para que se generen interrupciones se requiere que se encuentren habilitadas, incluidas las interrupciones globales. Cuando se completa una transmisin, se genera la Interrupcin de Transmisin Para evitar corrupcin de datos, antes de escribir al registro UDR verifique que se haya completado la transferencia anterior. Cuando se recibe un dato por la UART, se genera la Interrupcin de Recepcin, si el dato anterior no fue ledo, se genera un error de sobreflujo. La Tabla UART-6 muestra el vector de interrupcin y la direccin correspondiente para cada dispositivo de la familia AVR. I TERRUPCI DE RECEPCIO DISPOSITIVO VECTOR DIRECCIO 8 $007 AT90S2313 9 $008 AT90xS2333 9 $008 AT90xS4433 10 $009 AT90S8515 10 $009 AT90S4414 12 $00B AT90xS4434 12 $00B AT90xS8535 I TERRUPCI DE TRA SMISIO
VECTOR DIRECCIO

I TERRUPCI DE UDR VACIO


VECTOR DIRECCIO

10 11 11 12 12 14 14

$009 $00A $00A $00B $00B $00D $00D

9 10 10 11 11 13 13

$008 $009 $009 $00A $00A $00C $00C

Tabla UART-6. Vectores de interrupcin para UART.

IMPLA TACIO En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en velocidad.
El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits, Interrupciones de Recepcin y Transmisin habilitadas. fosc es 4MHZ Cada vez que llega un dato por la UART se hace eco.
;-Configuracin ;-Manejo Por Interrupciones. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************************ .org URXCaddr ;Vector de UART Recepcion completa. rjmp Rx_Completa ;redireccionado. .org UDREaddr ;Vector de Registro UDR vacio.

69

rjmp UDR_Vacio ;redireccionado. .org UTXCaddr ;Vector de UART Transmisin completa. rjmp Tx_Completa ;redireccionado. ;************************************************************************ ;ISR De Transmision Completa Tx_Completa: ;Escriba aqui su codigo reti ;************************************************************************ ;ISR De Recepcion Completa Rx_Completa: ;Escriba aqui su codigo in r18,UDR;Lee el ltimo dato recibido. ;Se guarda en r18. out UDR,r18 ;Regresar el dato (ECO). reti ;************************************************************************ ;ISR De UDR Vacio. UDR_Vacio: ;Escriba aqui su codigo reti RESET: ;inicio de programa. ;************************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************************ ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 cbi DDRD,0;Pin RXD como entrada cbi DDRD,1;Pin TXD como entrada ;PASO 3 ldi r17,0x0c;Baud Rate=19200 out UBRR,r17; ;PASO 4 cbi UCR,CHR9;Longitud de Datos 8 bits ;PASO 5 sbi UCR,RXCIE;Interrupcin de Recepcin. sbi UCR,TXCIE;Interrupcin de Transmisin. cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada. ;PASO 6 sbi UCR,TXEN;Habilita Transmisin sbi UCR,RXEN;Habilita Recepcin.

70

;PASO 7 sei loop: nop nop rjmp loop

;Habilita Interrupciones Globales

;loop infinito

En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en velocidad. El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,. fosc es 4MHZ Cada vez que llega un dato por la UART se hace eco.
;-Configuracin ;-Manejo Por Escaneo. ;************************************************************************ .include "8515def.inc" ;archivo que contiene los nombres de registros ;especiales ;Sustityalo por el archivo correspondiente al ;microcontrolador que utiliza. ;************************************************************************ .org $0 ;vector de inicio. rjmp RESET ;redireccionado a la direccin donde se encuentra RESET ;************************************************************************ RESET: ;inicio de programa. ;************************************************************************ ldi r16,high(RAMEND) out SPH,r16 ldi r16,low(RAMEND) out SPL,r16 ;************************************************************************ ;PASO ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 cbi DDRD,0;Pin RXD como entrada cbi DDRD,1;Pin TXD como entrada ;PASO 3 ldi r17,0x0c;Baud Rate=19200 out UBRR,r17; ;PASO 4 cbi UCR,CHR9;Longitud de Datos 8 bits ;PASO 5 cbi UCR,RXCIE;Interrupcin de Recepcin.NO HABILITADA. cbi UCR,TXCIE;Interrupcin de Transmisin. NO HABILITADA. cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada. NO HABILITADA.

71

;PASO 6 sbi UCR,TXEN;Habilita Transmisin sbi UCR,RXEN;Habilita Recepcin. ;PASO 7 sei ;Habilita Interrupciones Globales loop: nop nop sbis USR,RXC;Llego nuevo Dato? rjmp loop;No, seguir esperando in r18,UDR ;Si, guardarlo en r18 out UDR,r18 ;Hacer eco. nop nop rjmp loop ;loop infinito

72

GLOSARIO ADC. Convertidor Analgico Digital. Es un dispositivo que convierte una seal Analgica en usa seal digital Analgica, seal. Es una seal definida en un intervalo continuo de tiempo cuya amplitud puede adoptar un intervalo continuo de valores Asncrona, comunicacin. Una forma de comunicacin en la cual la informacin se transmite como un flujo en serie de bits. Cada carcter se codifica como una cadena de bits y se separa por un bit de <<inicio de carcter>> y bit de <<parada>>. A veces se usa un bit de paridad para la deteccin y correccin de errores. Asncrono, sistema. Son aquellos que pueden cambiar de estado en cualquier momento en que una o ms seales que entran al sistema cambie. AVR. Nombre que le da la empresa ATMEL a su familia de microcontroladores RISC de 8 bits. Oficialmente AVR no tiene ningn significado. Baud Rate. Ver Baudio. Baudio. Los cambios de seal por segundo que se producen en un dispositivo se miden en baudios. Un baudio representa e nmero de veces que el estado de la lnea de comunicacin cambia por segundo. Si un dispositivo transfiere un bit por cada cambio de seal entonces la velocidad en baudios y la velocidad de transmisin ser la misma. Las tcnicas de codificacin empleadas representan cada bit con dos o ms cambios de seal CPU. Unidad Central de Proceso. Digital, seal. Es una seal en tiempo discreto con amplitud cuantificada. Dicha seal se puede representar mediante una secuencia de nmeros DIP. Dual In Package. Es un tipo encapsulado en el cual existen dos hileras de terminales. Discreto, seal en tiempo. Es una seal definida slo en valores discretos de tiempo. EIA Electronics Industries Association. Full Duplex. Es un tipo de comunicacin serial en la cual el flujo de los datos puede ser en ambos sentidos de manera simultnea. I.S.R. Rutina de Servicio de Interrupcin. Es una parte de cdigo que se ejecuta cuando se atiende a una interrupcin. I L. Es la desviacin de los valores de la funcin de transferencia real a los valores de una lnea recta. Para un ADC las desviaciones son medidas en las transiciones de un paso al siguiente. Interrupcin. Es una peticin que se hace al CPU para que atienda un evento que acaba de ocurrir. LSB. Una medida de la resolucin de un ADC, puesto que define el nmero de divisiones o unidades del rango analgico total. 1LSB= FSR/(2n-1) Donde FSR Es la Resolucin a Plena Escala y n es el nmero de Bits de salida del ADC. LSB. Bit Menos Significativo. MSB. Bit Ms Significativo. Muestreador retenedor. Es un circuito que toma imgenes instantneas de una seal elctrica. Generalmente un circuito Muestreador Retenedor se coloca a la entrada de los ADC. Registro. Conjunto de Bits que son considerados como una sola entidad. Reloj. Seal elctrica pulsante, generalmente cuadrada con la que se alimenta a un sistema digital para propsitos de sincrona.

73

RISC. Reduced Instruction Set code. RS-232. Es un estndar de comunicaciones seriales introducido por la EIA en 1962. Serial, comunicacin. Consiste en la transmisin de seales a travs de un nico cable o enlace. Los bits se transmiten secuencialmente, uno tras otro. Serie, comunicacin. Ver Serial. Sincrona, comunicacin. A diferencia de las comunicaciones asncronas, se cuenta con un mecanismo de reloj para separar grupos de bits en una transmisin. Tacmetro. Dispositivo para medicin de velocidades angulares. Vector, interrupcin. Es un nmero que indica el nmero de interrupcin dentro de una tabla de prioridades dentro del microcontrolador, este nmero tiene asociada una localidad de memoria a la que la CPU del microcontrolador salta cuando se genera una interrupcin.

74

BIBLIOGRAFA.
AT90S/LS2323 & AT90S/LS2343 DATA SHEET. ATMEL. www.atmel.com AT90S/LS2333 & AT90S/LS4433 DATA SHEET. ATMEL. www.atmel.com AT90S/LS4434 & AT90S/LS8535 DATA SHEET. ATMEL. www.atmel.com AT90S1200 DATA SHEET. ATMEL. www.atmel.com AT90S2313 DATA SHEET. ATMEL. www.atmel.com AT90S4415/8515 DATA SHEET. ATMEL. www.atmel.com Lan Times Enciclopedia de Redes Mc Graw Hill. Tom Sheldon Sistema de Monitoreo de Seales Con Salidas Analgicas para Aplicaciones Crticas en Tiempo Real Asdrbal L. Chau. Tesis de Maestra. Noviembre 2000. Sistemas de Control en Tiempo Discreto Segunda Edicin. Katsuhiko Ogata.. Pearson Educacin. Sistemas Digitales, Principios y Aplicaciones Quinta Edicin, Ronald Tocci. Prentice Hall. Understanding Data Converters, Application Report. Texas Instruments. 1995.

75

Das könnte Ihnen auch gefallen