2. DEDICATORIA
A mi Amada Esposa Lutecia.
A Mamá y Papá.
2
3. CONTENIDO
I TRODUCCIÓ ................................................................................................................ 7
OMBRE DEL PERIFÉRICO: TIMER/COU TER 1. .................................................. 9
DESCRIPCIÓN GENERAL. ............................................................................................. 9
DISPONIBLE EN .............................................................................................................. 9
APLICACIONES ............................................................................................................... 9
REGISTROS INVOLUCRADOS ...................................................................................... 9
MODO TEMPORIZADOR Y MODO CONTADOR. .................................................... 13
SECUENCIA DE CONFIGURACIÓN MODO TEMPORIZADOR Y CONTADOR... 14
I.S.R. ................................................................................................................................. 14
MODO CAPTURA .......................................................................................................... 15
SECUENCIA DE CONFIGURACIÓN MODO CAPTURA. ......................................... 16
I.S.R. ................................................................................................................................. 16
MODO COMPARADOR DE IGUALDAD. ................................................................... 17
SECUENCIA DE CONFIGURACIÓN MODO COMPARADOR DE IGUALDAD. ... 18
I.S.R. ................................................................................................................................. 18
MODO GENERADOR DE SEÑALES PWM (MODULACIÓN POR ANCHO DE
PULSO) ............................................................................................................................ 19
SECUENCIA DE CONFIGURACIÓN MODO PWM. .................................................. 21
I.S.R. ................................................................................................................................. 21
IMPLANTACIÓN. ........................................................................................................... 22
TIMER/COUNTER 1 MODO TEMPORIZADOR. ........................................................ 22
TIMER/COUNTER 1 MODO CAPTURA. ..................................................................... 23
TIMER/COUNTER 1 MODO GENERADOR DE SEÑALES PWM. ........................... 25
TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD. ............................... 26
OMBRE DEL PERIFÉRICO: TIMER/COU TER0. ................................................. 29
FUNCIONAMIENTO GENERAL .................................................................................. 29
DISPONIBLE EN ............................................................................................................ 29
APLICACIONES ............................................................................................................. 29
REGISTROS INVOLUCRADOS. ................................................................................... 29
SECUENCIA DE CONFIGURACIÓN ........................................................................... 32
I.S.R. ................................................................................................................................. 32
IMPLANTACIÓN. ........................................................................................................... 33
TIMER/COUNTER 0 MODO TEMPORIZADOR. ........................................................ 33
NOTAS DE CONFIGURACIÓN. ................................................................................... 35
OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL. 37
DESCRIPCIÓN GENERAL. ........................................................................................... 37
DISPONIBLE EN ............................................................................................................ 37
APLICACIONES ............................................................................................................. 37
REGISTROS INVOLUCRADOS .................................................................................... 37
SECUENCIA DE CONFIGURACIÓN ADC. ................................................................. 39
I.S.R. ................................................................................................................................. 40
IMPLANTACION ............................................................................................................ 41
OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO............................... 45
DESCRIPCIÓN GENERAL. ........................................................................................... 45
DISPONIBLE EN ............................................................................................................ 45
3
4. APLICACIONES ............................................................................................................. 45
REGISTROS INVOLUCRADOS .................................................................................... 45
DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. ................... 45
DISPOSITIVO AT90S1200. ........................................................................................ 45
DISPOSITIVO AT90XX2333, AT90XX4433. ........................................................... 45
SECUENCIA DE CONFIGURACIÓN COMPARADOR ANALÓGICO. .................... 47
I.S.R. ................................................................................................................................. 48
IMPLANTACION ............................................................................................................ 49
OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER). ..... 52
DESCRIPCIÓN GENERAL. .......................................................................................... 52
DISPONIBLE EN ............................................................................................................ 52
APLICACIONES. ............................................................................................................ 52
REGISTROS INVOLUCRADOS. ................................................................................... 52
FUNCIÓN ........................................................................................................................ 52
SECUENCIA DE CONFIGURACIÓN WDT. ................................................................ 53
IMPLANTACIÓN. ........................................................................................................... 54
OMBRE DEL PERIFÉRICO: SPI - I TERFAZ SERIAL PERIFERICA. ............. 56
DESCRIPCIÓN 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 SEÑAL DE RELOJ. ..................................................... 59
SECUENCIA DE CONFIGURACIÓN SPI. ................................................................... 60
I.S.R. ................................................................................................................................. 60
IMPLANTACION ............................................................................................................ 61
OMBRE DEL PERIFÉRICO: UART - U IVERSAL ASY CHRO OUS
RECEIVER A D TRA SMITTER................................................................................. 64
DESCRIPCIÓN GENERAL. ........................................................................................... 64
DISPONIBLE EN ............................................................................................................ 64
APLICACIONES ............................................................................................................. 64
REGISTROS INVOLUCRADOS .................................................................................... 64
RECEPCIÓN Y TRANSMISIÓN DE DATOS. .............................................................. 65
SELECCIÓN DEL BAUD RATE.................................................................................... 66
EJEMPLO NUMERICO. ................................................................................................. 67
SECUENCIA DE CONFIGURACIÓN UART ............................................................... 68
I.S.R. ................................................................................................................................. 69
IMPLANTACION ............................................................................................................ 69
GLOSARIO......................................................................................................................... 73
BIBLIOGRAFÍA. ............................................................................................................... 75
4
5. TABLAS
Tabla TC1-1. Registros Involucrados con el Timer/Counter1. ............................................ 11
Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1. ............... 12
Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter1. ....... 13
Tabla TC1-3. Función 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 Interrupción 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 Interrupción 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. Número de pin correspondiente a OC1A y OC1B. ...................................... 18
Tabla TC1-12 Vector de Interrupción para el evento de comparación 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 Señal PWM, Valores máximos de TCNT1, y Resolución.
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 función de los registros especiales para el Timer/Counter 0. .............. 30
TABLA TC0-3. Origen de la señal de reloj y pre escalamiento. ......................................... 31
Tabla TC0-4. Localización de pin T0 para la familia AT90X. ............................................ 31
Tabla TC0-5. Vector de interrupción 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. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del registro
ADMUX. ...................................................................................................................... 38
Tabla ADC-4. Localización 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 selección de la
señal AD Clock. ............................................................................................................ 39
Tabla ADC-6. Vectores de interrupción para el ADC. ........................................................ 40
Tabla CA-1A. Registros Involucrados con el Comparador Analógico. .............................. 45
Tabla CA-1B. Registros Involucrados con el Comparador Analógico. ............................... 45
Tabla CA-1C. Registros Involucrados con el Comparador Analógico. ............................... 45
Tabla CA-2. Bits de los registros especiales utilizados para el comparador analógico. ..... 46
5
6. Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación de
interrupción del Comparador Analógico. .................................................................... 47
Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR.
EMPAQUETADO DIP). .............................................................................................. 47
Tabla CA-5. Vectores de interrupción para el comprador analógico. .................................. 48
Tabla WDT-1A. Registros involucrados. ............................................................................. 52
Tabla WDT-1B. Registros involucrados. ............................................................................. 52
Tabla WDT-2. Origen de la señal de reloj y pre escalamiento para el perro guardián. ....... 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
señal de Clock. .............................................................................................................. 57
Tabla SPI-4. Localización de los pines MISO, MOSI, SCK y SS en la familia AVR.
(EMPAQUETADO DIP).............................................................................................. 58
Figura SPI-1. Efecto del bit CPHA sobre la señal SCK. ...................................................... 59
Tabla SPI-5. Vectores de interrupción 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. Localización de los pines TXD y RXD en la familia AVR.
(EMPAQUETADO DIP).............................................................................................. 66
Tabla UART-4. Valores más comunes de Baud Rate. ......................................................... 67
Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. .............................. 68
Tabla UART-6. Vectores de interrupción para UART........................................................ 69
6
7. I TRODUCCIÓ
Un periférico es un circuito electrónico especial incluido en un microcontrolador, que
realiza una función o tarea específica. Los periféricos de un microcontrolador permiten
ahorro de espacio y dinero en muchas aplicaciones electrónicas.
Este libro muestra de una manera clara y concisa, la forma de configurar todos los
periféricos 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 más bien, se espera que sirva como una herramienta de consulta para
aquellas personas que ya utilizan la familia AVR, y como una guía para aquellos que
comienzan a estudiar o a realizar proyectos con microcontroladores.
Cada capítulo del libro es dedicado completamente a un periférico en especifico. Se incluye
en cada uno de los capítulos las secciones siguientes:
♦ DESCRIPCIÓ GE ERAL. En esta sección se describe el funcionamiento
general del periférico.
♦ DISPO IBLE E . Se muestran los microcontroladores en los que esta incluido
cada periférico.
♦ 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 periférico.
♦ SECUE CIA DE CO FIGURACIÓ . En esta sección de cada capitulo se
explica paso a paso cómo configurar un periférico. Si el lector ya ha tenido
contacto con microcontroladores, puede ir directamente a esta sección y a la sección
IMPLANTACIÓN sin problema alguno.
♦ I.S.R. Se incluyen los vectores y las direcciones de interrupción, así como una
descripción de las condiciones que hacen que se genere cada interrupción.
♦ IMPLA TACIÓ . Cada capítulo del libro incluye el código fuente completo para
configurar un periférico y dejarlo funcionando correctamente. Se implantan todos
los pasos descritos en la sección SECUE CIA DE CO FIGURACIÓ . El código
esta escrito en lenguaje ensamblador y totalmente comentado. Si el lector programa
en otro lenguaje diferente a ensamblador, puede tomar como referencia el código
fuente proporcionado en esta obra.
Los microcontroladores AVR de ATMEL que se tratan en este libro son los siguientes: AT90S1200,
(1)
AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414,
AT90xS4434, AT90xS8535, AT90xS8534.
7
9. OMBRE DEL PERIFÉRICO: TIMER/COU TER 1.
DESCRIPCIÓ GE ERAL.
El Timer/Counter1 es un periférico bastante flexible, con él se puede medir intervalos de
tiempo, contar pulsos externos y generar señales PWM entre otras cosas. Los modos de
funcionamiento para este periférico son los siguientes:
MODO TEMPORIZADOR. Genera interrupciones cada vez que un contador interno de 16
bits se desborda. La señal de reloj para el registro contador interno se deriva del oscilador
principal del microcontrolador.
MODO CO TADOR. Parecido al modo temporizador, pero la señal 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 demás una interrupción.
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 interrupción
de comparación de igualdad.
MODO GE ERACIÓ DE SEÑALES PWM. Permite generar señales PWM (Modulación
por Ancho de Pulso) con resolución de 8, 9 o 10 bits.
DISPO IBLE E
AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535,
AT90C8534.
APLICACIO ES
Generación de señales PWM.
Bases de Tiempo.
Medición de frecuencia.
REGISTROS I VOLUCRADOS
Este periférico esta presente en muchos miembros de la familia AT90X, sin embargo en no
en todos los dispositivos se tienen las mismas prestaciones de este periférico. 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 periférico.
9
10. DISPOSITIVO: AT90S8515
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
TIMSK TOIE1 OCIE1A OCIE1B TICIE1
TIFR TOV1 OCF1A OCF1B ICF1
TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10
TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10
TC T1 Todos Los Bits
OCR1A Todos Los Bits
OCR1B Todos Los Bits
ICR1 Todos Los Bits
DISPOSITIVO: AT90S2313
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
TIMSK TOIE1 OCIE1A TICIE1
TIFR TOV1 OCF1A ICF1
TCCR1A COM1A1 COM1A0 PWM11 PWM10
TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10
TC T1 Todos Los Bits
OCR1A Todos Los Bits
ICR1 Todos Los Bits
DISPOSITIVO: AT90XX2333, AT90XX4433
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
TIMSK TOIE1 OCIE1 TICIE1
TIFR TOV1 OCF1 ICF1
TCCR1A COM11 COM10 PWM11 PWM10
TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10
TC T1 Todos Los Bits
OCR1 Todos Los Bits
ICR1 Todos Los Bits
10
11. DISPOSITIVO: AT90XX4434, AT90XX8535
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
TIMSK TICIE1 OCIE1A OCIE1B TOIE1
TIFR ICF1 OCF1A OCF1B TOV1
TCCR1A COM1A1 COM1A0 COM1B1 COM1B0 PWM11 PWM10
TCCR1B ICNC1 ICES1 CTC1 CS12 CS11 CS10
TC T1 Todos Los Bits
OCR1A Todos Los Bits
OCR1B Todos Los Bits
ICR1 Todos Los Bits
DISPOSITIVO: AT90C8534
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
TIMSK TOIE1
TIFR TOV1
TCCR1 CS12 CS11 CS10
TC T1 Todos Los Bits
Tabla TC1-1. Registros Involucrados con el Timer/Counter1.
Una explicación 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
12. BIT SIG IFICADO FU CIÓ
TOIE1 Timer/Counter1 “1” Habilita interrupción de sobreflujo del
Overflow Interrupt Timer/Counter1. El Sobreflujo o Desborde se
Enable produce cuando el registro TCNT1 pasa de $ffff
a $0000.
OCE1A Timer/Counter1 Output “1” Habilita la interrupción por comparación de
CompareA Match igualdad ( Contenido de OCR1A igual al de
Interrupt Enable. TCNT1).
OCIE1B Timer/Counter1 Output “1” Habilita la interrupción por comparación de
CompareB Match igualdad (Contenido de OCR1B igual al de
Interrupt Enable. TCNT1).
TICIE1 Timer/Counter1 Capture “1” Habilita la interrupción de captura.
Interrupt Enable
TOV1 Timer/Counter1 “1” indica que el registro TCNT1 se ha
Overflow flag desbordado, genera interrupción si éstas están
habilitadas
OCF1A Output Compare Flag “1” indica que los contenidos de los registros
1A. TCNT1 y OCR1A son iguales. Esto puede
producir una interrupción de comparación de
igualdad.
OCF1A Output Compare Flag “1” indica que los contenidos de los registros
1B. TCNT1 y OCR1B son iguales. Esto puede
producir una interrupción de comparación de
igualdad.
ICF1 Input Capture Flag. “1” indica que el contenido de TCNT1 ha sido
transferido al registro ICR1. Puede producir una
interrupción.
IC C1 Input Capture1 Noise “1” Habilita el cancelador de ruido para la
Canceler. captura. Para que un flanco en el pin ICP genere
la captura, se toman cuatro muestras, que deben
ser todas válidas 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.
ICES1 Input Capture Edge “1” Captura en flanco descendente presentado en
Select. el pin ICP.
“0” Captura en flanco ascendente presentado en
el pin ICP.
En la captura, el contenido de TCNT1 se
transfiere a ICR1.
Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1.
Continua...
12
13. Continuación...
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. Función 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 Registro contador de 16 bits, formado por
TCNT1H y TCNT1L.
OCR1A Registro de 16 bits, formado por OCR1AH y
OCR1AL. Se compara continuamente con
TCNT1.
OCR1B Registro de 16 bits, formado por OCR1BH y
OCR1BL. Se compara continuamente con
TCNT1.
ICR1 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.
Tabla TC1-3. Función 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 periférico cuenta pulsos
externos, presentados en el pin T1 del microcontrolador, trabaja en modo contador. En la
Tabla TC1-5 se puede observar el número de pin T1 para cada dispositivo.
Para configurar el periférico 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
14. CS12 CS11 CS10 EFECTO
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 más común es hacer TCNT1 = $0000, pero puede ser cualquier otro valor
válido. 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 interrupción de sobre flujo (cuando el registro TCNT1 se
desborda), habilite la interrupción utilizando el bit TOIE1 del registro TIMSK.
TIMSK<TOIE1>=”1”. En caso de no utilizar la interrupción, ponga este bit en “0”.
4. Limpie el bit TOV1 del registro TIFR.
5. Establezca la fuente de la señal de reloj. Ver Tabla TC1-4.
6. Habilite interrupciones globales.
SREG<I>=”1”
I.S.R.
Si la interrupción está habilitada, el CPU salta a la dirección vector de interrupción de este
periférico 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 instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la posición 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 interrupción siguiente se producirá en un
tiempo menor.
14
15. DISPOSITIVO VECTOR DIRECCIO PI T1
AT90S4414 7 $006 2 (PDIP)
AT90S8515 7 $006 2
AT90S2313 6 $005 9
AT90S2333 6 $005 11
AT90LS2333 6 $005 11
AT90S4433 6 $005 11
AT90LS4433 6 $005 11
AT90S4434 9 $008 2 (PDIP)
AT90LS4434 9 $008 2 (PDIP)
AT90S8535 9 $008 2 (PDIP)
AT90LS8535 9 $008 2 (PDIP)
AT90C8534 4 $003 -
Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow.
MODO CAPTURA
En este modo de operación, 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 efectúa 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
ICES1 por
“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
16. 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 interrupción de captura (habilitarla), active el bit TICIE1 del
registro TIMSK.
TIMSK<TICIE1>=”1”.
En caso de no necesitar atender la interrupción ponga este bit en cero.
Si la interrupción es habilitada, cada vez que se produzca una captura el CPU saltará
hacia el vector de interrupción correspondiente.
5 Establezca el valor del registro TCNT1.
6 Establezca la fuente de la señal de reloj. Ver Tabla TC1-4
7 Habilite interrupciones globales.
SREG<I>=”1”
I.S.R.
Si las interrupciones globales y la interrupción del modo de captura están habilitadas, el
CPU saltará a la dirección vector de interrupción 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 instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra
realmente la ISR.
DISPOSITIVO VECTOR DIRECCIO PI ICP
(PDIP)
AT90S4414 4 $003 31
AT90S8515 4 $003 31
AT90S2313 4 $003 11
AT90S2333 4 $003 14
AT90LS2333 4 $003 14
AT90S4433 4 $003 14
AT90LS4433 4 $003 14
AT90S4434 6 $005 20
AT90LS4434 6 $005 20
AT90S8535 6 $005 20
AT90LS8535 6 $005 20
AT90C8534 - - -
Tabla TC1-8 Vector de Interrupción 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).
16
17. 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 idéntico al del registro OCR1A, el pin OC1A del
microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-9, según
el valor de los bits COM1A1 y COM1A0.
COM1A1 COM1A0 EFECTO
0 0 Desconecta el periférico
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 en”1” 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 idéntico al del registro
OCR1B, el pin OC1B del microcontrolador puede realizar alguna de las acciones indicadas
en la Tabla TC1-10, según el valor de los bits COM1B1 y COM1B0.
COM1B1 COM1B0 EFECTO
0 0 Desconecta el periférico
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 en”1” 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 número de pin OC1A y OC1B para cada dispositivo.
17
18. 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. Número de pin correspondiente a OC1A y OC1B.
SECUE CIA DE CO FIGURACIÓ MODO COMPARADOR DE IGUALDAD.
1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario)
SREG<I> =”0”
2 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a
OCR1AL).
3 Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a
OCR1BL).
4 Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el
registro OCR1A, active el bit OCIE1A del registro TIMSK.
TIMSK< OCIE1A >=”1”. En caso de no necesitar atender la interrupción ponga este bit
en cero.
5 Si requiere atender la interrupción de comparación de igualdad (habilitarla) para el
registro OCR1B, active el bit OCIE1B del registro TIMSK.
TIMSK< OCIE1B >=”1”. En caso de no necesitar atender la interrupción ponga este bit
en cero.
6 Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7 Habilite interrupciones globales.
SREG<I>=”1”
I.S.R.
Si las interrupciones globales y la interrupción del modo de comparación están habilitadas,
el CPU saltara a la dirección vector de interrupción correspondiente cada vez que el valor
actual del registro TCNT1 sea idéntico al valor del registro OCR1A o al de OCR1B.
Si programa en ensamblador, deberá colocar una instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la dirección de memoria donde se encuentra
realmente la ISR.
DISPOSITIVO VECTOR DIRECCIÓ VECTOR DIRECCIÓ
COMPARACIÓ COMPARACIÓ COMPARACIÓ COMPARACIÓ
18
19. DE IGUALDAD DE IGUALDAD DE IGUALDAD DE IGUALDAD
CO OCCR1A CO OCCR1A CO OCCR1B CO OCCR1B
AT90S4414 5 $004 6 $005
AT90S8515 5 $004 6 $005
AT90S2313 5 $004 - -
AT90S2333 5 $004 - -
AT90LS2333 5 $004 - -
AT90S4433 5 $004 - -
AT90LS4433 5 $004 - -
AT90S4434 7 $006 8 $007
AT90LS4434 7 $006 8 $007
AT90S8535 7 $006 8 $007
AT90LS8535 7 $006 8 $007
AT90C8534 - - - -
Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del
Timer/Counter1.
MODO GE ERADOR DE SEÑALES PWM (MODULACIÓ POR A CHO DE
PULSO)
Los microcontroladores de la familia AVR contienen los circuitos necesarios para generar
señales PWM.
El archivo TCNT1, en este modo de operación se comporta como un contador cíclico
ascendente y descendente. Primero TCNT1 comienza su cuenta ascendente desde $0000
hasta llegar a un VALOR MÁXIMO, y después 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 señal
PWM.
19
20. COM1x1 COM1x0 EFECTO SOBRE EL PI OC1x
0 0 Sin efecto
0 1 Sin efecto
1 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 número de pin correspondiente para cada dispositivo de la
familia AVR.
La resolución de la señal PWM puede ser de 8, 9 o 10 bits, según se configure en los bits
PWM11 y PWM10 del registro TCCR1A. La Tabla TC1-14 muestra las posibles
combinaciones.
PWM11 PWM10 EFECTO
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 MÁXIMO al que llega el registro TCNT1 está en función de la resolución de la
señal PWM. La Tabla TC1-15 muestra los valores máximos de TCNT1, la frecuencia y la
resolución de la señal PWM
20
21. MÁXIMO
FRECUE CIA
VALOR RESOLUCIÓ
DE LA SEÑAL
DE (BITS)
PWM
TC T1
f Τ1
255 8
510
f Τ1
511 9
1022
f Τ1
1023 10
2046
Tabla TC1-15. Frecuencia de la Señal PWM, Valores máximos de TCNT1, y
Resolución. T1 es la frecuencia a la que se incrementa TCNT1.
SECUE CIA DE CO FIGURACIÓ MODO PWM.
1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario).
SREG<I> =”0”
2 Establezca el valor del registro OCR1A. (Escriba primero a OCR1AH y luego a
OCR1AL). Este valor determina el ciclo útil de la señal PWM en el pin OC1A.
3 Establezca el valor del registro OCR1B. (Escriba primero a OCR1BH y luego a
OCR1BL). Este valor determina el ciclo útil de la señal PWM en el pin OC1B
4 Seleccione el modo normal o invertido de señal PWM. Ver Tabla TC1-13.
5 Seleccione la resolución de la señal PWM. Ver Tabla TC1-14.
6 Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7 Habilite interrupciones globales.
SREG<I>=”1”
I.S.R.
En modo PWM el periférico Timer/Counter1 genera la interrupción de sobre flujo normal
como en el modo Temporizador.
21
22. IMPLA TACIÓ .
La secuencia de configuración, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los
ejemplos de implantación como referencia.
TIMER/COU TER 1 MODO TEMPORIZADOR.
En aras de la claridad el código no está optimizado ni en tamaño 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 interrupción.
;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección
;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 interrupción.
;**********************************************
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
23. ;PASO2
ldi r17,0 ;Inicia TCNT1 con valor 0
out TCNT1H,R17 ;Primero escribir en TCNT1H
out TCNT1L,R17 ;despues escribir en TCNT1L
;PASO3
in r17,TIMSK ;Habilita interrupción
ori r17,(1<<TOIE1) ;del TIMER/COUNTER1
out TIMSK,r17 ;TIMSK<TOIE1>=1
;PASO 4
in r17,TIFR ;Limpia posible
ori r17,(1<<TOV1) ;interrupción anterior
out TIFR,r17 ;TIFR<TOV1>=0
;PASO 5 ;Selecciona el origen de la
ldi r17,1 ;señal de reloj
out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ.
;PASO 6
sei ;SREG<7>=1. int. habilitadas
loop: ;Espera hasta que
nop ;se generen interrupciones.
nop
nop
rjmp loop ;loop infinito
TIMER/COU TER 1 MODO CAPTURA.
En aras de la claridad el código no está optimizado ni en tamaño 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
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección
;donde se encuentra RESET
.org $003 ;vector de TIMER/COUNTER1 Captura
rjmp ISR_CAPT ;redireccionado a TIMER1_ISR_CAPT
;**********************************************
23
24. ;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 interrupción.
;**********************************************
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 interrupción
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: ;Espera hasta que
nop ;se generen interrupciones.
24
25. nop
nop
rjmp loop ;loop infinito
TIMER/COU TER 1 MODO GE ERADOR DE SEÑALES PWM.
En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad.
El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo
Generador de señales PWM.
;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección
;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. Máximo 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
26. ;PASO 5
in r17,TCCR1A ;Selecciona la resolución.
ori r17,(0x03) ;10 Bits.
out TCCR1A,r17
;PASO 6
ldi r17,1 ;señal de reloj
out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ.
;PASO 7
sei ;SREG<7>=1. int. habilitadas
loop: ;Por los pines OC1A y OC1B
nop ;se generan señales PWM
nop
nop
rjmp loop ;loop infinito
TIMER/COU TER 1 MODO COMPARADOR DE IGUALDAD.
En aras de la claridad el código no está optimizado ni en tamaño 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
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $000 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección
;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
27. ;**********************************************
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 Interrupción
ori r17,(1<<OCIE1A) ;de Comparacion de Igualdad
out TIMSK,r17
;PASO 5
in r17,TIMSK ;Habilita Interrupción
ori r17,(1<<OCIE1B) ;de Comparacion de Igualdad
out TIMSK,r17
;PASO 6
ldi r17,1 ;señal de reloj
out TCCR1B,r17 ;Se incrementará TCNT1 en cada pulso de RELOJ.
;PASO 7
sei ;SREG<7>=1. int. habilitadas
loop: ;Por los pines OC1A y OC1B
nop ;se generan señales PWM
nop
nop
rjmp loop ;loop infinito
27
29. OMBRE DEL PERIFÉRICO: TIMER/COU TER0.
FU CIO AMIE TO GE ERAL
Un temporizador (Timer) es un periférico que se encarga generar un evento (interrupción)
cada vez que ha pasado cierto intervalo de tiempo. La interrupción 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 señal
de reloj que alimente al mismo. En la familia de microcontroladores AVR, dicha señal de
reloj puede provenir del exterior o ser generada internamente. Cuando la señal 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 específica del dispositivo. Un temporizador cuya señal 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
Medición de intervalos de tiempo.
Generación de bases de Tiempo.
Tacómetro 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
30. El significado de cada bit y su función se puede observar en la Tabla TC0-2.
BIT significado FU CIÓ
CS02 a CS00 Clock Select0 bits 2,1 Selecciona
y0 el origen y el pre escalamiento de la
señal de RELOJ para el
Timer/Counter0. Ver Tabla TC0-3.
MSB a LSB Bit más significativo a bit menos
significativo del contador del
Timer/Counter0.
TOIE0 Timer/Counter0 TOIE0=“1” Habilita interrupción del
Overflow Interrupt Timer/Counter0.
Enable TOIE0=“0” Deshabilita Interrupción
del Timer/Counter0.
TOV0 TOV0 se pone en “1” cuando el
Timer/Counter0 produce la
interrupción de sobreflujo.
Tabla TC0-2. Bits y función 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
función de contar de manera ascendente. Por ser un registro de 8 bits, cuando llega a su
máximo valor 255 ($ff) e intenta incrementarse se desborda, y esto puede producir una
interrupción, 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
31. CS02 CS01 CS00 ORIGE
Y
PREESCALAMIE TO
DE LA SEÑAL DE
RELOJ.
0 0 0 DETENID, NO CUENTA.
0 0 1 1/fosc (más rápido)
0 1 0 8/osc
0 1 1 64/osc
1 0 0 256/fosc
1 0 1 1024/fosc (más lento)
Terminal T0,
1 1 0 flanco descendente. (modo
contador).
Terminal T0,
1 1 1 flanco ascendente.
(modo contador).
TABLA TC0-3. Origen de la señal de reloj y pre escalamiento.
Cuando este periférico 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. Localización de pin T0 para la familia AT90X.
31
32. 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 interrupción del TIMER/COUNTER 0, Si
requiere interrupciones. En caso contrario ponga ese bit en”0”.
4.- Haga TIFR<TOV0>=”1". Limpia posible interrupción falsa.
5.- Ponga SREG<I>=1. (Bit 7 del registro SREG). Habilita interrupciones.
6.- Seleccione el origen de la señal de RELOJ para el TIMER/COUNTER0. Ver Tabla
TC0-3. Ejemplo:
TCCR0 =0 hace que este periférico 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 más
rápida en la que este periférico genera interrupciones.
TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma
más lenta en la que este periférico genera interrupciones (con RELOJ interno).
TCCR0=6 hace que el TCNT0 se incremente con cada flanco negativo (cuando la
señal pasa de “1” a “0”) aplicado en la terminal T0 del microcontrolador.
I.S.R.
El CPU salta a la dirección vector de interrupción de este periférico 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 instrucción de salto (rjmp) en la dirección
del vector de interrupción para re direccionar a la posición 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 interrupción 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 interrupción, al
atenderse la ISR el hardware lo realiza.
32
33. DISPOSITIVO DIRECCIÓ VECTOR
AT90S1200 $002 4
AT90S2313 $006 7
AT90S2323 $002 3
AT90LS2323 $002 3
AT90S2343 $002 3
AT90LS2343 $002 3
AT90S2333 $006 7
AT90LS2333 $006 7
AT90S4433 $006 7
AT90LS4433 $006 7
AT90S4414 $007 8
AT90S8515 $007 8
Tabla TC0-5. Vector de interrupción para Timer/Counter 0
IMPLA TACIÓ .
La secuencia de configuración, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programación, solo tome los
ejemplos de implantación como referencia.
TIMER/COU TER 0 MODO TEMPORIZADOR.
En aras de la claridad el código no está optimizado ni en tamaño 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 generarán cada 65
micro segundos aproximadamente.
;Timer/Counter0 Modo Temporizador
;*****************************************************************
.include "1200def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;*****************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección 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
34. 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 interrupción.
;************************************************************************
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 interrupción
ori r17,(1<<TOIE0) ;del TIMER/COUNTER0
out TIMSK,r17 ;TIMSK<TOIE0>=1
;PASO 4
in r17,TIFR ;Limpia posible
ori r17,(1<<TOV0) ;interrupción anterior
out TIFR,r17 ;TIFR<TOV0>=0
;PASO 5
sei ;SREG<7>=1. int. habilitadas
;PASO 6 ;Selecciona el origen de la
ldi r17,1 ;señal 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
35. OTAS DE CO FIGURACIÓ .
Para este periférico los cambios más importantes en el programa son en el paso 6, es aquí
donde se le indica al periférico el origen de la señal de RELOJ. Consulte TABLA TC0-3 y
sustituya el valor que requiera en la línea de código ldi r17,1 del paso 6.
35
37. OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL.
DESCRIPCIÓ GE ERAL.
Un circuito Convertidor Analógico Digital – ADC- es integrado en algunos
microcontroladores para procesamiento de señales analógicas. El Convertidor Analógico
Digital integrado en los microcontroladores de la familia AVR es tipo aproximación
sucesiva y tienen una resolución de 10 bits. La frecuencia máxima de muestreo es 15
KSPS (15000 Muestras Por Segundo aproximadamente). Otras características son las
siguientes: ±2 LSB, 0.5 LSB INL, Tiempo de conversión 65-260 uS, Cancelador de ruido
integrado, rango de entrada Rail to Rail.
El ADC puede ser configurado en dos modos de operación:
♦ Modo de una Sola Conversión. Se tiene que iniciar manualmente cada
conversión.
♦ Modo en Conversión Continua. Las conversiones se realizan de manera
repetida automáticamente.
DISPO IBLE E
AT90xS4434, AT90xS8535, AT90xS2333, AT90xS4433.
APLICACIO ES
Sistemas de adquisición de señales analógicas, Sistemas de Control Digital, etc.
REGISTROS I VOLUCRADOS
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
ADMUX - - - - - 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
38. El significado de cada bit y su función se puede observar en la Tabla ADC-2.
BIT SIG IFICADO FU CIÓ
MUX2 Analog Channel Select Ver Tabla ADC-3.
MUX1 Analog Channel Select Ver Tabla ADC-3.
MUX0 Analog Channel Select Ver Tabla ADC-3.
ADPS0 ADC Prescaler Select Bits.Ver Tabla ADC-4
ADPS1 ADC Prescaler Select Bits.Ver Tabla ADC-4
ADPS2 ADC Prescaler Select Bits.Ver Tabla ADC-4
ADIE ADC Interrupt Enable “1” Habilita la interrupción de
Conversión Completa.
ADIF ADC Interrupt Flag Se establece a “1” cuando una
Conversión ha terminado.
ADFR ADC Free Run Select “1” Selecciona Modo en Conversión
Continua.
“0” Selecciona Modo de una Sola
Conversión.
ADSC ADC Start Conversion Se debe escribir un “1” en este bit para
iniciar la conversión.
ADE ADC Enable “1” Habilita al ADC.
Tabla ADC-2. Bits de los registros especiales utilizados para el ADC.
La entrada del ADC tiene un circuito Muestreador Retenedor, que mantiene la señal
invariante una vez que ha comenzado la conversión. El número de entradas analógicas
conectadas al ADC, a través de un multiplexor analógico varía de un microcontrolador a
otro, siendo ocho el número máximo. La conversión analógica a digital se realiza sobre un
solo canal o entrada analógica 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.
CA AL
MUX2 MUX1 MUX0 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. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del
registro ADMUX.
38
39. La Tabla ADC-4 muestra la posición de las entradas o canales analógicos 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. Localización de las entradas para el ADC en la familia AVR.
(EMPAQUETADO DIP).
Para realizar las conversiones analógico a digital, el circuito ADC requiere de una señal se
reloj (AD Clock) que se deriva del oscilador principal, la frecuencia de la señal AD Clock
debe ser mayor a 50Hz y menor a 200KHz. Si se selecciona la frecuencia más alta,
aumentará también la velocidad de conversión, pero la precisión disminuirá, esto es, a
mayor frecuencia, menor precisión. Para establecer la frecuencia de la señal AD Clock se
utilizan los bits ADPS2, ADPS1 y ADPS0 del registro ADCSR. La Tabla ADC-5 muestra
las frecuencias posibles.
ADPS2 ADPS1 ADPS0 Frecuencia
0 0 0 FOSC
2
0 0 1 FOSC
2
0 1 0 FOSC
4
0 1 1 FOSC
8
1 0 0 FOSC
16
1 0 1 FOSC
32
1 1 0 FOSC
64
1 1 1 FOSC
128
Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la
selección de la señal AD Clock.
SECUE CIA DE CO FIGURACIÓ ADC.
39
40. 1.- Deshabilite interrupciones. Recomendado pero no necesario.
2.- Configure como entrada los pines del microcontrolador que utilizará como entradas
analógicas.
3.- Seleccione la frecuencia de la señal AD Clock. Ver Tabla ADC-5.
4.- Seleccione el modo de operación:
Modo de una Sola Conversión ADCSR<ADFR>=”0”
Modo de Conversión Continua ADCSR<ADFR>=”1”
5.- Si lo requiere, habilite la interrupción del ADC. Por lo general sí se habilita la
interrupción.
ADCSR<ADIE>=”1”
6.- Limpie posible interrupción falsa del ADC, para esto escriba un “1” en el bit ADIF del
registro ADCSR.
7.- Seleccione el canal de entrada analógico deseado. Ver Tabla ADC-3 y Tabla ADC-4.
8.- Habilite el ADC.
9.- Habilite interrupciones globales.
10.- Inicie conversión.
ADCSR<ADSC>=1”
Para Modo de una Sola Conversión es necesario iniciar cada una después de que el
ADC ha terminado.
En Modo de Conversión Continua se ejecuta la correspondiente ISR cada vez que el
ADC termina una conversión y automáticamente 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 Conversión y habilitar la interrupción.
2. Entrar a modo de espera (IDLE)
3. Al terminar una conversión el ADC, se ejecutará la ISR.
I.S.R.
La Tabla ADC-6 muestra los vectores y direcciones de interrupción del ADC. La
interrupción sucede cada vez que se termina una conversión analógico a digital. Si
programa en ensamblador necesitará redireccionar hacia donde realmente se
encuentre la ISR.
DISPOSITIVO VECTOR DIRECCIO
AT90xS4434 15 $00E
AT90xS8535 15 $00E
AT90xS2333 12 $00B
AT90xS4433 12 $00B
Tabla ADC-6. Vectores de interrupción para el ADC.
40
41. IMPLA TACIO
En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en
velocidad.
El siguiente programa muestra como configurar al ADC en Modo de Conversión Continua.
;CONVERTIDOR ANALOGICO DIGITAL
;Modo Conversión Continua
;************************************************************
.include "4434def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección donde se encuentra RESET
;************************************************************
.org ADCCaddr ;Vector de ADC conversión 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 Analógicas
;PASO3
cbi ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock
sbi ADCSR,ADPS1 ;es fosc/4
cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4
sbi ADCSR,ADFR ;Modo Conversión Continua
;PASO5
41
42. sbi ADCSR,ADIE ;Habilita Int ADC
;PASO6
sbi ADCSR,ADIF ;Limpia Posible Interrupción 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 conversión.
loop:
nop
nop
rjmp loop ;loop infinito
El siguiente programa muestra como configurar al ADC en Modo de una Sola Conversión.
;CONVERTIDOR ANALOGICO DIGITAL
;Modo una Sola Conversión
;************************************************************
.include "4434def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección donde se encuentra RESET
;************************************************************.org ADCCaddr
;Vector de ADC conversión 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
43. ;************************************************************
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 Analógicas
;PASO3
cbi ADCSR,ADPS2 ;Frecuencia de la señal ADC Clock
sbi ADCSR,ADPS1 ;es fosc/4
cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4
cbi ADCSR,ADFR ;Modo Conversión Continua
;PASO5
sbi ADCSR,ADIE ;Habilita Int ADC
;PASO6
sbi ADCSR,ADIF ;Limpia Posible Interrupción 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 conversión.
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
45. OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO.
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 analógico está conectada
directamente al bit ACO del registro ACSR.
DISPO IBLE E
AT90S8515, AT90S1200, AT90S2313, 90S2333,AT90LS2333, AT90S4433,
AT90LS4433.
APLICACIO ES
Detección picos de señales analógicas.
Control de potencia por ángulo de disparo con Tiristores.
Conversión analógico a digital.
REGISTROS I VOLUCRADOS
DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535.
OMBRE
B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
ACSR ACD ACO ACI ACIE ACIC ACIS1 ACIS0
Tabla CA-1A. Registros Involucrados con el Comparador Analógico.
DISPOSITIVO AT90S1200.
OMBRE B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
ACSR ACD ACO ACI ACIE ACIS1 ACIS0
Tabla CA-1B. Registros Involucrados con el Comparador Analógico.
DISPOSITIVO AT90XX2333, AT90XX4433.
OMBRE B7 B6 B5 B4 B3 B2 B1 B0
REGISTRO
ACSR ACD AINBG ACO ACI ACIE ACIC ACIS1 ACIS0
Tabla CA-1C. Registros Involucrados con el Comparador Analógico.
45
46. El significado de cada bit y su función se puede observar en la Tabla CA-2.
BIT SIG IFICADO FU CIÓ
ACD Analog Comparator “1” Apaga al comparador analógico.
Disable. “0” Enciende comparador analógico.
ACO Analog comparator Conectado de manera directa a la
Output. salida del comparador analógico.
ACI Analog Comparator “1” indica que se ha producido una
Interrupt Flag. interrupción debida del comparador
analógico . Ver bits ACIS1 y ACIS0.
ACIE Analog Comparator “1” Habilita interrupción del
Interrupt Enable. comparador analógico.
ACIC Analog Comparator “1” Hace que la captura del
Input Capture Enable. Timer/Counter1 sea activada por el
comparador analógico.
ACIS1 Analog Comparator Ver Tabla CA-3.
Interrupt Mode
Select.
ACIS0 Analog Comparator Ver Tabla CA-3.
Interrupt Mode
Select.
AI BG Analog Comparator “1” Habilita la referencia interna. En
BandGap Select este caso un voltaje de 1.22 ±0.05V se
aplica en la entrada positiva (AIN0)
del comparador, sustituyendo a la
señal proveniente del exterior.
“0” La señal proveniente del exterior
se aplica a la entrada AIN0 del
comparador analógico.
Tabla CA-2. Bits de los registros especiales utilizados para el comparador
analógico.
La salida del comprador analógico – conectada al bit ACO del registro ACR- tendrá
valor “1” siempre que la señal en el pin AIN0 sea mayor a la de AIN1. En caso contrario la
salida será “0”.
La interrupción del comparador analógico 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 interrupción del comparador analógico, como se
muestra en la Tabla CA-3.
46
47. MOTIVO DE
ACIS1 ACIS0 GE ERACIÓ DE
I TERRUPCIÓ
0 0 La salida del comparador
analógico cambia de estado.
0 1 Reservado.
1 0 La salida del comparador
analógico produce un flanco
negativo.
1 1 La salida del comparador
analógico produce un flanco
positivo.
Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generación
de interrupción del Comparador Analógico.
La localización de los pines AIN0 y AIN1 de cada elemento de la familia AVR se muestra
en la Tabla CA-4.
AI 0 AI 1
DISPOSITIVO
(in +) (in -)
AT90S1200 PB0 PB1
(PIN 12) (PIN 13)
AT90S2313 PB0 PB1
(PIN 12) (PIN 13)
AT90XX2333 PD6 PD7
(PIN 12) (PIN 13)
AT90XX4433 PD6 PD7
(PIN 12) (PIN 13)
AT90S8515 PB 2 PB 3
(PIN 3) (PIN 4)
AT90XX4414 PB 2 PB 3
(PIN 3) (PIN 4)
AT90XX8535 PB 2 PB 3
(PIN 3) (PIN 4)
Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR.
EMPAQUETADO DIP).
SECUE CIA DE CO FIGURACIÓ COMPARADOR A ALÓGICO.
1 Deshabilite interrupciones globales.
SREG<I>=”0”
2 Deshabilite la interrupción del comparador analógico (Siempre que cambie la
configuración de este periférico, lo recomendable es deshabilitar su interrupción).
ACSR<ACIE>=”0”
47
48. 3 Configure los pines AIN1 y AIN0 como entradas.
4 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.
5 Seleccione el evento que generará la interrupción. Ver Tabla CA-3.
6 Si requiere producir un evento de captura (ver capitulo Timer/Counter1) ponga el bit
ACIC en “1”. En caso contrario póngalo en “0”.
7 Habilite el comparado analógico
ACSR<ACD>=”1”.
8 Si lo requiere, habilite la interrupción del comparador analógico 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 además,
las interrupciones globales han sido habilitadas, el CPU salta a la dirección mostrada en la
Tabla CA-5.
DISPOSITIVO VECTOR DIRECCIO
AT90S1200 5 $003
AT90S2313 11 $00A
AT90S4414 13 $00C
AT90S8515 13 $00C
AT90XX2333 14 $00D
AT90XX4433 14 $00D
AT90XX4434 17 $010
Tabla CA-5. Vectores de interrupción para el comprador analógico.
48
49. IMPLA TACIO
En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en
velocidad.
El programa siguiente configura al comparador analógico 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
;Sustitúyalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la dirección 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
50. ;PASO5
in r17,ACSR ;Se generara la interrupción en cada
ori r17,0x02 ;flanco descendente de la salida del
out ACSR,r17 ;Comparador Analogico (bit ACO)
;PASO6
; in r17,ACSR
; ori r17,(1<<ACIC) ;Si desa habilitar el evento de captura
; out ACSR,r17 ;descomente esto
;PASO7
in r17,ACSR ;Habilita al comparador Analogico
andi r17,0x7f ;ACD="0"
out ACSR,r17
;PASO8
in r17,ACSR ;Habilita int del Comparador
ori r17,(1<<ACIE) ;Analogico
out ACSR,r17
sei
loop:
nop
nop
nop
rjmp loop ;loop infinito
50
52. OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER).
DESCRIPCIÓ GE ERAL.
Este periférico permite que el microcontrolador se reinicie automáticamente 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
efectúa mediante una instrucción 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 periférico
Perro Guardián. Los tres bits menos significativos de este registro permiten establecer el
52