libro AVR
Short Description
Download libro AVR...
Description
ASDRÚBAL LÓPEZ CHAU.
DEDICATORIA A mi Amada Esposa Lutecia. A Mamá y Papá.
2
CONTENIDO ITRODUCCIÓ ................................................................................................................ 7 OMBRE DEL PERIFÉRICO: TIMER/COUTER 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/COUTER0. ................................................. 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- COVERTIDOR AALÓ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 AALÓGICO............................... 45 DESCRIPCIÓN 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 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 - ITERFAZ 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 - UIVERSAL ASYCHROOUS RECEIVER AD TRASMITTER................................................................................. 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
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
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
ITRODUCCIÓ 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Ó GEERAL. En esta sección se describe el funcionamiento general del periférico. ♦ DISPOIBLE E. Se muestran los microcontroladores en los que esta incluido cada periférico. ♦ APLICACIOES. Son mencionadas algunas aplicaciones donde puede ser utilizado. ♦ REGISTROS IVOLUCRADOS. Se describe el efecto de cada bit de los registros especiales involucrados con cada periférico. ♦ SECUECIA DE COFIGURACIÓ. 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. ♦ IMPLATACIÓ. 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, AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414, AT90xS4434, AT90xS8535, AT90xS8534. (1)
7
8
OMBRE DEL PERIFÉRICO: TIMER/COUTER 1. DESCRIPCIÓ GEERAL. 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. DISPOIBLE E AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535, AT90C8534. APLICACIOES Generación de señales PWM. Bases de Tiempo. Medición de frecuencia. REGISTROS IVOLUCRADOS 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
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 TCT1 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 TCT1 Todos Los OCR1A Todos Los ICR1
B5
B4
B3
B2
B1
B0
CTC1
CS12
PWM11 CS11
PWM10 CS10
B3
B2
B1
B0
CS12
PWM11 CS11
PWM10 CS10
TICIE1 ICF1
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 TCT1 Todos Los Bits OCR1 Todos Los Bits ICR1
10
TICIE1 ICF1 CTC1
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 TCT1 Todos Los Bits OCR1A Todos Los Bits OCR1B Todos Los Bits ICR1
DISPOSITIVO: AT90C8534 OMBRE B7 B6 REGISTRO TIMSK TIFR TCCR1 Todos Los TCT1
B5
B4
B3
B2
B1
B0
TOIE1 TOV1 CS12
CS11
CS10
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
BIT SIGIFICADO TOIE1 Timer/Counter1 Overflow Interrupt Enable
FUCIÓ “1” Habilita interrupción 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 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 Overflow flag
OCF1A Output Compare Flag 1A.
OCF1A Output Compare Flag 1B.
ICF1
Input Capture Flag.
ICC1 Input Capture1 Noise Canceler.
ICES1
Input Capture Edge Select.
“1” indica que el registro TCNT1 se ha desbordado, genera interrupción si éstas están habilitadas “1” indica que los contenidos de los registros TCNT1 y OCR1A son iguales. Esto puede producir una interrupción de comparación de igualdad. “1” indica que los contenidos de los registros TCNT1 y OCR1B son iguales. Esto puede producir una interrupción de comparación de igualdad. “1” indica que el contenido de TCNT1 ha sido transferido al registro ICR1. Puede producir una interrupción. “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 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. “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.
Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter1. Continua... 12
Continuación... BIT SIGIFICADO FUCIÓ 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). TCT1 OCR1A
OCR1B
ICR1
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.
Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el Timer/Counter1.
MODO TEMPORIZADOR Y MODO COTADOR. 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
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
SECUECIA DE COFIGURACIÓ MODO TEMPORIZADOR Y COTADOR. 1. Deshabilitar las interrupciones globales (Recomendado). SREG=”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=”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=”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
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 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 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 CACELADOR DE ICC1 RUIDO “0” Deshabilitado “1” Habilitado Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B.
15
SECUECIA DE COFIGURACIÓ MODO CAPTURA. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG =”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=”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=”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) $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 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
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 0
COM1A0 EFECTO 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 0
COM1B0 EFECTO 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
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. SECUECIA DE COFIGURACIÓ MODO COMPARADOR DE IGUALDAD. 1 2 3 4
5
6 7
Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG =”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 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. 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. Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4. Habilite interrupciones globales. SREG=”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
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 Interrupción para el evento de comparación de igualdad del Timer/Counter1.
MODO GEERADOR DE SEÑALES PWM (MODULACIÓ POR ACHO 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
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 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. 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 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
FRECUECIA DE LA SEÑAL PWM f
MÁXIMO VALOR RESOLUCIÓ DE (BITS) TCT1
Τ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. SECUECIA DE COFIGURACIÓ MODO PWM. 1 2 3 4 5 6 7
Deshabilite Interrupciones Globales. (Recomendado pero no necesario). SREG =”0” 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. 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 Seleccione el modo normal o invertido de señal PWM. Ver Tabla TC1-13. Seleccione la resolución de la señal PWM. Ver Tabla TC1-14. Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC1-4. Habilite interrupciones globales. SREG=”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
IMPLATACIÓ. 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/COUTER 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=0.int. deshabilitadas.
22
;PASO2 ldi out out
r17,0 TCNT1H,R17 TCNT1L,R17
;Inicia TCNT1 con valor 0 ;Primero escribir en TCNT1H ;despues escribir en TCNT1L
in ori out 4 in ori out 5 ldi out 6 sei
r17,TIMSK ;Habilita interrupción r17,(1
View more...
Comments