ASDRÚBAL LÓPEZ CHAU.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "ASDRÚBAL LÓPEZ CHAU."

Transcripción

1 ASDRÚBAL LÓPEZ CHAU.

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

3 CONTENIDO I TRODUCCIÓ... 7 OMBRE DEL PERIFÉRICO: TIMER/COU TER DESCRIPCIÓN GENERAL DISPONIBLE EN... 9 APLICACIONES... 9 REGISTROS INVOLUCRADOS... 9 MODO TEMPORIZADOR Y MODO CONTADOR SECUENCIA DE CONFIGURACIÓN MODO TEMPORIZADOR Y CONTADOR I.S.R MODO CAPTURA SECUENCIA DE CONFIGURACIÓN MODO CAPTURA I.S.R MODO COMPARADOR DE IGUALDAD SECUENCIA DE CONFIGURACIÓN MODO COMPARADOR DE IGUALDAD I.S.R MODO GENERADOR DE SEÑALES PWM (MODULACIÓN POR ANCHO DE PULSO) SECUENCIA DE CONFIGURACIÓN MODO PWM I.S.R IMPLANTACIÓN TIMER/COUNTER 1 MODO TEMPORIZADOR TIMER/COUNTER 1 MODO CAPTURA TIMER/COUNTER 1 MODO GENERADOR DE SEÑALES PWM TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD OMBRE DEL PERIFÉRICO: TIMER/COU TER FUNCIONAMIENTO GENERAL DISPONIBLE EN APLICACIONES REGISTROS INVOLUCRADOS SECUENCIA DE CONFIGURACIÓN I.S.R IMPLANTACIÓN TIMER/COUNTER 0 MODO TEMPORIZADOR NOTAS DE CONFIGURACIÓN OMBRE DEL PERIFÉRICO: ADC- CO VERTIDOR A ALÓGICO DIGITAL. 37 DESCRIPCIÓN GENERAL DISPONIBLE EN APLICACIONES REGISTROS INVOLUCRADOS SECUENCIA DE CONFIGURACIÓN ADC I.S.R IMPLANTACION OMBRE DEL PERIFÉRICO: COMPARADOR A ALÓGICO DESCRIPCIÓN GENERAL DISPONIBLE EN

4 APLICACIONES REGISTROS INVOLUCRADOS DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX DISPOSITIVO AT90S DISPOSITIVO AT90XX2333, AT90XX SECUENCIA DE CONFIGURACIÓN COMPARADOR ANALÓGICO I.S.R IMPLANTACION OMBRE DEL PERIFÉRICO: PERRO GUARDIÁ (WATCHDOG TIMER) DESCRIPCIÓN GENERAL DISPONIBLE EN APLICACIONES REGISTROS INVOLUCRADOS FUNCIÓN SECUENCIA DE CONFIGURACIÓN WDT IMPLANTACIÓN OMBRE DEL PERIFÉRICO: SPI - I TERFAZ SERIAL PERIFERICA DESCRIPCIÓN GENERAL DISPONIBLE EN APLICACIONES REGISTROS INVOLUCRADOS FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO MAESTRO FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO ESCLAVO FASE Y POLARIDAD DE LA SEÑAL DE RELOJ SECUENCIA DE CONFIGURACIÓN SPI I.S.R IMPLANTACION OMBRE DEL PERIFÉRICO: UART - U IVERSAL ASY CHRO OUS RECEIVER A D TRA SMITTER DESCRIPCIÓN GENERAL DISPONIBLE EN APLICACIONES REGISTROS INVOLUCRADOS RECEPCIÓN Y TRANSMISIÓN DE DATOS SELECCIÓN DEL BAUD RATE EJEMPLO NUMERICO SECUENCIA DE CONFIGURACIÓN UART I.S.R IMPLANTACION GLOSARIO BIBLIOGRAFÍA

5 TABLAS Tabla TC1-1. Registros Involucrados con el Timer/Counter Tabla TC1-2. Bits y función de los registros especiales para el Timer/Counter Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter Tabla TC1-3. Función de los Registros Especiales de 16 Bits asociados con el Timer/Counter Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro TCNT Tabla TC1-5 Vector de Interrupción para Timer/Counter1 Overflow Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B Tabla TC1-8 Vector de Interrupción para el evento de captura del Timer/Counter Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin OC1A Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin OC1B Tabla TC1-11. Número de pin correspondiente a OC1A y OC1B Tabla TC1-12 Vector de Interrupción para el evento de comparación de igualdad del Timer/Counter Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o B) Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A 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 TCNT Tabla TC0-1. Registros involucrados con el Timer/Counter Tabla TC0-2. Bits y función de los registros especiales para el Timer/Counter TABLA TC0-3. Origen de la señal de reloj y pre escalamiento Tabla TC0-4. Localización de pin T0 para la familia AT90X Tabla TC0-5. Vector de interrupción para Timer/Counter Tabla ADC-1A. Registros Involucrados con ADC Tabla ADC-1B. Registros Involucrados con ADC Tabla ADC-1C. Registros Involucrados con ADC Tabla ADC-2. Bits de los registros especiales utilizados para el ADC Tabla ADC-3. Selección canal de entrada con los bits MUX2, MUX1 y MUX0 del registro ADMUX Tabla ADC-4. Localización de las entradas para el ADC en la familia AVR. (EMPAQUETADO DIP) Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la selección de la señal AD Clock Tabla ADC-6. Vectores de interrupción para el ADC Tabla CA-1A. Registros Involucrados con el Comparador Analógico Tabla CA-1B. Registros Involucrados con el Comparador Analógico Tabla CA-1C. Registros Involucrados con el Comparador Analógico Tabla CA-2. Bits de los registros especiales utilizados para el comparador analógico

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 Tabla CA-4. Localización de los pines AIN0 y AIN1 en la familia AVR. EMPAQUETADO DIP) Tabla CA-5. Vectores de interrupción para el comprador analógico Tabla WDT-1A. Registros involucrados Tabla WDT-1B. Registros involucrados Tabla WDT-2. Origen de la señal de reloj y pre escalamiento para el perro guardián Tabla SPI-1A. Registros Involucrados con SPI Tabla SPI-1B. Registros Involucrados con SPI Tabla SPI-1C. Registros Involucrados con SPI Tabla SPI-2. Bits de los registros especiales utilizados para el SPI Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la señal de Clock Tabla SPI-4. Localización de los pines MISO, MOSI, SCK y SS en la familia AVR. (EMPAQUETADO DIP) Figura SPI-1. Efecto del bit CPHA sobre la señal SCK Tabla SPI-5. Vectores de interrupción para el SPI Tabla UART-1. Registros Involucrados con UART Tabla UART-2. Bits de los registros especiales utilizados UART Tabla UART-3. Localización de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP) Tabla UART-4. Valores más comunes de Baud Rate Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal Tabla UART-6. Vectores de interrupción para UART

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. (1) Los microcontroladores AVR de ATMEL que se tratan en este libro son los siguientes: AT90S1200, AT90S2313, AT90xS2323, AT90xS2343, AT90xS2333,AT90xS4433, AT90S8515, AT90S4414, AT90xS4434, AT90xS8535, AT90xS

8 8

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 REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 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 REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 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 REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 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 REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 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 REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 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 Overflow Interrupt Enable 1 Habilita interrupción de sobreflujo del Timer/Counter1. El Sobreflujo o Desborde se produce cuando el registro TCNT1 pasa de $ffff OCE1A Timer/Counter1 Output CompareA Match Interrupt Enable. OCIE1B Timer/Counter1 Output CompareB Match Interrupt Enable. TICIE1 Timer/Counter1 Capture Interrupt Enable TOV1 Timer/Counter1 Overflow flag OCF1A Output Compare Flag 1A. OCF1A Output Compare Flag 1B. a $ Habilita la interrupción por comparación de igualdad ( Contenido de OCR1A igual al de TCNT1). 1 Habilita la interrupción por comparación de igualdad (Contenido de OCR1B igual al de TCNT1). 1 Habilita la interrupción de captura. 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. 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 Canceler. ICES1 Input Capture Edge Select. 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

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. REGISTROS DE 16 BITS. Tabla TC1-2. Función de los Bits de los registros especiales para el Timer/Counter1. Algunos registros especiales utilizados, tienen una longitud de total 16 bits, y se forman con dos registros de 8 bits cada uno. Para leer cualquiera de los registros mostrados en la Tabla TC1-3, debe primero leerse el byte bajo(l) y luego el alto(h). Para escribir a cualquiera de estos registros, debe primero escribirse el byte alto (H) y luego el bajo (L). TC T1 OCR1A 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 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 TC

14 CS12 CS11 CS10 EFECTO El registro TCNT1 no cambia. Timer/Counter1 en STOP TCNT1 se incrementa a la velocidad de CK TCNT1 se incrementa a la velocidad de CK/ TCNT1 se incrementa a la velocidad de CK/ TCNT1 se incrementa a la velocidad de CK/ TCNT1 se incrementa a la velocidad de CK/ TCNT1 se incrementa en cada flanco negativo presentado en el pin T 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 Limpie el bit TOV1 del registro TIFR. 5. Establezca la fuente de la señal de reloj. Ver Tabla TC 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 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 AT90S $006 2 (PDIP) AT90S $006 2 AT90S $005 9 AT90S $ AT90LS $ AT90S $ AT90LS $ AT90S $008 2 (PDIP) AT90LS $008 2 (PDIP) AT90S $008 2 (PDIP) AT90LS $008 2 (PDIP) AT90C $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) AT90S $ AT90S $ AT90S $ AT90S $ AT90LS $ AT90S $ AT90LS $ AT90S $ AT90LS $ AT90S $ AT90LS $ AT90C 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 AT90S AT90S AT90S AT90S AT90S AT90LS AT90S AT90LS AT90C 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 TC 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 COMPARACIÓ DIRECCIÓ COMPARACIÓ VECTOR COMPARACIÓ DIRECCIÓ COMPARACIÓ 18

19 DE IGUALDAD CO OCCR1A DE IGUALDAD CO OCCR1A DE IGUALDAD CO OCCR1B DE IGUALDAD CO OCCR1B AT90S $004 6 $005 AT90S $004 6 $005 AT90S $ AT90S $ AT90LS $ AT90S $ AT90LS $ AT90S $006 8 $007 AT90LS $006 8 $007 AT90S $006 8 $007 AT90LS $006 8 $007 AT90C 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 FRECUE CIA DE LA SEÑAL PWM f Τ1 510 f Τ f Τ MÁXIMO VALOR DE TC T1 RESOLUCIÓ (BITS) 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 TC Seleccione la resolución de la señal PWM. Ver Tabla TC Seleccione la fuente de la señal de reloj para el registro TCNT1. Ver Tabla TC 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 6 ldi r17,1 ;Se incrementa TCNT1 en cada ;ciclo del oscilador principal out TCCR1B,r17 ; ;PASO 7 sei ;SREG<7>=1. int. habilitadas loop: nop ;Espera hasta que ;se generen interrupciones. 24

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 loop: nop nop nop rjmp loop ;SREG<7>=1. int. habilitadas ;Por los pines OC1A y OC1B ;se generan señales PWM ;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 loop: nop nop nop rjmp loop ;SREG<7>=1. int. habilitadas ;Por los pines OC1A y OC1B ;se generan señales PWM ;loop infinito 27

28 28

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 y 0 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 TOV0 Timer/Counter0 Overflow Interrupt Enable TOIE0= 1 Habilita interrupción del Timer/Counter0. TOIE0= 0 Deshabilita Interrupción del Timer/Counter0. 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 TC

31 CS02 CS01 CS00 ORIGE Y PREESCALAMIE TO DE LA SEÑAL DE RELOJ DETENID, NO CUENTA /f osc (más rápido) / osc / osc /f osc /f osc (más lento) Terminal T0, flanco descendente. (modo contador) Terminal T0, 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 AT90S AT90S AT90S AT90LS AT90S AT90LS AT90S AT90LS AT90S AT90LS AT90S AT90S AT90S AT90LS AT90S AT90LS AT90C 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 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

36 36

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 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 REGISTRO ADCSR B7 B6 B5 B4 B3 B2 B1 B0 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. MUX2 MUX1 MUX0 CA AL SELECCIO ADO 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 AT90xS (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) AT90xS (PA0) (PA1) (PA2) (PA3) (PA4) (PA5) (PA6) (PA7) AT90xS (PC0) (PC1) (PC2) (PC3) (PC4) (PC5) - - AT90xS (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 F OSC F OSC F OSC F OSC F OSC F OSC F OSC F OSC 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 Seleccione el modo de operación: Modo de una Sola Conversión ADCSR<ADFR>= 0 Modo de Conversión Continua ADCSR<ADFR>= Si lo requiere, habilite la interrupción del ADC. Por lo general sí se habilita la interrupción. ADCSR<ADIE>= 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 Habilite el ADC. 9.- Habilite interrupciones globales 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 AT90xS $00E AT90xS $00E AT90xS $00B AT90xS $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 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

44 44

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 Disable. 1 Apaga al comparador analógico. 0 Enciende comparador analógico. ACO Analog comparator Output. Conectado de manera directa a la salida del comparador analógico. ACI Analog Comparator Interrupt Flag. 1 indica que se ha producido una interrupción debida del comparador analógico. Ver bits ACIS1 y ACIS0. ACIE Analog Comparator 1 Habilita interrupción del Interrupt Enable. ACIC Analog Comparator Input Capture Enable. ACIS1 Analog Comparator Interrupt Mode Select. ACIS0 Analog Comparator Interrupt Mode Select. AI BG Analog Comparator BandGap Select comparador analógico. 1 Hace que la captura del Timer/Counter1 sea activada por el comparador analógico. Ver Tabla CA-3. Ver Tabla CA-3. 1 Habilita la referencia interna. En 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 ACIS1 ACIS0 MOTIVO DE 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. DISPOSITIVO AI 0 AI 1 (in +) (in -) AT90S1200 PB0 (PIN 12) PB1 (PIN 13) AT90S2313 PB0 (PIN 12) PB1 (PIN 13) AT90XX2333 PD6 (PIN 12) PD7 (PIN 13) AT90XX4433 PD6 (PIN 12) PD7 (PIN 13) AT90S8515 PB 2 (PIN 3) PB 3 (PIN 4) AT90XX4414 PB 2 (PIN 3) PB 3 (PIN 4) AT90XX8535 PB 2 (PIN 3) PB 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 AT90S $003 AT90S $00A AT90S $00C AT90S $00C AT90XX $00D AT90XX $00D AT90XX $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

51 51

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 DEL ARCHIVO. BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 FU CIÓ 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

53 máximo intervalo de tiempo que puede ocurrir entre dos instrucciones WDR para evitar una interrupción, es decir, con estos tres bits se controla el limite máximo de tiempo que con el que se cuenta para restablecer el contador interno del Perro Guardián, antes de que el microcontrolador se reinicie. La Tabla WDT-2 muestra las posibles combinaciones de los bits WDP2, WDP1 y WDP0. El bit WDTOE del registro WDTCR ayuda a prevenir una desactivación accidental del Perro Guardián. Para activar al Perro Guardián, simplemente escriba un 1 al bit WDE. Para desactivarlo siga los siguientes pasos (excepto para AT90S1200): (a) Escriba al mismo tiempo un 1 en los bits WDTOE y WDE del registro WDTCR. (b) En seguida, antes de cuatro ciclos de reloj, escriba un 0 al bit WDE. WDP2 WDP1 WDP0 I TERVALO DE TIEMPO A 5 v (mili segundos) I TERVALO DE TIEMPO A 3 v (mili segundos) ÚMERO DE CICLOS DEL CO TADOR I TERO DEL PERRO GUARDIA. (K CICLOS) Tabla WDT-2. Origen de la señal de reloj y pre escalamiento para el perro guardián. SECUE CIA DE CO FIGURACIÓ WDT. 1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario) SREG<I> = 0 2 Seleccione el intervalo de tiempo. Ver Tabla WDT-2. 3 Habilite el Perro Guardián. WDTCR<WDE>= 1 A partir del momento de habilitar al Perro Guardián, cuenta con el intervalo de tiempo especificado en la Tabla WDT-2, para ejecutar una instrucción WDR. En caso de NO ejecutar la instrucción WDR, el microcontrolador se reiniciará. 4 Habilite interrupciones globales. SREG<I>= 1 53

54 IMPLA TACIÓ. En aras de la claridad el código no está optimizado ni en tamaño ni en velocidad. 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. ;************************************************************.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 ;************************************************************ RESET: ;inicio de programa. ;************************************************************;ldi r16,high(ramend) ;Descomente para dispositivos ;con RAM mayor 256 Bytes ; out SPH,r16 ; ldi r16,low(ramend) ; out SPL,r16 ;************************************************************;PASO1 ;PASO1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO2 ldi r17,0 out WDTCR,r17 ;Watch Dog Timer se ;reinicia cada 15 ms. ;PASO3 in r17,wdtcr ori r17,(1<<wde) ;Habilita Watch Dog Timer out WDTCR,r17 ;PASO4 sei ;Habilita interrupciones. loop: ;Como No se ejecuta nop ;nunca la instruccion WDR nop ;el microcontrolador nop ;se reiniciará. rjmp loop ;loop infinito WDR ;nunca se ejecuta 54

55 55

56 OMBRE DEL PERIFÉRICO: SPI - I TERFAZ SERIAL PERIFERICA. DESCRIPCIÓ GE ERAL Este periférico permite al microcontrolador comunicarse de manera serial con otros dispositivos externos así como con otros microcontroladores. El tipo de comunicación es bi-direccional del tipo asíncrona y con una alta velocidad de transferencia. Por favor, lea la sección REGISTROS INVOLUCRADOS de este capitulo para una explicación más detallada. DISPO IBLE E AT90xS2333, AT90xS4433, AT90S8515,AT90S4414, AT90Xs4434 y AT90Xs8535. APLICACIO ES Comunicaciones seriales con dispositivos electrónicos (ADC, Memorias, etc.) o entre varios microcontroladores. REGISTROS I VOLUCRADOS OMBRE REGISTRO SPCR B7 B6 B5 B4 B3 B2 B1 B0 SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0 Tabla SPI-1A. Registros Involucrados con SPI OMBRE B7 B6 B5 B4 B3 B2 B1 B0 REGISTRO SPSR SPIF WCOL Tabla SPI-1B. Registros Involucrados con SPI. OMBRE REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 SPDR MSB LSB Tabla SPI-1C. Registros Involucrados con SPI. El significado de cada bit y su función se puede observar en la Tabla SPI-2. 56

57 BIT SIG IFICADO FU CIÓ SPIE SPI Interrupt Enable 1 Habilita interrupción del SPI 0 La deshabilita. SPE SPI Enable 1 Habilita al Periférico SPI 0 Lo deshabilita. DORD Data Order Especifica el orden en que se transmiten los datos. 1 Se envía primero el LSB 0 Se envía primero el MSB MSTR Master/Slave Select Especifica el modo de operación 1 Modo Maestro 0 Modo Esclavo CPOL Clock Polarity Especifica la polaridad de la señal de Clock (SCK). 1 SCK Se mantiene en ALTO ( 1 ) cuando esta en estado de Espera (Idle). 0 SCK Se mantiene en BAJO ( 0 ) cuando esta en estado de Espera (Idle). CPHA Clock Phase Especifica la fase de la señal SCK con respecto los datos. Ver Figura SPI-1. SPR1 SPI Clock Rate Select Ver Tabla SPI-3 SPR0 SPI Clock Rate Select Ver Tabla SPI-3 SPIF SPI Interrupt Flag Se pone en 1 cuando se completa una Transferencia. WCOL Write Collision Flag Este bit es puesto en 1 si se escribe en el registro SPDR mientras se esta efectuando una transferencia. Tabla SPI-2. Bits de los registros especiales utilizados para el SPI Los bits SPR1 y SPR0 determinan la velocidad de la señal SCK, misma que se encarga de sincronizar las transferencias de datos. SPR1 SPR0 FRECUE CIA DE SCK 0 0 F osc principal /4 0 1 F osc principal / F osc principal / F osc principal /128 Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la señal de Clock. En una comunicación SPI existe siempre un MAESTRO y un ESCLAVO. Generalmente un microcontrolador AVR toma el papel de maestro y cualquier dispositivo conectado a él se comporta como esclavo (Aunque los papeles pueden intercambiarse). Para comunicar un 57

58 dispositivo mediante SPI con un microcontrolador AVR, se utilizan cuatro pines de este último: MISO, MOSI, SCK y SS. La localización de estos pines se muestra en la Tabla SPI-4. DISPOSITIVO MISO MOSI SCK SS AT90xS (PB4) (PB3) (PB5) (PB2) AT90xS (PB4) (PB3) (PB5) (PB2) AT90S (PB6) (PB5) (PB7) (PB4) AT90S (PB6) (PB5) (PB7) (PB4) AT90Xs (PB6) (PB5) (PB7) (PB4) AT90Xs (PB6) (PB5) (PB7) (PB4) Tabla SPI-4. Localización de los pines MISO, MOSI, SCK y SS en la familia AVR. (EMPAQUETADO DIP). FU CIO DE LOS PI ES MOSI, MISO, SCK Y SS E MODO MAESTRO. El pin MOSI del microcontrolador puede ser configurado como entrada o salida en modo MAESTRO, sin embargo, para transmisiones se utiliza como SALIDA de los datos. Por el pin SCK se saca la señal de reloj que sincroniza el envío de bits desde un dispositivo hacia otro. Este pin también puede ser configurado como entrada o salida en modo MAESTRO. El pin MISO se comporta como ENTRADA de los datos seriales cuando el dispositivo AVR se encuentra en modo MAESTRO. Por último, el pin SS puede ser configurado como entrada o como salida. Al ser configurado este pin como SALIDA no afecta el funcionamiento del periférico SPI. Si el pin SS se configura como ENTRADA entonces afecta el sistema SPI de la siguiente manera: El pin SS debe mantenerse siempre en nivel alto ( 1 ), en caso de que este pin pase a nivel bajo ( 0 ) el microcontrolador pasará automáticamente a modo ESCLAVO. Esto evita una posible contención del bus poniendo los pines SCK y MOSI como entradas. Al pasar de modo MAESTRO a modo ESCLAVO por un cambio de nivel en el pin SS, el bit SPIF del registro SPSR es puesto a cero ( 0 ), por lo que se puede generar una interrupción. Como recomendación, si configura al pin SS como entrada, asegúrese de que el microcontrolador permanece en modo MAESTRO antes de transmitir datos. 58

59 FU CIO DE LOS PI ES MOSI, MISO, SCK Y SS E MODO ESCLAVO. El Pin MOSI se comporta como entrada de los datos. El pin SCK se comporta como entrada de la señal de reloj que sincroniza la transferencia de datos. El pin MISO puede ser configurado como entrada o salida en modo ESCLAVO. Normalmente se utiliza como salida de datos. El pin SS en modo ESCLAVO se comporta como entrada. Para poder recibir datos este pin debe mantenerse en estado bajo ( 0 ). En el caso de que el pin SS se encuentre en nivel alto ( 1 ), los tres pines (MOSI, MISO, SCK) se configuran automáticamente como entradas, deshabilitando cualquier recepción de datos. FASE Y POLARIDAD DE LA SEÑAL DE RELOJ. Los bits DORD, CPOL y CPHA del registro SPCR permiten configurar adecuadamente el formato en las transmisiones seriales. El formato requerido dependerá de los circuitos externos conectados al microcontrolador. El bit DORD puesto en 1 hace que en cada palabra transmitida, el bit menos significativo sea enviado primero. Si DORD es puesto a 0, entonces se envía primero el bit mas significativo. El bit CPOL especifica la polaridad de la señal de reloj (SCK): CPOL en 1 hace que SCK se mantenga en ALTO ( 1 ) cuando NO se esté transmitiendo, CPOL en 0 hace que SCK se mantenga en BAJO ( 0 ) cuando no hay transmisiones. El bit CPHA permite adelantar o atrasar la señal reloj SCK con respecto a los datos provenientes del ESCLAVO. La Figura SPI-1 muestra este hecho. Observe que con CPHA en 0 los datos desde el ESCLAVO están preparados antes de que cambie la señal SCK. SCK CYCLE# (FOR REFERENCE) SCK CYCLE# (FOR REFERENCE) MOSI (FROM MASTER) MSB LSB MOSI (FROM MASTER) MSB LSB MISO (FROM SLAVE) MSB LSB MISO (FROM SLAVE) MSB LSB SCK (CPOL=0) SCK (CPOL=0) SCK (CPOL=1) SCK (CPOL=1) SS (TO SLAVE) SS (TO SLAVE) CPHA=0 CPHA=1 Figura SPI-1. Efecto del bit CPHA sobre la señal SCK. 59

60 SECUE CIA DE CO FIGURACIÓ SPI. 1.- Deshabilite interrupciones. Ponga SREG<I>= Configure los pines MOSI, MISO, SCK Y SS de acuerdo a lo requerido en su aplicación. Si el modo de operación del microcontrolador será como MAESTRO, generalmente MOSI es SALIDA, MISO ENTRADA, SCK SALIDA y SS es SALIDA. En modo MAESTRO SS se configura como entrada solo cuando hay más de un microcontrolador conectado al bus SPI (MOSI, MISO y SCK). En modo ESCLAVO todos los pines son configurados automáticamente como entradas, a excepción de MISO que puede configurarse como salida o entrada, aunque generalmente se establece como SALIDA. Recuerde que en modo ESCLAVO los circuitos externos deben poner el pin SS en nivel bajo ( 0 ) para habilitar al SPI. 3.- Establezca el modo de operación: MAESTRO o ESCLAVO. Ver Tabla SPI Establezca los bits DORD, CPOL y CPHA según sea necesario. Ver Tabla SPI-2 y Figura SPI Seleccione la frecuencia de la señal SCK. Ver Tabla SPI Habilite la interrupción del periférico SPI si así lo requiere. Generalmente sí es necesario habilitarla. Ver Tabla SPI-2. SPCR<SPIE>= Habilite el periférico SPI. SPCR<SPE>= Habilite interrupciones globales. SREG<I>= 1. Para transmitir una palabra (8 bits) por medio de SPI, simplemente escriba al registro SPDR el dato correspondiente. Cuando se completa una transmisión o recepción, se genera la interrupción correspondiente (siempre que se encuentren habilitadas las interrupciones). Para evitar corrupción de datos, antes de escribir al registro SPDR verifique que se haya completado la transferencia anterior. Si por alguna razón se escribe al registro SPDR antes de terminar una transmisión, entonces el bit WCOL se establece a 1 indicando un error. Para leer la ultima palabra recibida, lea el valor del registro SPDR. I.S.R. Si las interrupciones globales se encuentran habilitadas y el bit SPIE esta establecido en 1, el periférico SPI puede generar una interrupción en cualquiera de los dos siguientes casos: 1. Cada vez que una transferencia es completada. 2. Si el pin SS esta configurado como entrada y es establecido a 0 por cualquier circuito externo mientras en microcontrolador se encuentra en modo MAESTRO. 60

61 La Tabla SPI-5 muestra el vector de interrupción y la dirección correspondiente para cada dispositivo de la familia AVR. DISPOSITIVO VECTOR DIRECCIO AT90S $008 AT90S $008 AT90xS $007 AT90xS $007 AT90xS $00A AT90Xs $00A Tabla SPI-5. Vectores de interrupción para el SPI. IMPLA TACIO En aras de la claridad, el código presentado no está optimizado en tamaño ni en velocidad. El siguiente programa configura al microcontrolador en modo MAESTRO. El registro r17 contiene un valor que se incrementa y envía a través de SPI. El registro r18 se utiliza para notificar que ya se ha enviado el dato. ;SPI MODO MAESTRO. ;*****************************************************************.include "8515def.inc" ;archivo que contiene los nombres de ;registros especiales. ;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 SPIaddr rjmp SPI_INT ;redireccionado hacia SPI_INT. ;***************************************************************** SPI_INT: ;Solamente pone el registro r18 en $ff, para ;notificar que ya se ha enviado el dato. ldi r18,0xff reti RESET: ;inicio de programa. ;***************************************************************** ldi r16,high(ramend) ;Comente para dispositivos ;con RAM menor a 256 Bytes out SPH,r16 ldi r16,low(ramend) out SPL,r16 61

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

63 63

64 OMBRE DEL PERIFÉRICO: UART - U IVERSAL ASY CHRO OUS RECEIVER A D TRA SMITTER. DESCRIPCIÓ GE ERAL. La UART permite al microcontrolador establecer comunicaciones seriales RS-232 con otros dispositivos. El tipo de comunicación Full Duplex, Asíncrona y las velocidades de transferencia son de hasta b.p.s. DISPO IBLE E AT90S2313, AT90xS2333, AT90xS4433, AT90S4414, AT90S8515AT90xS4434, AT90xS8535. APLICACIO ES La UART es a menudo utilizada para realizar interfaces con computadoras personales. También se utiliza para adquisición de datos mediante la conexión con otros instrumentos tales como multímetros. REGISTROS I VOLUCRADOS OMBRE REGISTRO B7 B6 B5 B4 B3 B2 B1 B0 USR RXC TXC UDRE FE OR UCR RXCIE TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8 UBRR MSB LSB UDR MSB LSB Tabla UART-1. Registros Involucrados con UART El significado de cada bit y su función se puede observar en la Tabla UART-2. BIT significado FU CIÓ RXC UART Receive Complete Este bit se establece a 1 cuando se recibe un dato de manera serial por la UART. TXC UART Transmit Complete Este bit se establece a 1 cuando ha terminado de enviar un dato por la UART.. Mediante este bit la UART indica ya está lista para enviar otro dato. UDRE UART Data Register Empty FE Framing Error Se establece a 1 cuando el bit de STOP es cero. (Un Error en la recepción). OR Overrun Se establece a 1 cuando llega un nuevo dato por la UART y no se leyó el anterior. (Se ha perdido un dato). Continua... 64

65 Continuación... BIT SIG IFICADO FU CIÓ RXCIE RX Complete Interrupt 1 Habilita Interrupción de Recepción. Enable TXCIE TX Complete Interrupt 1 Habilita Interrupción de Transmisión. Enable UDRIE UART Data Register 1 Habilita Interrupción de Registro de Datos Interrupt Enable Vacío. RXE Receiver Enable 1 Habilita la Recepción de datos. TXE Transmitter Enable 1 Habilita la Transmisión de datos. CHR9 9 Bit Characters 1 Hace que la longitud de los datos sea de 9 bits. 0 Longitud de los datos 8 bits. RXB8 Receive Data Bit 8 Si CHR9 es 1 este bit contiene el noveno bit recibido. TXB8 Transmit Data Bit 8 Si CHR9 es 1 este bit será el noveno bit a transmitir. Tabla UART-2. Bits de los registros especiales utilizados UART. RECEPCIÓ Y TRA SMISIÓ DE DATOS. Para recibir o transmitir por la UART se deben de habilitar primero los bits RXEN y TXEN del registro UCR. El registro UDR se utiliza para recibir y transmitir datos por la UART. La longitud de los datos generalmente es de 8 bits, sin embargo, se puede configurar al periférico para que la longitud sea de 9 bits mediante el bit CHR9 del registro UCR. Esto es útil para ciertas aplicaciones donde el noveno bit puede servir como bit de dirección. Para saber si ha llegado un dato por la UART puede utilizarse el bit RXC del registro USR: si este bit se encuentra en 1 puede leerse el registro UDR para recuperar el último dato recibido. Otra opción es habilitar la interrupción de recepción y dentro de la I.S.R. leer el registro UDR. Para transmitir datos por la UART simplemente escriba al registro UDR, esto hará que el periférico realice lo necesario para comenzar a transmitir. Es conveniente revisar el bit TXC, para asegurarse que ya se ha transmitido completamente un dato antes de enviar otro. La recepción y transmisión de datos se realiza por los pines RXD y TXD del microcontrolador, la Tabla UART-3 muestra la posición de estos pines en cada miembro de la familia AVR con empaque DIP. 65

66 DISPOSITIVO TXD RXD 3 2 AT90S2313 (PD1) (PD0) 3 2 AT90xS2333 (PD1) (PD0) 3 2 AT90xS4433 (PD1) (PD0) AT90S8515 (PD1) (PD0) AT90S4414 (PD1) (PD0) AT90xS4434 (PD1) (PD0) 7 6 AT90xS8535 (PB6) (PB5) Tabla UART-3. Localización de los pines TXD y RXD en la familia AVR. (EMPAQUETADO DIP). En las comunicaciones seriales la velocidad de transmisión / recepción de datos es muy importante. Esta velocidad esta relacionada con el Baud Rate. SELECCIÓ DEL BAUD RATE. Para seleccionar el Baud Rate se utiliza el registro especial UBRR. La ecuación (1) muestra la relación entre el valor de Baud Rate y el del registro UBRR. fosc Baud Rate= (1) 16 ( UBRR+ 1) En la ecuación (1) Baud Rate puede tomar cualquier valor, sin embargo los valores más comunes son mostrados en la Tabla UART-4. 66

67 Baud rate Tabla UART-4. Valores más comunes de Baud Rate. En lugar de proporcionar una tabla completa con valores de UBRR, Baud Rate y frecuencias de oscilador principal (f osc ) se mostrará un método para encontrar el valor de UBRR en función de Baud Rate y f osc. Para configurar las transmisiones / recepciones a un Baud Rate específico (Tabla UART-3) proceda como se muestra a continuación. (a) Encuentre el valor de UBRR para un Baud Rate. f osc UBRR= (2) 16( BaudRate) (b) El valor de UBRR encontrado en el paso (a) se redondea. Este valor debe estar entre 1 y 255. (c) Sustituya en la ecuación (1) el valor de UBRR encontrado en el paso (b). Con esto encontrará Baud Rate REAL (d) Calcule el porcentaje de error. Baud Rate % Error = REAL (3) Baud Rate Se recomienda que el porcentaje de error sea menor a 1%. EJEMPLO UMERICO. Suponga que se desea configurar la UART a un Baud Rate de La frecuencia del oscilador (cristal) del microcontrolador es 4MHz (a) UBRR = 1 = ( ) (b) Redondeando se tiene UBRR = (c) Baud Rate REAL = = (12+ 1) 67

68 (d) % Error = = En resumen se tiene Baud Rate 19200, f osc =4MHz, UBRR=12, Error 0.2 %. Como el error es menor a 1% se puede utilizar el valor encontrado de UBRR sin problemas. Algunas frecuencias de osciladores permiten seleccionar valores de Baud Rate con porcentajes de error muy bajos. La Tabla UART-5 muestra algunos ejemplos. f osc = Mhz f osc = Mhz f osc = Mhz BAUD RATE %ERROR UBRR %ERROR UBRR %ERROR UBRR Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. SECUE CIA DE CO FIGURACIÓ UART 1. Deshabilite interrupciones. Recomendado pero no necesario. 2. Configure los pines TXD y RXD como entradas. 3. Configure el Baud Rate. Ver SECCION SELECCIÓN DEL Baud Rate 4. Seleccione la longitud de los datos. Generalmente es 8 bits. UCR<CHR9>= 0 8 bits UCR<CHR9>= 1 9 bits 5. Si su aplicación lo requiere, habilite las interrupciones siguientes: Interrupción de Recepción. UCR<RXCIE>= 1 Interrupción de Transmisión. UCR< TXCIE >= 1 Interrupción de UDR vacío. UCR<UDRIE>= 1 6. Habilite la interrupción transmisión y recepción de datos. Ver Tabla UART Habilite interrupciones globales. Para transmitir un dato por medio de la UART, simplemente escriba al registro UDR el dato correspondiente. Para leer la ultima palabra recibida, lea el valor del registro UDR. 68

69 I.S.R. Para que se generen interrupciones se requiere que se encuentren habilitadas, incluidas las interrupciones globales. Cuando se completa una transmisión, se genera la Interrupción de Transmisión Para evitar corrupción de datos, antes de escribir al registro UDR verifique que se haya completado la transferencia anterior. Cuando se recibe un dato por la UART, se genera la Interrupción de Recepción, si el dato anterior no fue leído, se genera un error de sobreflujo. La Tabla UART-6 muestra el vector de interrupción y la dirección correspondiente para cada dispositivo de la familia AVR. I TERRUPCIÓ DE RECEPCIO I TERRUPCIÓ DE TRA SMISIO I TERRUPCIÓ DE UDR VACIO DISPOSITIVO VECTOR DIRECCIO VECTOR DIRECCIO VECTOR DIRECCIO AT90S $ $009 9 $008 AT90xS $ $00A 10 $009 AT90xS $ $00A 10 $009 AT90S $ $00B 11 $00A AT90S $ $00B 11 $00A AT90xS $00B 14 $00D 13 $00C AT90xS $00B 14 $00D 13 $00C Tabla UART-6. Vectores de interrupción para UART. IMPLA TACIO En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad. El siguiente programa configura a la UART a Baudios. Longitud de 8 Bits, Interrupciones de Recepción y Transmisión habilitadas. f osc es 4MHZ Cada vez que llega un dato por la UART se hace eco. ;-Configuración ;-Manejo Por Interrupciones. ;************************************************************************.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 URXCaddr ;Vector de UART Recepcion completa. rjmp Rx_Completa ;redireccionado..org UDREaddr ;Vector de Registro UDR vacio. 69

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

71 ;PASO 7 sei loop: nop nop rjmp loop ;Habilita Interrupciones Globales ;loop infinito En aras de la claridad, el código presentado no está optimizado ni en tamaño ni en velocidad. El siguiente programa configura a la UART a Baudios. Longitud de 8 Bits,. f osc es 4MHZ Cada vez que llega un dato por la UART se hace eco. ;-Configuración ;-Manejo Por Escaneo. ;************************************************************************.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 ;************************************************************************ RESET: ;inicio de programa. ;************************************************************************ ldi r16,high(ramend) out SPH,r16 ldi r16,low(ramend) out SPL,r16 ;************************************************************************ ;PASO 1 cli ;SREG<I>=0.int. deshabilitadas. ;PASO 2 cbi DDRD,0;Pin RXD como entrada cbi DDRD,1;Pin TXD como entrada ;PASO 3 ldi r17,0x0c;baud Rate=19200 out UBRR,r17; ;PASO 4 cbi UCR,CHR9;Longitud de Datos 8 bits ;PASO 5 cbi UCR,RXCIE;Interrupción de Recepción.NO HABILITADA. cbi UCR,TXCIE;Interrupción de Transmisión. NO HABILITADA. cbi UCR,UDRIE;Interrupción de UDR vacío.no Habilitada. NO HABILITADA. 71

72 ;PASO 6 sbi UCR,TXEN;Habilita Transmisión sbi UCR,RXEN;Habilita Recepción. ;PASO 7 sei ;Habilita Interrupciones Globales loop: nop nop sbis USR,RXC; Llego nuevo Dato? rjmp loop;no, seguir esperando in r18,udr ;Si, guardarlo en r18 out UDR,r18 ;Hacer eco. nop nop rjmp loop ;loop infinito 72

73 GLOSARIO ADC. Convertidor Analógico Digital. Es un dispositivo que convierte una señal Analógica en usa señal digital Analógica, señal. Es una señal definida en un intervalo continuo de tiempo cuya amplitud puede adoptar un intervalo continuo de valores Asíncrona, comunicación. Una forma de comunicación en la cual la información se transmite como un flujo en serie de bits. Cada carácter se codifica como una cadena de bits y se separa por un bit de <<inicio de carácter>> y bit de <<parada>>. A veces se usa un bit de paridad para la detección y corrección de errores. Asíncrono, sistema. Son aquellos que pueden cambiar de estado en cualquier momento en que una o más señales que entran al sistema cambie. AVR. Nombre que le da la empresa ATMEL a su familia de microcontroladores RISC de 8 bits. Oficialmente AVR no tiene ningún significado. Baud Rate. Ver Baudio. Baudio. Los cambios de señal por segundo que se producen en un dispositivo se miden en baudios. Un baudio representa e número de veces que el estado de la línea de comunicación cambia por segundo. Si un dispositivo transfiere un bit por cada cambio de señal entonces la velocidad en baudios y la velocidad de transmisión será la misma. Las técnicas de codificación empleadas representan cada bit con dos o más cambios de señal CPU. Unidad Central de Proceso. Digital, señal. Es una señal en tiempo discreto con amplitud cuantificada. Dicha señal se puede representar mediante una secuencia de números DIP. Dual In Package. Es un tipo encapsulado en el cual existen dos hileras de terminales. Discreto, señal en tiempo. Es una señal definida sólo en valores discretos de tiempo. EIA Electronics Industries Association. Full Duplex. Es un tipo de comunicación serial en la cual el flujo de los datos puede ser en ambos sentidos de manera simultánea. I.S.R. Rutina de Servicio de Interrupción. Es una parte de código que se ejecuta cuando se atiende a una interrupción. I L. Es la desviación de los valores de la función de transferencia real a los valores de una línea recta. Para un ADC las desviaciones son medidas en las transiciones de un paso al siguiente. Interrupción. Es una petición que se hace al CPU para que atienda un evento que acaba de ocurrir. LSB. Una medida de la resolución de un ADC, puesto que define el número de divisiones o unidades del rango analógico total. 1LSB= FSR/(2 n -1) Donde FSR Es la Resolución a Plena Escala y n es el número de Bits de salida del ADC. LSB. Bit Menos Significativo. MSB. Bit Más Significativo. Muestreador retenedor. Es un circuito que toma imágenes instantáneas de una señal eléctrica. Generalmente un circuito Muestreador Retenedor se coloca a la entrada de los ADC. Registro. Conjunto de Bits que son considerados como una sola entidad. Reloj. Señal eléctrica pulsante, generalmente cuadrada con la que se alimenta a un sistema digital para propósitos de sincronía. 73

74 RISC. Reduced Instruction Set code. RS-232. Es un estándar de comunicaciones seriales introducido por la EIA en Serial, comunicación. Consiste en la transmisión de señales a través de un único cable o enlace. Los bits se transmiten secuencialmente, uno tras otro. Serie, comunicación. Ver Serial. Sincronía, comunicación. A diferencia de las comunicaciones asíncronas, se cuenta con un mecanismo de reloj para separar grupos de bits en una transmisión. Tacómetro. Dispositivo para medición de velocidades angulares. Vector, interrupción. Es un número que indica el número de interrupción dentro de una tabla de prioridades dentro del microcontrolador, este número tiene asociada una localidad de memoria a la que la CPU del microcontrolador salta cuando se genera una interrupción. 74

75 BIBLIOGRAFÍA. AT90S/LS2323 & AT90S/LS2343 DATA SHEET. ATMEL. AT90S/LS2333 & AT90S/LS4433 DATA SHEET. ATMEL. AT90S/LS4434 & AT90S/LS8535 DATA SHEET. ATMEL. AT90S1200 DATA SHEET. ATMEL. AT90S2313 DATA SHEET. ATMEL. AT90S4415/8515 DATA SHEET. ATMEL. Lan Times Enciclopedia de Redes Mc Graw Hill. Tom Sheldon Sistema de Monitoreo de Señales Con Salidas Analógicas para Aplicaciones Críticas en Tiempo Real Asdrúbal L. Chau. Tesis de Maestría. Noviembre Sistemas de Control en Tiempo Discreto Segunda Edición. Katsuhiko Ogata.. Pearson Educación. Sistemas Digitales, Principios y Aplicaciones Quinta Edición, Ronald Tocci. Prentice Hall. Understanding Data Converters, Application Report. Texas Instruments

Tema 4: Microcontrolador AT90S2313

Tema 4: Microcontrolador AT90S2313 Tema 4: Microcontrolador AT90S2313 - Sistema de interrupciones y RESET - Mapa de registros de E/S - Registros del sistema - Puertos B y D - Temporizadores - UART - Perro guardián 1 Sistema de control de

Más detalles

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata Muestreo de señales analógicas Principal requerimiento que surge al muestrear una señal continua: Definir el periodo de muestreo con suficiente exactitud. Ajustar el mismo a un valor adecuado de acuerdo

Más detalles

4. Interrupciones Externas, Temporizadores y PWM Microcontroladores

4. Interrupciones Externas, Temporizadores y PWM Microcontroladores 4. Interrupciones Externas, Temporizadores y PWM Microcontroladores M. C. Felipe Santiago Espinosa Noviembre / 2016 Introducción Los AVR tienen una gama amplia de recursos internos. En este capítulo revisaremos

Más detalles

ITSP. Timer 0 del AVR. En la siguiente sección veremos como configurar y utilizar los registros del Timer/Contador 0, así como sus modos de operación.

ITSP. Timer 0 del AVR. En la siguiente sección veremos como configurar y utilizar los registros del Timer/Contador 0, así como sus modos de operación. 6.1 INTRODUCCIÓN Timer 0 del AVR En la siguiente sección veremos como configurar y utilizar los registros del Timer/Contador 0, así como sus modos de operación. En la figura 1 se muestra el diagrama a

Más detalles

Timer Interface Module

Timer Interface Module Timer Interface Module M.C. Jorge Eduardo Ibarra Esquer Timer Interface (TIM) El TIM es un timer de 2 canales que proporciona una referencia de temporización con captura de entrada, comparador de salida

Más detalles

Conceptos básicos de Interrupciones y E/S Atmel

Conceptos básicos de Interrupciones y E/S Atmel Conceptos básicos de Interrupciones y E/S Atmel Taller de Microcontroladores año 212 Optativa de grado y Curso de Posgrado Interrupciones: conceptos básicos Mecanismo de control de flujo implementado en

Más detalles

Arquitectura de los Microcontroladores AVR ATmega32.

Arquitectura de los Microcontroladores AVR ATmega32. Arquitectura de los Microcontroladores AVR ATmega32. 2.1 NUCLEO DEL CPU La principal función del núcleo del CPU es asegurar la correcta ejecución de un programa. El CPU debe ser capaz de acceder a la memoria,

Más detalles

TEMA 20 EL CONVERSOR A/D

TEMA 20 EL CONVERSOR A/D TEMA 20 EL CONVERSOR A/D Introducción Al Conversor Analógico/Digital Los microcontroladores PIC de la familia 16F78x, poseen un conversor A/D de 10 bits de resolución, y con 5 entradas para los dispositivos

Más detalles

TEMPORIZADORES Y WATCHDOG

TEMPORIZADORES Y WATCHDOG Todos los derechos de propiedad intelectual de esta obra pertenecen en exclusiva a la Universidad Europea de Madrid, S.L.U. Queda terminantemente prohibida la reproducción, puesta a disposición del público

Más detalles

INTRODUCCIÓN. Comunicación Serial.

INTRODUCCIÓN. Comunicación Serial. INTRODUCCIÓN La función principal de este tipo de comunicación es la de convertir datos de salida de forma paralela a serial y la de convertir datos de entrada de forma serial a paralela. El acceso al

Más detalles

MICROCONTROLADORES. M. C. Felipe Santiago Espinosa. Abril de 2018

MICROCONTROLADORES. M. C. Felipe Santiago Espinosa. Abril de 2018 1 MICROCONTROLADORES M. C. Felipe Santiago Espinosa Abril de 2018 2 Recursos disponibles Los AVR tienen dos recursos para el manejo de información analógica: Un Convertidor Analógico Digital (ADC) de 10

Más detalles

Programación del Timer1 para la captura de flancos

Programación del Timer1 para la captura de flancos Basic Express Nota de aplicación Programación del Timer1 para la captura de flancos El temporizador Timer1 y el pin de entrada El procesador BasicX incluye un temporizador integrado denominado Timer1.

Más detalles

Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra [email protected] www.desid.escom.ipn.

Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra curso.escom@yahoo.com www.desid.escom.ipn. Interrupciones Timer s Escuela Superior de Cómputo IPN. Departamento de Posgrado Dr. Julio Cesar Sosa Savedra [email protected] www.desid.escom.ipn.mx Definición Definición: Los TIMER's son contadores

Más detalles

PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA

PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA PRODUCTO P05 SOFTWARE EMBEBIDO PARA EL CONTROL DEL CIRCUITO GENERADOR DE CORRIENTE DE LAS FORMAS DE ONDAS PARA ELECTROTERAPIA Actividades: A05-1: Elaboración del diagrama de flujo de las funciones de control

Más detalles

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com

PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com PIC MICRO ESTUDIO Reloj en tiempo real RTCU2 Clave: 719 www.electronicaestudio.com Guía de Operación Reloj en tiempo real Modulo: RTCU2iempo real Clave: 719 El modulo 719 Reloj en tiempo real- utiliza

Más detalles

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores

Aplicaciones de mc Lenguaje C- CC5x-Temporizadores Aplicaciones de mc Lenguaje C- CC5x-Temporizadores Preparado por : Juan Ignacio Huircán Departamento de Ingeniería Eléctrica Universidad de La Frontera Otoño 29 Introducción El µc posee 3 Módulos Timer,

Más detalles

MICROCONTROLADORES. M. C. Felipe Santiago Espinosa. Abril de 2015

MICROCONTROLADORES. M. C. Felipe Santiago Espinosa. Abril de 2015 1 MICROCONTROLADORES M. C. Felipe Santiago Espinosa Abril de 2015 2 Recursos disponibles Los AVR tienen dos recursos para el manejo de información analógica: Un Convertidor Analógico Digital (ADC), éste

Más detalles

La familia PIC18 USB posee 4 timers: Timer0, Timer1, Timer2 y Timer3, cada uno de los cuales tiene sus características únicas.

La familia PIC18 USB posee 4 timers: Timer0, Timer1, Timer2 y Timer3, cada uno de los cuales tiene sus características únicas. 59 5 TIMERS Todos los microcontroladores poseen circuitos temporizadores (timers), los cuales son útiles para: Programar tareas con alta precisión. Contar pulsos externos. Medir intervalos de tiempo. etc.

Más detalles

MICROCONTROLADOR PIC DE MICROCHIP

MICROCONTROLADOR PIC DE MICROCHIP MICROCONTROLADOR PIC DE MICROCHIP PIC16F877-28-PIN 8-BIT CMOS FLASH MICROCONTROLLER PIC16F877: ESTRUCTURA INTERNA Bus de Datos Bus de Datos (programa) Registro de trabajo (acumulador) Conversor A/D Contador/Temporizador

Más detalles

CAPITULO 1 CARACTERÍSTICAS GENERALES DEL MICROCONTROLADOR 8051. menú principal

CAPITULO 1 CARACTERÍSTICAS GENERALES DEL MICROCONTROLADOR 8051. menú principal CAPITULO 1 CARACTERÍSTICAS GENERALES DEL MICROCONTROLADOR 8051 menú principal 1.1 CARACTERÍSTICAS DEL 8051. La Familia de µc-8051 es variada, y se encuentra en diversas presentaciones, la selección de

Más detalles

LABORATORIO DE ELECTRÓNICA DE POTENCIA PRÁCTICA N 3

LABORATORIO DE ELECTRÓNICA DE POTENCIA PRÁCTICA N 3 ESCUELA POLITÉCNICA NACIONAL Campus Politécnico "J. Rubén Orellana R." FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA Carrera de Ingeniería Electrónica y Control Carrera de Ingeniería Eléctrica LABORATORIO

Más detalles

Controlador de Interrupciones (Versión programable) Manual de Usuario

Controlador de Interrupciones (Versión programable) Manual de Usuario Controlador de Interrupciones (Versión programable) Manual de Usuario Índice de contenido 1. Características...2 2.Descripción general...3 3.Descripción funcional...3 4.Estructura Interna...4 4.1 Bloque

Más detalles

PIC16F88. Características

PIC16F88. Características Osciladores PIC16F88. Características Osciladores a cristal: LP, XT y HS hasta 20Mhz Oscilador externo hasta 20Mhz Oscilador interno: 31Khz 8Mhz Periféricos Módulo PWM/CCP CCP (captura/comparación) ->

Más detalles

MICROCONTROLADORES PIC

MICROCONTROLADORES PIC MICROCONTROLADORES PIC LOS TIMER DE LOS 16F87x TEMA EL TIMER 1 CCFF D.P.E. MÓDULO DE PROYECTOS 1 Diagrama de Bloques del TIMER1 CCFF D.P.E. MÓDULO DE PROYECTOS 2 INTRODUCCIÓN El módulo TIMER1 es un temporizador/contador

Más detalles

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA UNIDAD CULHUACAN INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN LABORATORIO DE CIRCUITOS DIGITALES

Más detalles

Manejo de Entrada-Salida. Arquitectura de Computadoras

Manejo de Entrada-Salida. Arquitectura de Computadoras Manejo de Entrada-Salida Arquitectura de Computadoras Agenda 1.2.3.1Módulos de entrada/salida. 1.2.3.2Entrada/salida programada. 1.2.3.3Entrada/salida mediante interrupciones. 1.2.3.4Acceso directo a memoria.

Más detalles

CURSO BÁSICO MICROCONTROLADORES PIC

CURSO BÁSICO MICROCONTROLADORES PIC CURSO BÁSICO MICROCONTROLADORES PIC CONFIGURACIÓN BÁSICA FUSIBLES Los fusibles son palabras de configuración que definen las condiciones de funcionamiento del microcontrolador. Algunos fusibles importantes

Más detalles

V 1.0. Ing. Juan C. Guarnizo B.

V 1.0. Ing. Juan C. Guarnizo B. V 1.0 Ing. Juan C. Guarnizo B. INTRODUCCIÓN... 3 Microcontroladores soportados... 3 DESCRIPCIÓN... 4 1. Entrada de voltaje USB... 4 2. Regulador a 3.3V... 5 3. Pines de control... 5 4. Pines de salida...

Más detalles

El circuito integrado ADC1230, fabricado

El circuito integrado ADC1230, fabricado ADC12130 Conversor A/D serial de 12 bits GUILLERMO RAMOS RAMOS [email protected] Los conversores A/D seriales se caracterizan por su tamaño reducido y bajo costo. El circuito integrado que describimos

Más detalles

Periféricos: Timer. Cesáreo Fernández Martínez Álvaro Sánchez Miralles

Periféricos: Timer. Cesáreo Fernández Martínez Álvaro Sánchez Miralles Periféricos: Timer Cesáreo Fernández Martínez Álvaro Sánchez Miralles Periféricos Dispositivo que tiene el microcontrolador para realizar tareas especificas sin consumir tiempo de CPU. Se encuentran mapeados

Más detalles

MICROCONTROLADORES EJERCICIOS PARA PRACTICAR USANDO TEMPORIZADORES

MICROCONTROLADORES EJERCICIOS PARA PRACTICAR USANDO TEMPORIZADORES MICROCONTROLADORES EJERCICIOS PARA PRACTICAR USANDO TEMPORIZADORES 1. Se desea enviar por el pin PB.0 un pulso negativo de 244µs cuando se reciba un flanco de bajada por el pin INT0. Escribe un programa

Más detalles

PIC16F882/883/884/886/ Funcionamiento de Timer1 6 EL MODULO TMR1 CON PUERTA DE CONTROL Selección de Fuente de reloj

PIC16F882/883/884/886/ Funcionamiento de Timer1 6 EL MODULO TMR1 CON PUERTA DE CONTROL Selección de Fuente de reloj 6.1. Funcionamiento de Timer1 6 EL MODULO TMR1 CON PUERTA DE CONTROL El módulo TMR1 es un temporizador/contador de 16 bits con las siguientes características: Temporizador/Contador de 16 bits (TMR1L:TMR1H)

Más detalles

Manejo de Entrada-Salida. Arquitectura de Computadoras

Manejo de Entrada-Salida. Arquitectura de Computadoras Manejo de Entrada-Salida Arquitectura de Computadoras Agenda 1.2.3.1Módulos de entrada/salida. 1.2.3.2Entrada/salida programada. 1.2.3.3Entrada/salida mediante interrupciones. 1.2.3.4Acceso directo a memoria.

Más detalles

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Curso sobre Microcontroladores Familia HC9S08 de Freescale Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: [email protected] Responsable Area Educación ELKO / ARROW www.elkonet.com

Más detalles

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1

TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 TEMA 5 LA MEMORIA DE DATOS MEMORIA RAM D.P.E. DESARROLLO DE PROYECTOS 1 Estructura De La Memoria Ram (1) La memoria de datos RAM está dividida en dos partes diferenciadas: 1.- Zona SFR o zona de Registros

Más detalles

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación

Taller de Firmware. Introducción al PIC16F877. Facultad de Ingeniería Instituto de Com putación Taller de Firmware Introducción al PIC16F877 Facultad de Ingeniería Instituto de Com putación Contenido Introducción a los microcontroladores PIC. Presentación del PIC 16F877. Introducción a los microcontroladores

Más detalles

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata Ejercicio: construir un datalogger El datalogger o registrador debe sensar la temperatura ambiente cada 1s y guardarla junto a la fecha y hora de adquisición en un archivo.txt alojado en una memoria µsd.

Más detalles

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III

APUNTE DEL 8155 ELECTRÓNICA DIGITAL III APUNTE DEL 8155 ELECTRÓNICA DIGITAL III Revisión 1.1 Marzo, 2011 Interfaz a periférico 8155 Descripción general El chip 8155 es un dispositivo introducido por Intel en 1977. Contiene memoria RAM (SRAM)

Más detalles

CAPITULO 3 MANEJO DE LOS TEMPORIZADORES Y CONTADORES

CAPITULO 3 MANEJO DE LOS TEMPORIZADORES Y CONTADORES CAPITULO 3 MANEJO DE LOS TEMPORIZADORES Y CONTADORES Regreso al menú principal 3. TIMER / CONTADOR. El 85 tiene 2 timer/contadores de 6 bits cada uno, llamados Timer y el Timer respectivamente. Ambos pueden

Más detalles

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits

MICROCONTROLADORES. 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits 1. El PIC 16F84A es un microcontrolador de: a) 16 bits b) 8 bits c) 4 bits d) 32 bits e) 64 bits MICROCONTROLADORES 2. La memoria de programa del PIC 16F84A es de tipo: a) ROM b) OTP c) RAM d) EPROM e)

Más detalles

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE

Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE 25 3 ENTRADA / SALIDA Dependiendo del dispositivo usado, se tienen hasta 5 puertos de entrada/salida disponibles: PORTA PORTB PORTC PORTD PORTE Cada uno de estos puertos es de 8 bits, sin embargo no todos

Más detalles

CARACTERISTICAS DE LOS DIODOS DE PROPÓSITO GENERAL CIRCUITOS RECTIFICADORES DE MEDIA ONDA Y ONDA COMPLETA

CARACTERISTICAS DE LOS DIODOS DE PROPÓSITO GENERAL CIRCUITOS RECTIFICADORES DE MEDIA ONDA Y ONDA COMPLETA UNIVERSIDAD SIMON BOLIVAR DPTO. ELECTRONICA Y CIRCUITOS LABORATORIO DE ELECTRÓNICA EC2014 PRACTICA Nº 1 CARACTERISTICAS DE LOS DIODOS DE PROPÓSITO GENERAL CIRCUITOS RECTIFICADORES DE MEDIA ONDA Y ONDA

Más detalles

Arquitectura de Computadores II Clase #3

Arquitectura de Computadores II Clase #3 Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Registros Repertorio de instrucciones Modos de direccionamiento El stack Formatos de datos Control

Más detalles

Grado en Ingeniería Informática - Ingeniería del Software Estructura de Computadores - Prueba 2 - Junio de 2011

Grado en Ingeniería Informática - Ingeniería del Software Estructura de Computadores - Prueba 2 - Junio de 2011 Apellidos, Nombre: Grado en Ingeniería Informática - Ingeniería del Software Estructura de Computadores - Prueba 2 - Junio de 2011 Problema 1. Realice un programa que calcule la cantidad de números negativos

Más detalles

Laboratorio de Microprocesadores El MICROCONTROLADOR 8051. Diagrama de tiempos de la operación del convertidor ADC0809

Laboratorio de Microprocesadores El MICROCONTROLADOR 8051. Diagrama de tiempos de la operación del convertidor ADC0809 PRACTICA N0. 1 NOMBRE LA PRÁCTICA Aplicación del Microcontrolador 801 (Parte ) OBJETIVO ESPECÍFICO: Implementación de un Sistema de Adquisición de Datos serial con el 801 INTRODUCCIÓN: El corazón del Sistema

Más detalles

Guía de programación PWM. Características de una señal de control con Modulación de Ancho de Pulso.

Guía de programación PWM. Características de una señal de control con Modulación de Ancho de Pulso. Guía de programación PWM. Características de una señal de control con Modulación de Ancho de Pulso. El modulo PWM, se puede emplear para generar una señal a una cierta frecuencia, determinada por la periodicidad

Más detalles

Proyecto 3: CONTROL DE VELOCIDAD DE UN MOTOR DC Y TRANSMISIÓN DE DATOS

Proyecto 3: CONTROL DE VELOCIDAD DE UN MOTOR DC Y TRANSMISIÓN DE DATOS UNIVERSIDAD DEL VALLE DE GUATEMALA COLEGIO UNIVERSITARIO Proyecto 3: CONTROL DE VELOCIDAD DE UN MOTOR DC Y TRANSMISIÓN DE DATOS Guatemala, Abril 2012 Oscar Reyes, Carnet: 09565 Pablo Azurdia, Carnet: 08308

Más detalles

Capítulo 1. Introducción a los PIC de 8 bits

Capítulo 1. Introducción a los PIC de 8 bits Capítulo 1. Introducción a los PIC de 8 bits 1.1 Memorias y Registros Entre los componentes básicos de un microcontrolador podemos definir el contador, sus registros, la memoria, el watchdog timer, el

Más detalles

ITT-327-T Microprocesadores

ITT-327-T Microprocesadores ITT-327-T Microprocesadores Temporizador Programable (PIT) 8254. Temporizador/Contador Programable (PIT) 8254. Es un contador/temporizador programable diseñado para trabajar con los sistemas de microcomputadores.

Más detalles

5. Microcontroladores de 32 bits. (C) 2007 Ibercomp S. A.

5. Microcontroladores de 32 bits. (C) 2007 Ibercomp S. A. 0LFURFRQWURODGRUHVGHELWV Cada vez existen más equipos que incorporan un microcontrolador en su sistema con el fin de aumentar de manera importante sus prestaciones, reducir su tamaño y coste, mejorar su

Más detalles

Sistemas Electrónicos Digitales

Sistemas Electrónicos Digitales Sistemas Electrónicos Digitales Universidad de Alcalá Curso Académico 2014/2015 Curso 3º Cuatrimestre 1º Ejercicio 1 Se dispone de chips de EEPROM de 2Kx8. Realice la ampliación a 8Kx8 manteniendo una

Más detalles

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata

INSTRUMENTACIÓN AVANZADA Departamento de Ingeniería Eléctrica y Electromecánica Facultad de Ingeniería Universidad Nacional de Mar del Plata Ing. Guillermo Murcia Ing. Jorge Luis Strack [email protected] [email protected] Lecto-grabadora de SDcard - Se comunica con Arduino a través del protocolo de comunicación SPI. - Se comanda a

Más detalles

CONVERTIDOR ANALÓGICO DIGITAL del AVR

CONVERTIDOR ANALÓGICO DIGITAL del AVR CONVERTIDOR ANALÓGICO DIGITAL del AVR 9.1 INTRODUCCIÓN Características del Convertidor Analógico Digital: 10 bits de resolución. 0.5 LSB No lineal. ±2 LSB Precisión absoluta. 13 a 260µs de Tiempo de Conversión.

Más detalles

Figura 1. Diagrama de bloques del Timer_A

Figura 1. Diagrama de bloques del Timer_A TIMER_A El Timer_A es un timer/contador de 16 bit con tres registros de captura/comparación. El Timer_A soporta múltiples capturas/comparaciones y temporización de intervalos de tiempo; también genera

Más detalles

TEMA 2. Interrupciones y periféricos básicos

TEMA 2. Interrupciones y periféricos básicos TEMA 2 Interrupciones y periféricos básicos INDICE 1. Interrupciones 1. Fuentes y habilitación de interrupciones 2. Vectores de interrupción 3. Prioridad y anidamiento 4. Registros de configuración 5.

Más detalles

Guía de práctica. Dispositivo

Guía de práctica. Dispositivo Guía de práctica Que queremos hacer? Vamos a hacer el Hello World del mundo de la electrónica que no es más que prender y apagar un LED a intervalos regulares. PROYECTO LAPEGÜE 1 = Prende Dispositivo 0

Más detalles

CAPITULO 6 Interfaz de comunicación con Visual Basic

CAPITULO 6 Interfaz de comunicación con Visual Basic Consecuentemente, se lee un byte desde la dirección en memoria 0 hasta la dirección actual en el momento de la lectura; por último, se resetea la variable ADDRESS.DIR y se habilitan nuevamente las interrupciones

Más detalles

6 MODULACIÓN DE ANCHO DE PULSO (PWM)

6 MODULACIÓN DE ANCHO DE PULSO (PWM) 69 6 MODULACIÓN DE ANCHO DE PULSO (PWM) En el PWM, se produce un pulso rectangular con un ciclo de trabajo determinado (comúnmente producido por un Timer), este ciclo de trabajo puede variar de 0 a 100%.

Más detalles

DIAGRAMA A BLOQUES DE UNA COMPUTADORA

DIAGRAMA A BLOQUES DE UNA COMPUTADORA DIAGRAMA A BLOQUES DE UNA COMPUTADORA BUS DE DATOS: Interconecta los dispositivos de entrada/salida, la memoria RAM y el CPU. BUS DE DIRECCIONES: Se utiliza para direccional las localidades de memoria

Más detalles

Arquitectura y Periféricos

Arquitectura y Periféricos Arquitectura y Periféricos Departamento de Electrónica Fundación San Valero Características fundamentales: Arquitectura RISC avanzada Harvard: 16- bit con 8- bit de datos. 77 instrucciones Desde 18 a 80

Más detalles

INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO APUNTES DE LA MATERIA DE: MICROPROCESADORES Y MICROCONTROLADORES I

INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO APUNTES DE LA MATERIA DE: MICROPROCESADORES Y MICROCONTROLADORES I INSTITUTO TECNOLÓGICO SUPERIOR DE PÁNUCO APUNTES DE LA MATERIA DE: MICROPROCESADORES Y MICROCONTROLADORES I DEPARTAMENTO DE INGENIERÍA ELECTRÓNICA ING. FORTINO VÁZQUEZ ELORZA Documento traducido de la

Más detalles

Diseño Basado en Microcontroladores. Programa Detallado

Diseño Basado en Microcontroladores. Programa Detallado Diseño Basado en Microcontroladores. Programa Detallado Tema 5. Temporizadores e Interrupciones. (4 horas + 8 horas de laboratorio) 5.1.Temporizadores A y B. Modos de funcionamiento. 5.2. Temporizador

Más detalles

PIC 18F45XX CARACTERÍSTICAS GENERALES

PIC 18F45XX CARACTERÍSTICAS GENERALES PIC 18F45XX CARACTERÍSTICAS GENERALES 1. Características generales CPU con arquitectura Harvard (77 instrucciones) Todas las instrucciones constan de 1 sola palabra de 16 bits (2 bytes) excepto las de

Más detalles

GUIA DE EJERCICIOS Nº 8 INSTRUMENTACIÓN AVANZADA

GUIA DE EJERCICIOS Nº 8 INSTRUMENTACIÓN AVANZADA GUIA DE EJERCICIOS Nº 8 INSTRUMENTACIÓN AVANZADA Muestreo de señales alternas con PIC y ARDUINO 1 10.-MUESTREO DE SEÑALES ALTERNAS CON PIC Y ARDUINO Ejercicio 10.1 Determine de manera aproximada la frecuencia

Más detalles

Bus de datos Bus de direcciones Pocos bits, los suficientes para direccionar registros internos (ej: A0 y A1)

Bus de datos Bus de direcciones Pocos bits, los suficientes para direccionar registros internos (ej: A0 y A1) 16-1 Muchas veces los fabricantes de µps también ofrecen periféricos con aplicaciones establecidas que facilitan el hardware del sistema. En general son programables, lo que les permite diferentes modos

Más detalles

Tarjeta Entrenadora EA128 Aplicación académica

Tarjeta Entrenadora EA128 Aplicación académica Tarjeta Entrenadora EA128 Aplicación académica Pfarher Iván [email protected] Universidad Tecnológica Nacional Facultad Regional Paraná Argentina Entre Ríos - Paraná keywords: AVR, kit, tarjeta entrenadora,

Más detalles

Transmisión/recepción analógica y digital a través de fibra óptica, utilizando el entrenador B4530 y B4530Y

Transmisión/recepción analógica y digital a través de fibra óptica, utilizando el entrenador B4530 y B4530Y Práctica 1 Transmisión/recepción analógica y digital a través de fibra óptica, utilizando el entrenador B4530 y B4530Y OBJETIVOS 1. Mostrar al alumno las partes elementales de un sistema de comunicaciones

Más detalles

Microcontrolador Cygnal 8051F040

Microcontrolador Cygnal 8051F040 Microcontrolador Cygnal 8051F040 Ingeniería Técnica Industrial Electrónica. Informática Industrial. Prof. Dr. Alejandro Linares Barranco 1 Microcontrolador Cygnal 8051F040. Contenido 1. Introducción y

Más detalles

CAPITULO VI: Generadores de Sonido

CAPITULO VI: Generadores de Sonido CAPITULO VI GENERADORES DE SONIDOS GENERADOR DE CODIGO MORSE En el circuito de la fig. 6.1 se observa un 555 en configuración de multivibrador astable, funcionando como un práctico oscilador para código

Más detalles

Diagrama a bloques de una computadora

Diagrama a bloques de una computadora Diagrama a bloques de una computadora Memoria Primaria Bus de Datos Bus de Dato s Bus de Direccione s Procesador Bus de Direcciones Memoria Secundaria Unidad de Control ALU Bus Interno Registros Bus de

Más detalles

CUESTIÓN (2 puntos): SOLUCIÓN:

CUESTIÓN (2 puntos): SOLUCIÓN: CUESTIÓN (2 puntos): Escriba las instrucciones en C necesarias para realizar las siguientes operaciones, sin alterar el comportamiento del resto del sistema: a) Configurar el pin PB12 como entrada digital

Más detalles

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Curso sobre Microcontroladores Familia HC9S08 de Freescale Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: [email protected] Capítulo 6.- Módulo Serial Asincrónico de Comunicación

Más detalles

PIC MICRO ESTUDIO Temporizador con el 16F872 Guía de Uso

PIC MICRO ESTUDIO Temporizador con el 16F872  Guía de Uso PIC MICRO ESTUDIO Temporizador con el 16F872 www.electronicaestudio.com Guía de Uso Temporizador con el PIC16F872 Los temporizadores los encontramos en muchos lugares de nuestra vida diaria, generalmente

Más detalles

Contenido MICROCONTROLADORES PIC16F877A Y PIC16F887 / SALVATIERRA. Alfaomega. 3.4 Soporte Muestras... 25

Contenido MICROCONTROLADORES PIC16F877A Y PIC16F887 / SALVATIERRA. Alfaomega. 3.4 Soporte Muestras... 25 Contenido Introducción 1 Parte 1 Conceptos básicos 3 1.0 Componentes de un MCU... 3 1.1 Partes básicas... 3 1.1.1 ALU (Unidad lógica aritmética). 4 1.1.2 I/O (INPUT/OUTPUT)... 4 1.1.3 Memoria (RAM, ROM...

Más detalles

Figura 2. Formato de un dato serie síncrono.

Figura 2. Formato de un dato serie síncrono. ELECTRÓNICA DIGITAL II 1 COMUNICACIÓN SERIE EN EL 8051 En la comunicación serie los datos se transfieren bit por bit. Una interfaz en el microcontrolador los transfiere el dato en paralelo del CPU a serie

Más detalles

Elección de un microcontrolador

Elección de un microcontrolador Elección de un microcontrolador Decisión multivariable. No hay un óptimo evidente Factores: Herramientas de desarrollo Base de conocimientos Precio y disponibilidad Familia versátil y en desarrollo Cantidad

Más detalles

Mapas de Memoria y E/S

Mapas de Memoria y E/S Mapas de Memoria y E/S Sistemas con Microprocesadores http://www.herrera.unt.edu.ar/procesadores Conexiones internas del CPU08 Dentro del mc el CPU08 se vincula con memoria y con los dispositivos de E/S

Más detalles

Diagrama del Conversor Análogo-Digital

Diagrama del Conversor Análogo-Digital Conversor Análogo-Digital (ADC12) del MSPF149 Descripción [1,2] El microcontrolador MSPF149 tiene un conversor análogo-digital (ADC12) con las siguientes características: 12 bits. Tasa de muestreo máxima:

Más detalles

TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES

TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES 12/31/2011 1 TEMA 2: MICROPROCESADORES Y MICROCONTROLADORES Sistemas Digitales basados en Microprocesador Grado en Ingeniería Telemática Raúl Sánchez Reíllo Sistemas Digitales Basados en Microprocesador

Más detalles

Generador de Pulsos. Todas las CPUs disponen de dos generadores PTO/PWM para producir trenes y formas de onda moduladas por ancho de pulsos.

Generador de Pulsos. Todas las CPUs disponen de dos generadores PTO/PWM para producir trenes y formas de onda moduladas por ancho de pulsos. Generador Pulsos PO ( Pulse rain Output: Salida ren Pulsos) PWM (Pulse Width Modulation: : Modulación n por Ancho Pulsos Facultad Ciencias odas las CPUs disponen dos generadores PO/PWM para producir trenes

Más detalles

Guía de Google Cloud Print

Guía de Google Cloud Print Guía de Google Cloud Print Versión A SPA Definición de las notas En esta guía del usuario se utiliza el siguiente estilo de nota: Las notas le indican cómo responder ante situaciones que pueden presentarse,

Más detalles

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús

Microprocesador. Introducción. Instituto Sagrado Corazón de Jesús Microprocesador Introducción El microprocesador es la parte de la computadora diseñada para llevar acabo o ejecutar los programas. Este viene siendo el cerebro de la computadora, el motor, el corazón de

Más detalles

Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553.

Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553. Anexo II: Lógica programada y lógica cableada. Ventajas e inconvenientes. MSP430G2553. 1. Introducción Como se observa a lo largo de este proyecto, en casi todas las tarjetas esclavo recurrimos a usar

Más detalles

COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW

COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW COMUNICACIÓN SERIE ENTRE MICROCONTROLADORES MEDIANTE UART SW En esta práctica se describe la forma de realizar una comunicación serie half-duplex entre dos microcontroladores utilizando UARTs software.

Más detalles

Reset e interrupciones

Reset e interrupciones Reset e interrupciones M.C. Jorge Eduardo Ibarra Esquer Resets e interrupciones Son respuestas a eventos que se presentan durante la ejecución normal de un programa Un reset regresa el microcontrolador

Más detalles

GUÍA RÁPIDA DEL MÓDULO ANALÓGICO CJ1W-MAD42

GUÍA RÁPIDA DEL MÓDULO ANALÓGICO CJ1W-MAD42 GUÍA RÁPIDA DEL MÓDULO ANALÓGICO CJ1W-MAD42 ESTE MANUAL CONTIENE: 1.- CARACTERÍSTICAS Y FUNCIONES 2.- PROCESO DE OPERACIÓN 3.- CONFIGURACIÓN DE ENTRADAS 4.- CONFIGURACIÓN DE SALIDAS 5.- FUNCIÓN DE CONVERSIÓN

Más detalles

Contadores y timers. Contadores y timers. Contadores y timers

Contadores y timers. Contadores y timers. Contadores y timers CLASE 5: DISPOSITIVOS PERIFÉRICOS INTEGRADOS EN ucs Sistemas Embebidos 2018 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Una tarea habitual en Sistemas Embebidos

Más detalles

AUTÓMATAS PROGRAMABLES

AUTÓMATAS PROGRAMABLES AUTÓMATAS PROGRAMABLES Tema 3 Antonio Robles Álvarez Índice Introducción Estructura de un Autómata Programable Modos de operación Ciclo de funcionamiento Elementos de proceso rápido Configuración El estándar

Más detalles

Capítulo 3. Microcontroladores 3.1 Definiciones

Capítulo 3. Microcontroladores 3.1 Definiciones Capítulo 3. Microcontroladores En este capítulo se define el microcontrolador, con una breve semblanza histórica sobre procesadores. Se habla más detenidamente sobre los PICs y se muestran características

Más detalles

Registros SFR vistos hasta ahora: Microcontroladores PIC

Registros SFR vistos hasta ahora: Microcontroladores PIC Registros SFR vistos hasta ahora: Microcontroladores PIC Microcontroladores PIC: Timer Características del Timer TMR0: Cumple básicamente la función de contador de eventos (o divisor de frecuencia). El

Más detalles

CAPITULO XIV TEMPORIZADORES

CAPITULO XIV TEMPORIZADORES TEMPORIZADORES CAPITULO XIV TEMPORIZADORES INTRODUCCION. El circuito temporizador integrado más popular es el 555, introducido primero por los Signetics Corporation. El 555 es confiable, fácil de usar

Más detalles

Enlaces Seriales UART, I2C, SPI

Enlaces Seriales UART, I2C, SPI Comunicaciones, Enlaces Seriales UART, I2C, SPI (Preparen Papel y Lápiz) Diagrama de Bloques Fecha y Hora Entradas Procesamiento Procesamiento Comunicación Comunicación Universidad TransmisiónNacional

Más detalles

Instrucciones de alta velocidad y el tiempo de SCAN. Facultad de Ciencias

Instrucciones de alta velocidad y el tiempo de SCAN. Facultad de Ciencias Operaciones Rápidas R en los S7-200 Instrucciones de alta velocidad y el tiempo de SCAN La duración del SCAN depende del tamaño del programa, el número de E/S y la cantidad de comunicación requerida. Pueden

Más detalles