You are on page 1of 75

ASDRBAL LPEZ CHAU.

2











DEDICATORIA
A mi Amada Esposa Lutecia.
A Mam y Pap.
3
CONTENIDO
ITRODUCCI ................................................................................................................ 7
OMBRE DEL PERIFRICO: TIMER/COUTER 1. .................................................. 9
DESCRIPCIN GENERAL. ............................................................................................. 9
DISPONIBLE EN .............................................................................................................. 9
APLICACIONES ............................................................................................................... 9
REGISTROS INVOLUCRADOS ...................................................................................... 9
MODO TEMPORIZADOR Y MODO CONTADOR. .................................................... 13
SECUENCIA DE CONFIGURACIN MODO TEMPORIZADOR Y CONTADOR... 14
I.S.R. ................................................................................................................................. 14
MODO CAPTURA .......................................................................................................... 15
SECUENCIA DE CONFIGURACIN MODO CAPTURA. ......................................... 16
I.S.R. ................................................................................................................................. 16
MODO COMPARADOR DE IGUALDAD. ................................................................... 17
SECUENCIA DE CONFIGURACIN MODO COMPARADOR DE IGUALDAD. ... 18
I.S.R. ................................................................................................................................. 18
MODO GENERADOR DE SEALES PWM (MODULACIN POR ANCHO DE
PULSO) ............................................................................................................................ 19
SECUENCIA DE CONFIGURACIN MODO PWM. .................................................. 21
I.S.R. ................................................................................................................................. 21
IMPLANTACIN. ........................................................................................................... 22
TIMER/COUNTER 1 MODO TEMPORIZADOR. ........................................................ 22
TIMER/COUNTER 1 MODO CAPTURA. ..................................................................... 23
TIMER/COUNTER 1 MODO GENERADOR DE SEALES PWM. ........................... 25
TIMER/COUNTER 1 MODO COMPARADOR DE IGUALDAD. ............................... 26
OMBRE DEL PERIFRICO: TIMER/COUTER0. ................................................. 29
FUNCIONAMIENTO GENERAL .................................................................................. 29
DISPONIBLE EN ............................................................................................................ 29
APLICACIONES ............................................................................................................. 29
REGISTROS INVOLUCRADOS. ................................................................................... 29
SECUENCIA DE CONFIGURACIN ........................................................................... 32
I.S.R. ................................................................................................................................. 32
IMPLANTACIN. ........................................................................................................... 33
TIMER/COUNTER 0 MODO TEMPORIZADOR. ........................................................ 33
NOTAS DE CONFIGURACIN. ................................................................................... 35
OMBRE DEL PERIFRICO: ADC- COVERTIDOR AALGICO DIGITAL. 37
DESCRIPCIN GENERAL. ........................................................................................... 37
DISPONIBLE EN ............................................................................................................ 37
APLICACIONES ............................................................................................................. 37
REGISTROS INVOLUCRADOS .................................................................................... 37
SECUENCIA DE CONFIGURACIN ADC. ................................................................. 39
I.S.R. ................................................................................................................................. 40
IMPLANTACION ............................................................................................................ 41
OMBRE DEL PERIFRICO: COMPARADOR AALGICO. .............................. 45
DESCRIPCIN GENERAL. ........................................................................................... 45
DISPONIBLE EN ............................................................................................................ 45
4
APLICACIONES ............................................................................................................. 45
REGISTROS INVOLUCRADOS .................................................................................... 45
DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535. ................... 45
DISPOSITIVO AT90S1200. ........................................................................................ 45
DISPOSITIVO AT90XX2333, AT90XX4433. ........................................................... 45
SECUENCIA DE CONFIGURACIN COMPARADOR ANALGICO. .................... 47
I.S.R. ................................................................................................................................. 48
IMPLANTACION ............................................................................................................ 49
OMBRE DEL PERIFRICO: PERRO GUARDI (WATCHDOG TIMER). ..... 52
DESCRIPCIN GENERAL. .......................................................................................... 52
DISPONIBLE EN ............................................................................................................ 52
APLICACIONES. ............................................................................................................ 52
REGISTROS INVOLUCRADOS. ................................................................................... 52
FUNCIN ........................................................................................................................ 52
SECUENCIA DE CONFIGURACIN WDT. ................................................................ 53
IMPLANTACIN. ........................................................................................................... 54
OMBRE DEL PERIFRICO: SPI - ITERFAZ SERIAL PERIFERICA. ............. 56
DESCRIPCIN GENERAL ............................................................................................ 56
DISPONIBLE EN ............................................................................................................ 56
APLICACIONES ............................................................................................................. 56
REGISTROS INVOLUCRADOS .................................................................................... 56
FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO MAESTRO. ......... 58
FUNCION DE LOS PINES MOSI, MISO, SCK Y SS EN MODO ESCLAVO. .......... 59
FASE Y POLARIDAD DE LA SEAL DE RELOJ. ..................................................... 59
SECUENCIA DE CONFIGURACIN SPI. ................................................................... 60
I.S.R. ................................................................................................................................. 60
IMPLANTACION ............................................................................................................ 61
OMBRE DEL PERIFRICO: UART - UIVERSAL ASYCHROOUS
RECEIVER AD TRASMITTER. ................................................................................ 64
DESCRIPCIN GENERAL. ........................................................................................... 64
DISPONIBLE EN ............................................................................................................ 64
APLICACIONES ............................................................................................................. 64
REGISTROS INVOLUCRADOS .................................................................................... 64
RECEPCIN Y TRANSMISIN DE DATOS. .............................................................. 65
SELECCIN DEL BAUD RATE.................................................................................... 66
EJEMPLO NUMERICO. ................................................................................................. 67
SECUENCIA DE CONFIGURACIN UART ............................................................... 68
I.S.R. ................................................................................................................................. 69
IMPLANTACION ............................................................................................................ 69
GLOSARIO ......................................................................................................................... 73
BIBLIOGRAFA. ............................................................................................................... 75


5
TABLAS

Tabla TC1-1. Registros Involucrados con el Timer/Counter1. ............................................ 11
Tabla TC1-2. Bits y funcin de los registros especiales para el Timer/Counter1. ............... 12
Tabla TC1-2. Funcin de los Bits de los registros especiales para el Timer/Counter1. ....... 13
Tabla TC1-3. Funcin de los Registros Especiales de 16 Bits asociados con el
Timer/Counter1. ........................................................................................................... 13
Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el registro
TCNT1 .......................................................................................................................... 14
Tabla TC1-5 Vector de Interrupcin para Timer/Counter1 Overflow. ............................... 15
Tabla TC1-6 Efecto del bit ICES1 del registro TCCR1B. ................................................... 15
Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B. .................................................. 15
Tabla TC1-8 Vector de Interrupcin para el evento de captura del Timer/Counter1........... 16
Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre el pin
OC1A. ........................................................................................................................... 17
Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre el pin
OC1B. ........................................................................................................................... 17
Tabla TC1-11. Nmero de pin correspondiente a OC1A y OC1B. ...................................... 18
Tabla TC1-12 Vector de Interrupcin para el evento de comparacin de igualdad del
Timer/Counter1. ........................................................................................................... 19
Tabla TC1-13. Efecto de los bits COM1x1-COM1x0 del registro TCCR1A. (x puede ser A o
B). .................................................................................................................................. 20
Tabla TC1-14. Efecto de los bits PWM11y PWM10 del registro TCCR1A. ...................... 20
Tabla TC1-15. Frecuencia de la Seal PWM, Valores mximos de TCNT1, y Resolucin.
T1 es la frecuencia a la que se incrementa TCNT1. .................................................................. 21
Tabla TC0-1. Registros involucrados con el Timer/Counter 0. ........................................... 29
Tabla TC0-2. Bits y funcin de los registros especiales para el Timer/Counter 0. .............. 30
TABLA TC0-3. Origen de la seal de reloj y pre escalamiento. ......................................... 31
Tabla TC0-4. Localizacin de pin T0 para la familia AT90X. ............................................ 31
Tabla TC0-5. Vector de interrupcin para Timer/Counter 0 ................................................ 33
Tabla ADC-1A. Registros Involucrados con ADC .............................................................. 37
Tabla ADC-1B. Registros Involucrados con ADC. ............................................................. 37
Tabla ADC-1C. Registros Involucrados con ADC. ............................................................. 37
Tabla ADC-2. Bits de los registros especiales utilizados para el ADC. ............................... 38
Tabla ADC-3. Seleccin canal de entrada con los bits MUX2, MUX1 y MUX0 del registro
ADMUX. ...................................................................................................................... 38
Tabla ADC-4. Localizacin de las entradas para el ADC en la familia AVR.
(EMPAQUETADO DIP). ............................................................................................. 39
Tabla ADC-5. Efecto de los bits ADPS2-ADPS0 del registro ADCSR en la seleccin de la
seal AD Clock. ............................................................................................................ 39
Tabla ADC-6. Vectores de interrupcin para el ADC. ........................................................ 40
Tabla CA-1A. Registros Involucrados con el Comparador Analgico. .............................. 45
Tabla CA-1B. Registros Involucrados con el Comparador Analgico. ............................... 45
Tabla CA-1C. Registros Involucrados con el Comparador Analgico. ............................... 45
Tabla CA-2. Bits de los registros especiales utilizados para el comparador analgico. ..... 46
6
Tabla CA-3. Efecto de los bits ACIS1 y ACIS0 del registro ACSR en la generacin de
interrupcin del Comparador Analgico. .................................................................... 47
Tabla CA-4. Localizacin de los pines AIN0 y AIN1 en la familia AVR.
EMPAQUETADO DIP). .............................................................................................. 47
Tabla CA-5. Vectores de interrupcin para el comprador analgico. .................................. 48
Tabla WDT-1A. Registros involucrados. ............................................................................. 52
Tabla WDT-1B. Registros involucrados. ............................................................................. 52
Tabla WDT-2. Origen de la seal de reloj y pre escalamiento para el perro guardin. ....... 53
Tabla SPI-1A. Registros Involucrados con SPI ................................................................... 56
Tabla SPI-1B. Registros Involucrados con SPI. ................................................................... 56
Tabla SPI-1C. Registros Involucrados con SPI. ................................................................... 56
Tabla SPI-2. Bits de los registros especiales utilizados para el SPI ..................................... 57
Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia de la
seal de Clock. .............................................................................................................. 57
Tabla SPI-4. Localizacin de los pines MISO, MOSI, SCK y SS en la familia AVR.
(EMPAQUETADO DIP). ............................................................................................. 58
Figura SPI-1. Efecto del bit CPHA sobre la seal SCK. ...................................................... 59
Tabla SPI-5. Vectores de interrupcin para el SPI. .............................................................. 61
Tabla UART-1. Registros Involucrados con UART ............................................................ 64
Tabla UART-2. Bits de los registros especiales utilizados UART. ..................................... 65
Tabla UART-3. Localizacin de los pines TXD y RXD en la familia AVR.
(EMPAQUETADO DIP). ............................................................................................. 66
Tabla UART-4. Valores ms comunes de Baud Rate. ......................................................... 67
Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal. .............................. 68
Tabla UART-6. Vectores de interrupcin para UART........................................................ 69


7
ITRODUCCI


Un perifrico es un circuito electrnico especial incluido en un microcontrolador, que
realiza una funcin o tarea especfica. Los perifricos de un microcontrolador permiten
ahorro de espacio y dinero en muchas aplicaciones electrnicas.
Este libro muestra de una manera clara y concisa, la forma de configurar todos los
perifricos incluidos en los microcontroladores de la familia AVR

de ATMEL
(1)
. No se
pretende que este trabajo sea un sustituto de las hojas de especificaciones proporcionadas
por ATMEL

, sino ms bien, se espera que sirva como una herramienta de consulta para
aquellas personas que ya utilizan la familia AVR

, y como una gua para aquellos que


comienzan a estudiar o a realizar proyectos con microcontroladores.
Cada captulo del libro es dedicado completamente a un perifrico en especifico. Se incluye
en cada uno de los captulos las secciones siguientes:

DESCRIPCI GEERAL. En esta seccin se describe el funcionamiento
general del perifrico.

DISPOIBLE E. Se muestran los microcontroladores en los que esta incluido
cada perifrico.

APLICACIOES. Son mencionadas algunas aplicaciones donde puede ser
utilizado.

REGISTROS IVOLUCRADOS. Se describe el efecto de cada bit de los
registros especiales involucrados con cada perifrico.

SECUECIA DE COFIGURACI. En esta seccin de cada capitulo se
explica paso a paso cmo configurar un perifrico. Si el lector ya ha tenido
contacto con microcontroladores, puede ir directamente a esta seccin y a la seccin
IMPLANTACIN sin problema alguno.

I.S.R. Se incluyen los vectores y las direcciones de interrupcin, as como una
descripcin de las condiciones que hacen que se genere cada interrupcin.

IMPLATACI. Cada captulo del libro incluye el cdigo fuente completo para
configurar un perifrico y dejarlo funcionando correctamente. Se implantan todos
los pasos descritos en la seccin SECUECIA DE COFIGURACI. El cdigo
esta escrito en lenguaje ensamblador y totalmente comentado. Si el lector programa
en otro lenguaje diferente a ensamblador, puede tomar como referencia el cdigo
fuente proporcionado en esta obra.

(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, AT90xS8534.
8















































9
OMBRE DEL PERIFRICO: TIMER/COUTER 1.

DESCRIPCI GEERAL.
El Timer/Counter1 es un perifrico bastante flexible, con l se puede medir intervalos de
tiempo, contar pulsos externos y generar seales PWM entre otras cosas. Los modos de
funcionamiento para este perifrico son los siguientes:

MODO TEMPORIZADOR. Genera interrupciones cada vez que un contador interno de 16
bits se desborda. La seal de reloj para el registro contador interno se deriva del oscilador
principal del microcontrolador.

MODO COTADOR. Parecido al modo temporizador, pero la seal de reloj para el registro
contador integrado es externa, proveniente del pin T1.

MODO CAPTURA. Cada vez que se produce un flanco previamente configurado, en la
termina ICP del dispositivo, el contenido del contador es almacenado a un registro especial
de solo lectura, esto puede generar a dems una interrupcin.

MODO COMPARACI DE IGUALDAD. El contenido del contador es comparado
continuamente con un valor almacenado en ciertos registros especiales. Cuando el contador
es igual en magnitud al valor de los registros especiales, se puede producir una interrupcin
de comparacin de igualdad.

MODO GEERACI DE SEALES PWM. Permite generar seales PWM (Modulacin
por Ancho de Pulso) con resolucin de 8, 9 o 10 bits.

DISPOIBLE E
AT90S8515, AT90S2313, AT90XX2333, AT90XX4433, AT90XX4434, AT90XX8535,
AT90C8534.

APLICACIOES
Generacin de seales PWM.
Bases de Tiempo.
Medicin de frecuencia.

REGISTROS IVOLUCRADOS

Este perifrico esta presente en muchos miembros de la familia AT90X, sin embargo en no
en todos los dispositivos se tienen las mismas prestaciones de este perifrico. Por ejemplo,
en algunos no se puede utilizar al Timer/Counter1 como generador de PWM.

La Tabla TC1-1 muestra los registros involucrados y los bits para cada miembro que
contiene a este perifrico.


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
TCT1 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
TCT1 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
TCT1 Todos Los Bits
OCR1 Todos Los Bits
ICR1 Todos Los Bits

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
TCT1 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
TCT1 Todos Los Bits

Tabla TC1-1. Registros Involucrados con el Timer/Counter1.

Una explicacin detallada de cada bit se encuentra en la Tabla TC1-2.
Observe que NO TODOS los dispositivos contienen en sus registros especiales los bits que
se muestran en la siguiente tabla.



















12

BIT SIGIFICADO FUCI
TOIE1 Timer/Counter1
Overflow Interrupt
Enable
1 Habilita interrupcin de sobreflujo del
Timer/Counter1. El Sobreflujo o Desborde se
produce cuando el registro TCNT1 pasa de $ffff
a $0000.
OCE1A Timer/Counter1 Output
CompareA Match
Interrupt Enable.
1 Habilita la interrupcin por comparacin de
igualdad ( Contenido de OCR1A igual al de
TCNT1).
OCIE1B Timer/Counter1 Output
CompareB Match
Interrupt Enable.
1 Habilita la interrupcin por comparacin de
igualdad (Contenido de OCR1B igual al de
TCNT1).
TICIE1 Timer/Counter1 Capture
Interrupt Enable
1 Habilita la interrupcin de captura.

TOV1 Timer/Counter1
Overflow flag
1 indica que el registro TCNT1 se ha
desbordado, genera interrupcin si stas estn
habilitadas
OCF1A Output Compare Flag
1A.
1 indica que los contenidos de los registros
TCNT1 y OCR1A son iguales. Esto puede
producir una interrupcin de comparacin de
igualdad.
OCF1A Output Compare Flag
1B.
1 indica que los contenidos de los registros
TCNT1 y OCR1B son iguales. Esto puede
producir una interrupcin de comparacin de
igualdad.
ICF1 Input Capture Flag. 1 indica que el contenido de TCNT1 ha sido
transferido al registro ICR1. Puede producir una
interrupcin.

ICC1 Input Capture1 Noise
Canceler.
1 Habilita el cancelador de ruido para la
captura. Para que un flanco en el pin ICP genere
la captura, se toman cuatro muestras, que deben
ser todas vlidas de acuerdo al bit ICES1. La
frecuencia de muestreo es la del cristal.
0 La captura se genera en el primer flanco
indicado por el bit ICES1.
ICES1 Input Capture Edge
Select.
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 funcin de los registros especiales para el Timer/Counter1.
Continua...
13
Continuacin...
BIT SIGIFICADO FUCI
CTC1 Clear Timer/Counter1 on
Compare Match.
1 reinicia TCNT1 a $0000 cuando
OCR1A se iguala con TCNT1.
0 TCNT1 continua su cuenta normal.

Tabla TC1-2. Funcin de los Bits de los registros especiales para el
Timer/Counter1.

REGISTROS DE 16 BITS.

Algunos registros especiales utilizados, tienen una longitud de total 16 bits, y se forman
con dos registros de 8 bits cada uno.
Para leer cualquiera de los registros mostrados en la Tabla TC1-3, debe primero leerse el
byte bajo(L) y luego el alto(H).
Para escribir a cualquiera de estos registros, debe primero escribirse el byte alto (H) y luego
el bajo (L).

TCT1 Registro contador de 16 bits, formado por
TCNT1H y TCNT1L.
OCR1A Registro de 16 bits, formado por OCR1AH y
OCR1AL. Se compara continuamente con
TCNT1.
OCR1B Registro de 16 bits, formado por OCR1BH y
OCR1BL. Se compara continuamente con
TCNT1.
ICR1 Registro de solo lectura de 16 bits, formado por
ICR1H y OCR1L. El contenido de TCNT1 se
transfiere a este archivo en un evento de
captura.

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


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


14
CS12 CS11 CS10 EFECTO
0 0 0 El registro TCNT1 no cambia. Timer/Counter1 en
STOP
0 0 1 TCNT1 se incrementa a la velocidad de CK.
0 1 0 TCNT1 se incrementa a la velocidad de CK/8.
0 1 1 TCNT1 se incrementa a la velocidad de CK/64.
1 0 0 TCNT1 se incrementa a la velocidad de CK/256.
1 0 1 TCNT1 se incrementa a la velocidad de CK/1024.
1 1 0 TCNT1 se incrementa en cada flanco negativo
presentado en el pin T1.
1 1 1 TCNT1 se incrementa en cada flanco positivo
presentado en el pin T1.

Tabla TC1-4. Bits CS12-CS11-CS11 del registro TCCR1B y su Efecto sobre el
registro TCNT1

SECUECIA DE COFIGURACI MODO TEMPORIZADOR Y COTADOR.
1. Deshabilitar las interrupciones globales (Recomendado).
SREG<I>=0
2. Establecer el valor del registro TCNT1.
Lo ms comn es hacer TCNT1 = $0000, pero puede ser cualquier otro valor
vlido. Para esto primero escriba el byte alto y luego el byte bajo del registro
TCNT1: Primero TCNT1H y luego TCNT1L.
3. Si se desea utilizar la interrupcin de sobre flujo (cuando el registro TCNT1 se
desborda), habilite la interrupcin utilizando el bit TOIE1 del registro TIMSK.
TIMSK<TOIE1>=1. En caso de no utilizar la interrupcin, ponga este bit en 0.
4. Limpie el bit TOV1 del registro TIFR.
5. Establezca la fuente de la seal de reloj. Ver Tabla TC1-4.
6. Habilite interrupciones globales.
SREG<I>=1

I.S.R.
Si la interrupcin est habilitada, el CPU salta a la direccin vector de interrupcin de este
perifrico cada vez que el registro TCNT1 tiene el valor $FFFF -65535 en decimal- e
intenta incrementar su valor (se desborda).
Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin
del vector de interrupcin para re direccionar a la posicin de memoria donde se encuentra
realmente la ISR.
En la ISR puede (y quiz hasta deba) reiniciar el registro TCNT1 con un valor apropiado.
Observe entre mayor sea el valor de TCNT1 la interrupcin siguiente se producir en un
tiempo menor.


15

DISPOSITIVO VECTOR DIRECCIO PI T1
AT90S4414 7 $006 2 (PDIP)
AT90S8515 7 $006 2
AT90S2313 6 $005 9
AT90S2333 6 $005 11
AT90LS2333 6 $005 11
AT90S4433 6 $005 11
AT90LS4433 6 $005 11
AT90S4434 9 $008 2 (PDIP)
AT90LS4434 9 $008 2 (PDIP)
AT90S8535 9 $008 2 (PDIP)
AT90LS8535 9 $008 2 (PDIP)
AT90C8534 4 $003 -
Tabla TC1-5 Vector de Interrupcin para Timer/Counter1 Overflow.

MODO CAPTURA
En este modo de operacin, el contenido del registro TCNT1 es almacenado en ICR1
cuando un flanco ascendente o descendente se presenta en el pin ICP del dispositivo.
Llamaremos disparo a cualquiera de estos flancos que provocan la captura.
Para evitar disparos falsos, el dispositivo cuenta con un cancelador de ruido. Si el
cancelador se habilita, entonces al producirse un disparo se toman cuatro muestras en el
pin ICP del dispositivo antes de proceder a la captura. Las muestras son tomadas a la
frecuencia del oscilador principal y si todas ellas coinciden se efecta la captura. Cuando
las cuatro muestras no coinciden se considera un disparo falso y la captura no se realiza.
En el caso de que el cancelador de ruido se encuentre deshabilitado la captura se realiza
inmediatamente al presentarse un disparo.
Para seleccionar el flanco de captura se utiliza el bit ICES1 del registro TCCR1B. Esto se
muestra en la Tabla TC1-6.

BIT
ICES1
Evento de Captura Disparado
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
ICC1
CACELADOR DE
RUIDO
0 Deshabilitado
1 Habilitado
Tabla TC1-7 Efecto del bit ICNC1 del registro TCCR1B.

16
SECUECIA DE COFIGURACI MODO CAPTURA.
1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario)
SREG<I> =0
2 Habilite o Deshabilite el cancelador de ruido.
TCCR1B < ICNC1> =0 Deshabilitado. TCCR1B < ICNC1> =1 Habilitado.
3 Programe el flanco de captura.
TCCR1B < ICES1> =0 Descendente. TCCR1B < ICES1> =1 Ascendente.
4 Si requiere atender la interrupcin de captura (habilitarla), active el bit TICIE1 del
registro TIMSK.
TIMSK<TICIE1>=1.
En caso de no necesitar atender la interrupcin ponga este bit en cero.
Si la interrupcin es habilitada, cada vez que se produzca una captura el CPU saltar
hacia el vector de interrupcin correspondiente.
5 Establezca el valor del registro TCNT1.
6 Establezca la fuente de la seal de reloj. Ver Tabla TC1-4
7 Habilite interrupciones globales.
SREG<I>=1

I.S.R.
Si las interrupciones globales y la interrupcin del modo de captura estn habilitadas, el
CPU saltar a la direccin vector de interrupcin correspondiente cada vez que se presente
el flanco predeterminado en el pin ICP del dispositivo. El valor actual del registro TCNT1
es capturado en el registro especial de solo lectura ICR1.
Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin
del vector de interrupcin para re direccionar a la direccin de memoria donde se encuentra
realmente la ISR.

DISPOSITIVO VECTOR DIRECCIO PI ICP
(PDIP)
AT90S4414 4 $003 31
AT90S8515 4 $003 31
AT90S2313 4 $003 11
AT90S2333 4 $003 14
AT90LS2333 4 $003 14
AT90S4433 4 $003 14
AT90LS4433 4 $003 14
AT90S4434 6 $005 20
AT90LS4434 6 $005 20
AT90S8535 6 $005 20
AT90LS8535 6 $005 20
AT90C8534 - - -
Tabla TC1-8 Vector de Interrupcin para el evento de captura del Timer/Counter1.

Por ltimo, recuerde que para leer el registro ICR1 debe primero acceder al byte bajo
(ICR1L) y luego al alto (ICR1H).
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 idntico al del registro OCR1A, el pin OC1A del
microcontrolador puede realizar alguna de las acciones indicadas en la Tabla TC1-9, segn
el valor de los bits COM1A1 y COM1A0.

COM1A1 COM1A0 EFECTO
0 0 Desconecta el perifrico
del pin OC1A. (Sin efecto
sobre el pin).
0 1 Invierte el estado del pin
OC1A
1 0 Pone en 0 el pin OC1A
1 1 Pone en1 el pin OC1A
Tabla TC1-9. Efecto de los bits COM1A1 y COM1A0 del registro TCCR1A sobre
el pin OC1A.

Algunos dispositivos de la familia AVR, contienen los bits COM1B1 y COM1B0 en el
registro TCCR1A. Cuando el contenido del archivo TCNT1 es idntico al del registro
OCR1B, el pin OC1B del microcontrolador puede realizar alguna de las acciones indicadas
en la Tabla TC1-10, segn el valor de los bits COM1B1 y COM1B0.

COM1B1 COM1B0 EFECTO
0 0 Desconecta el perifrico
del pin OC1B. (Sin efecto
sobre el pin).
0 1 Invierte el estado del pin
OC1B
1 0 Pone en 0 el pin OC1B
1 1 Pone en1 el pin OC1B
Tabla TC1-10. Efecto de los bits COM1B1 y COM1B0 del registro TCCR1A sobre
el pin OC1B.

En la Tabla TC1-11 se muestra el nmero de pin OC1A y OC1B para cada dispositivo.









18
DISPOSITIVO OC1A OC1B
AT90S2313 15 -
AT90S8515 15 29
AT90S2333 15 -
AT90S4414 15 29
AT90S4434 19 18
AT90LS4434 19 18
AT90S8535 19 18
AT90LS8535 19 18
AT90C8534 - -
Tabla TC1-11. Nmero de pin correspondiente a OC1A y OC1B.

SECUECIA DE COFIGURACI 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 interrupcin de comparacin de igualdad (habilitarla) para el
registro OCR1A, active el bit OCIE1A del registro TIMSK.
TIMSK< OCIE1A >=1. En caso de no necesitar atender la interrupcin ponga este bit
en cero.
5 Si requiere atender la interrupcin de comparacin de igualdad (habilitarla) para el
registro OCR1B, active el bit OCIE1B del registro TIMSK.
TIMSK< OCIE1B >=1. En caso de no necesitar atender la interrupcin ponga este bit
en cero.
6 Seleccione la fuente de la seal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7 Habilite interrupciones globales.
SREG<I>=1

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





DISPOSITIVO
VECTOR
COMPARACI
DIRECCI
COMPARACI
VECTOR
COMPARACI
DIRECCI
COMPARACI
19
DE IGUALDAD
CO OCCR1A
DE IGUALDAD
CO OCCR1A
DE IGUALDAD
CO OCCR1B
DE IGUALDAD
CO OCCR1B
AT90S4414 5 $004 6 $005
AT90S8515 5 $004 6 $005
AT90S2313 5 $004 - -
AT90S2333 5 $004 - -
AT90LS2333 5 $004 - -
AT90S4433 5 $004 - -
AT90LS4433 5 $004 - -
AT90S4434 7 $006 8 $007
AT90LS4434 7 $006 8 $007
AT90S8535 7 $006 8 $007
AT90LS8535 7 $006 8 $007
AT90C8534 - - - -
Tabla TC1-12 Vector de Interrupcin para el evento de comparacin de igualdad del
Timer/Counter1.


MODO GEERADOR DE SEALES PWM (MODULACI POR ACHO DE
PULSO)

Los microcontroladores de la familia AVR contienen los circuitos necesarios para generar
seales PWM.
El archivo TCNT1, en este modo de operacin se comporta como un contador cclico
ascendente y descendente. Primero TCNT1 comienza su cuenta ascendente desde $0000
hasta llegar a un VALOR MXIMO, y despus desciende hacia cero. Una vez en cero
comienza nuevamente el ciclo. Los 10 bits menos significativos del registro TCNT1 son
comparados continuamente con los de los 10 bits menos significativos de los registros
OCR1A y OCR1B. Cuando se igualan los 10 bits de estos registros, los pines OC1A o
OC1B realizan una de las acciones que se muestra en la Tabla TC1-13.
El valor que contenga el registro OCR1A o OCR1B determinar el ciclo til de la seal
PWM.
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 nmero de pin correspondiente para cada dispositivo de la
familia AVR.
La resolucin de la seal PWM puede ser de 8, 9 o 10 bits, segn se configure en los bits
PWM11 y PWM10 del registro TCCR1A. La Tabla TC1-14 muestra las posibles
combinaciones.

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 MXIMO al que llega el registro TCNT1 est en funcin de la resolucin de la
seal PWM. La Tabla TC1-15 muestra los valores mximos de TCNT1, la frecuencia y la
resolucin de la seal PWM










21


FRECUECIA
DE LA SEAL
PWM
MXIMO
VALOR
DE
TCT1
RESOLUCI
(BITS)
510
1
f

255 8
1022
1
f
511 9
2046
1
f
1023 10
Tabla TC1-15. Frecuencia de la Seal PWM, Valores mximos de TCNT1, y
Resolucin. T1 es la frecuencia a la que se incrementa TCNT1.

SECUECIA DE COFIGURACI 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 seal 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 seal PWM en el pin OC1B
4 Seleccione el modo normal o invertido de seal PWM. Ver Tabla TC1-13.
5 Seleccione la resolucin de la seal PWM. Ver Tabla TC1-14.
6 Seleccione la fuente de la seal de reloj para el registro TCNT1. Ver Tabla TC1-4.
7 Habilite interrupciones globales.
SREG<I>=1

I.S.R.
En modo PWM el perifrico Timer/Counter1 genera la interrupcin de sobre flujo normal
como en el modo Temporizador.
22
IMPLATACI.
La secuencia de configuracin, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los
ejemplos de implantacin como referencia.

TIMER/COUTER 1 MODO TEMPORIZADOR.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 del
microcontrolador para que incremente el registro TCNT1 en cada pulso de reloj. El PORTB
se incrementa en cada interrupcin.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin
;donde se encuentra RESET
.org $006 ;vector de TIMER/COUNTER1 Sobreflujo
rjmp TIMER1_ISR ;redireccionado a TIMER1_ISR
;**********************************************
;Esta ISR se ejecuta cada vez que TCNT1 se desborda.
TIMER1_ISR: ;ISR del TIMER/COUNTER1 Sobreflujo
inc r18 ;incrementa registro r18
out PORTB,r18 ;y saca el valor por el PORTB
ldi r17,0 ;
out TCNT1H,R17 ;pone valor de TCNT1 en 0.
out TCNT1L,R17 ;pone valor de TCNT1 en 0.
reti ;regresa de interrupcin.
;**********************************************
RESET: ;inicio de programa.
ldi r17,$ff ;configura PORTB
out DDRB,r17 ; como salida
;**********************************************
ldi r16,high(RAMEND) ;Establece la direccion de
out SPH,r16 ;la Pila.
ldi r16,low(RAMEND)
out SPL,r16
;**********************************************
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
23
;PASO2 ;PASO2 ;PASO2 ;PASO2
ldi r17,0 ;Inicia TCNT1 con valor 0
out TCNT1H,R17 ;Primero escribir en TCNT1H
out TCNT1L,R17 ;despues escribir en TCNT1L
;PASO3 ;PASO3 ;PASO3 ;PASO3
in r17,TIMSK ;Habilita interrupcin
ori r17,(1<<TOIE1) ;del TIMER/COUNTER1
out TIMSK,r17 ;TIMSK<TOIE1>=1
;PASO 4 ;PASO 4 ;PASO 4 ;PASO 4
in r17,TIFR ;Limpia posible
ori r17,(1<<TOV1) ;interrupcin anterior
out TIFR,r17 ;TIFR<TOV1>=0
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5 ;Selecciona el origen de la
ldi r17,1 ;seal de reloj
out TCCR1B,r17 ;Se incrementar TCNT1 en cada pulso de RELOJ.
;PASO 6 ;PASO 6 ;PASO 6 ;PASO 6
sei ;SREG<7>=1. int. habilitadas
loop: ;Espera hasta que
nop ;se generen interrupciones.
nop
nop
rjmp loop ;loop infinito



TIMER/COUTER 1 MODO CAPTURA.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo de
Captura. Cuando se presenta un flanco descendente en el pin ICP del microcontrolador, se
exhibe en el PORTB, el valor de TCNT1H. TCNT1 se incrementa en cada ciclo del
oscilador principal.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin
;donde se encuentra RESET
.org $003 ;vector de TIMER/COUNTER1 Captura
rjmp ISR_CAPT ;redireccionado a TIMER1_ISR_CAPT
;**********************************************
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 interrupcin.
;**********************************************
RESET: ;inicio de programa.
ldi r17,$ff ;configura PORTB
out DDRB,r17 ; como salida
;**********************************************
ldi r16,high(RAMEND) ;Establece la direccion de
out SPH,r16 ;la Pila.
ldi r16,low(RAMEND)
out SPL,r16
;**********************************************
;PASO 1 ;PASO 1 ;PASO 1 ;PASO 1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO 2 ;PASO 2 ;PASO 2 ;PASO 2
in r17,TCCR1B ;Habilita
ori r17,(1<<ICNC1) ;Cancelador
out TCCR1B,r17 ;de Ruido
;PASO 3 ;PASO 3 ;PASO 3 ;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 ;PASO 4 ;PASO 4 ;PASO 4
in r17,TIMSK ;Habilita interrupcin
ori r17,(1<<TICIE1) ;del Captura del TIMER/COUNTER1
out TIMSK,r17
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5
clr r17
out TCNT1H,r17 ;Establece el valor de TCNT1
out TCNT1L,r17
;PAS ;PAS ;PAS ;PASO 6 O 6 O 6 O 6
ldi r17,1 ;Se incrementa TCNT1 en cada
;ciclo del oscilador principal
out TCCR1B,r17 ;
;PASO 7 ;PASO 7 ;PASO 7 ;PASO 7
sei ;SREG<7>=1. int. habilitadas

loop: ;Espera hasta que
nop ;se generen interrupciones.
25
nop
nop
rjmp loop ;loop infinito


TIMER/COUTER 1 MODO GEERADOR DE SEALES PWM.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo
Generador de seales PWM.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin
;donde se encuentra RESET
;**********************************************
RESET: ;inicio de programa.
;**********************************************
ldi r16,high(RAMEND) ;Establece la direccion de
out SPH,r16 ;la Pila.
ldi r16,low(RAMEND)
out SPL,r16
;**********************************************
;PASO 1 ;PASO 1 ;PASO 1 ;PASO 1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO 2 ;PASO 2 ;PASO 2 ;PASO 2
ldi r17,0x1 ;Establece valor de OCR1A.
out OCR1AH,R17 ;Entre mayor sea
ldi R17,0xff ;el valor, mayor es
out OCR1AL,R17 ;el ciclo util. Mximo Valor 0x3FF
;PASO 3 ;PASO 3 ;PASO 3 ;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 ;PASO 4 ;PASO 4 ;PASO 4
in r17,TCCR1A ;Modo PWM normal
ori r17,(0xA0) ;(no invertido)
out TCCR1A,r17
;COM1x1=1 COM1x0=0.
26
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5
in r17,TCCR1A ;Selecciona la resolucin.
ori r17,(0x03) ;10 Bits.
out TCCR1A,r17
;PASO 6 ;PASO 6 ;PASO 6 ;PASO 6
ldi r17,1 ;seal de reloj
out TCCR1B,r17 ;Se incrementar TCNT1 en cada pulso de RELOJ.

;PASO 7 ;PASO 7 ;PASO 7 ;PASO 7
sei ;SREG<7>=1. int. habilitadas
loop: ;Por los pines OC1A y OC1B
nop ;se generan seales PWM
nop
nop
rjmp loop ;loop infinito


TIMER/COUTER 1 MODO COMPARADOR DE IGUALDAD.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER1 en modo
Comparador de Igualdad.

;**********************************************
.include "8515def.inc" ;archivo que contiene los nombres y direcciones
;de registros especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;**********************************************
.org $000 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin
;donde se encuentra RESET
.org OC1Aaddr ;($004)Redirecciona a
rjmp CompA ;CompA.

.org OC1Baddr ;($005) Redirecciona a
rjmp CompB ;CompB
;**********************************************
CompA:
;Escriba aqu su codigo.
reti
;**********************************************
CompB:
;Escriba aqu su codigo.
reti
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 ;PASO 1 ;PASO 1 ;PASO 1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO 2 ;PASO 2 ;PASO 2 ;PASO 2
ldi r17,0x00 ;Establece valor de OCR1A.
out OCR1AH,R17 ;
ldi R17,0xff ;
out OCR1AL,R17 ;
; ;; ;PASO 3 PASO 3 PASO 3 PASO 3
ldi r17,0x02 ;Establece valor de OCR1B.
out OCR1BH,R17 ;
ldi R17,0x00 ;
out OCR1BL,R17 ;
;PASO 4 ;PASO 4 ;PASO 4 ;PASO 4
in r17,TIMSK ;Habilita Interrupcin
ori r17,(1<<OCIE1A) ;de Comparacion de Igualdad
out TIMSK,r17
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5
in r17,TIMSK ;Habilita Interrupcin
ori r17,(1<<OCIE1B) ;de Comparacion de Igualdad
out TIMSK,r17
;PASO 6 ;PASO 6 ;PASO 6 ;PASO 6
ldi r17,1 ;seal de reloj
out TCCR1B,r17 ;Se incrementar TCNT1 en cada pulso de RELOJ.

;PASO 7 ;PASO 7 ;PASO 7 ;PASO 7
sei ;SREG<7>=1. int. habilitadas

loop: ;Por los pines OC1A y OC1B
nop ;se generan seales PWM
nop
nop
rjmp loop ;loop infinito
28















































29
OMBRE DEL PERIFRICO: TIMER/COUTER0.

FUCIOAMIETO GEERAL
Un temporizador (Timer) es un perifrico que se encarga generar un evento (interrupcin)
cada vez que ha pasado cierto intervalo de tiempo. La interrupcin de un temporizador se
genera cuando el circuito contador del mismo, sufre un sobre flujo, es decir, cuando se
desborda.
La velocidad a la que un temporizador genera interrupciones depende del origen de la seal
de reloj que alimente al mismo. En la familia de microcontroladores AVR, dicha seal de
reloj puede provenir del exterior o ser generada internamente. Cuando la seal es interna, la
velocidad del temporizador depende de la frecuencia del cristal colocado al
microcontrolador. Cuando es externa, depender de la velocidad de los pulsos que se
introduzcan por alguna terminal especfica del dispositivo. Un temporizador cuya seal de
reloj es externa, se dice que est configurado en modo contador (Counter).

DISPOIBLE E
AT90S1200, T90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343,
AT90S2333, T90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515,
AT90S4434, AT90LS4434, AT90S8535, AT90LS8535, AT90C8534.

APLICACIOES
Medicin de intervalos de tiempo.
Generacin de bases de Tiempo.
Tacmetro digital.
REGISTROS IVOLUCRADOS.
DISPOSITIVO: AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343,
AT90LS2343, AT90S2333, AT90LS2333, AT90S4433, AT90LS4433, AT90S4414,
AT90S8515.

OMBRE
DEL
REGISTRO.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
TCCR0 CS02 CS01 CS00
TCNT0 MSB LSB
TIMSK TOIE0
TIFR TOV0
DISPOSITIVO: AT90XX4434, AT90XX8535, AT90C8534.

OMBRE
DEL
REGISTRO.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
TCCR0 CS02 CS01 CS00
TCNT0 MSB LSB
TIMSK TOIE0
TIFR TOV0
Tabla TC0-1. Registros involucrados con el Timer/Counter 0.

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

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

Tabla TC0-2. Bits y funcin de los registros especiales para el Timer/Counter 0.

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

CS02 CS01 CS00 ORIGE
Y
PREESCALAMIETO
DE LA SEAL DE
RELOJ.
0 0 0 DETENID, NO CUENTA.
0 0 1 1/f
osc
(ms rpido)
0 1 0 8/
osc

0 1 1 64/
osc

1 0 0 256/f
osc

1 0 1 1024/f
osc
(ms lento)
1 1 0
Terminal T0,
flanco descendente. (modo
contador).
1 1 1
Terminal T0,
flanco ascendente.
(modo contador).

TABLA TC0-3. Origen de la seal de reloj y pre escalamiento.
Cuando este perifrico se configura en modo contador, se le introducen pulsos por el pin
T0, localizado en cada dispositivo como se muestra en la Tabla TC0-4.

DISPOSITIVO PIN T0
AT90S1200 8
AT90S2313 8
AT90S2323 7
AT90LS2323 7
AT90S2343 7
AT90LS2343 7
AT90S2333 2
AT90LS2333 2
AT90S4433 2
AT90LS4433 3
AT90S4414 1
AT90S8515 1
AT90S4434 1
AT90LS4434 1
AT90S8535 1
AT90LS8535 1
AT90C8534 -
Tabla TC0-4. Localizacin de pin T0 para la familia AT90X.
32

SECUECIA DE COFIGURACI

1.- Ponga SREG<I>=0. (Bit 7 del registro SREG). Deshabilita interrupciones.
2.- Haga TCNT0=0. Inicie contador en $00 o en un valor que necesite.
3.- Haga TIMSK<TOIE0>=1 Habilita interrupcin del TIMER/COUNTER 0, Si
requiere interrupciones. En caso contrario ponga ese bit en0.
4.- Haga TIFR<TOV0>=1". Limpia posible interrupcin falsa.
5.- Ponga SREG<I>=1. (Bit 7 del registro SREG). Habilita interrupciones.
6.- Seleccione el origen de la seal de RELOJ para el TIMER/COUNTER0. Ver Tabla
TC0-3. Ejemplo:
TCCR0 =0 hace que este perifrico se pare, es decir, TCNT0 no cuenta y por lo tanto
el TIMER/COUNTER0 no genera interrupciones.
TCCR0=1 hace que el TCNT0 se incremente con cada pulso de reloj, es la forma ms
rpida en la que este perifrico genera interrupciones.
TCCR0=5 hace que el TCNT0 se incremente cada 1024 pulsos de reloj, es la forma
ms lenta en la que este perifrico genera interrupciones (con RELOJ interno).
TCCR0=6 hace que el TCNT0 se incremente con cada flanco negativo (cuando la
seal pasa de 1 a 0) aplicado en la terminal T0 del microcontrolador.

I.S.R.
El CPU salta a la direccin vector de interrupcin de este perifrico cada vez que el registro
TCNT0 tiene el valor $FF (255 en decimal) e intenta incrementar su valor (se desborda).
Si programa en ensamblador, deber colocar una instruccin de salto (rjmp) en la direccin
del vector de interrupcin para re direccionar a la posicin de memoria donde se encuentra
realmente la ISR del TIMER/COUNTER0.

En la ISR puede (y quiz hasta deba) reiniciar el registro TCNT0 con un valor apropiado,
generalmente se pone en 0, aunque puede ser otro valor. Observe entre mayor sea el valor
de TCNT0 la interrupcin siguiente se producir en un tiempo menor. No es necesario que
ponga el bit 7 del archivo TIFR en 0 cada vez que se produzca una interrupcin, al
atenderse la ISR el hardware lo realiza.
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 interrupcin para Timer/Counter 0

IMPLATACI.
La secuencia de configuracin, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los
ejemplos de implantacin como referencia.

TIMER/COUTER 0 MODO TEMPORIZADOR.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

El siguiente programa en ensamblador configura al TIMER/COUNTER 0 del
microcontrolador para que incremente el registro TCNT0 en cada pulso de reloj. Si el
dispositivo tiene colocado un cristal de 4 MHz, las interrupciones se generarn cada 65
micro segundos aproximadamente.

;Timer/Counter0 Modo Temporizador
;*****************************************************************
.include "1200def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;*****************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se
;encuentra RESET

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

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















































37
OMBRE DEL PERIFRICO: ADC- COVERTIDOR AALGICO DIGITAL.

DESCRIPCI GEERAL.
Un circuito Convertidor Analgico Digital ADC- es integrado en algunos
microcontroladores para procesamiento de seales analgicas. El Convertidor Analgico
Digital integrado en los microcontroladores de la familia AVR es tipo aproximacin
sucesiva y tienen una resolucin de 10 bits. La frecuencia mxima de muestreo es 15
KSPS (15000 Muestras Por Segundo aproximadamente). Otras caractersticas son las
siguientes: 2 LSB, 0.5 LSB INL, Tiempo de conversin 65-260 uS, Cancelador de ruido
integrado, rango de entrada Rail to Rail.

El ADC puede ser configurado en dos modos de operacin:
Modo de una Sola Conversin. Se tiene que iniciar manualmente cada
conversin.
Modo en Conversin Continua. Las conversiones se realizan de manera
repetida automticamente.

DISPOIBLE E
AT90xS4434, AT90xS8535, AT90xS2333, AT90xS4433.

APLICACIOES
Sistemas de adquisicin de seales analgicas, Sistemas de Control Digital, etc.
REGISTROS IVOLUCRADOS


OMBRE
REGISTRO
B7 B6 B5 B4 B3 B2 B1 B0
ADMUX - - - - - MUX2 MUX1 MUX0
Tabla ADC-1A. Registros Involucrados con ADC


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


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



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

BIT SIGIFICADO FUCI
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 interrupcin de
Conversin Completa.
ADIF ADC Interrupt Flag Se establece a 1 cuando una
Conversin ha terminado.
ADFR ADC Free Run Select 1 Selecciona Modo en Conversin
Continua.
0 Selecciona Modo de una Sola
Conversin.
ADSC ADC Start Conversion Se debe escribir un 1 en este bit para
iniciar la conversin.
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 seal
invariante una vez que ha comenzado la conversin. El nmero de entradas analgicas
conectadas al ADC, a travs de un multiplexor analgico vara de un microcontrolador a
otro, siendo ocho el nmero mximo. La conversin analgica a digital se realiza sobre un
solo canal o entrada analgica seleccionado, para esto se utilizan los bits MUX2, MUX1 y
MUX0. La Tabla ADC-3 muestra las posibles combinaciones de estos bits y el canal
seleccionado. Recuerde que algunos microcontroladores no tienen disponible los ocho
canales de entrada.

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

39
La Tabla ADC-4 muestra la posicin de las entradas o canales analgicos para
cada miembro de la familia AVR.

canal de entrada analogico
DISPOSITIVO 0 1 2 3 4 5 6 7
AT90xS4434
40
(PA0)
39
(PA1)
38
(PA2)
37
(PA3)
36
(PA4)
35
(PA5)
34
(PA6)
33
(PA7)
AT90xS8535
40
(PA0)
39
(PA1)
38
(PA2)
37
(PA3)
36
(PA4)
35
(PA5)
34
(PA6)
33
(PA7)
AT90xS2333
23
(PC0)
24
(PC1)
25
(PC2)
26
(PC3)
27
(PC4)
28
(PC5)
- -
AT90xS4433
23
(PC0)
24
(PC1)
25
(PC2)
26
(PC3)
27
(PC4)
28
(PC5)
- -
Tabla ADC-4. Localizacin de las entradas para el ADC en la familia AVR.
(EMPAQUETADO DIP).

Para realizar las conversiones analgico a digital, el circuito ADC requiere de una seal se
reloj (AD Clock) que se deriva del oscilador principal, la frecuencia de la seal AD Clock
debe ser mayor a 50Hz y menor a 200KHz. Si se selecciona la frecuencia ms alta,
aumentar tambin la velocidad de conversin, pero la precisin disminuir, esto es, a
mayor frecuencia, menor precisin. Para establecer la frecuencia de la seal AD Clock se
utilizan los bits ADPS2, ADPS1 y ADPS0 del registro ADCSR. La Tabla ADC-5 muestra
las frecuencias posibles.

ADPS2 ADPS1 ADPS0 Frecuencia
0 0 0
2
OSC
F

0 0 1
2
OSC
F

0 1 0
4
OSC
F

0 1 1
8
OSC
F

1 0 0
16
OSC
F

1 0 1
32
OSC
F

1 1 0
64
OSC
F

1 1 1
128
OSC
F

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


SECUECIA DE COFIGURACI ADC.
40

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

1. Configurar al ADC en Modo de una Sola Conversin y habilitar la interrupcin.
2. Entrar a modo de espera (IDLE)
3. Al terminar una conversin el ADC, se ejecutar la ISR.

I.S.R.
La Tabla ADC-6 muestra los vectores y direcciones de interrupcin del ADC. La
interrupcin sucede cada vez que se termina una conversin analgico a digital. Si
programa en ensamblador necesitar redireccionar hacia donde realmente se
encuentre la ISR.

DISPOSITIVO VECTOR DIRECCIO
AT90xS4434 15 $00E
AT90xS8535 15 $00E
AT90xS2333 12 $00B
AT90xS4433 12 $00B

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

41
IMPLATACIO
En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en
velocidad.
El siguiente programa muestra como configurar al ADC en Modo de Conversin Continua.
;CONVERTIDOR ANALOGICO DIGITAL
;Modo Conversin Continua ;Modo Conversin Continua ;Modo Conversin Continua ;Modo Conversin Continua
;************************************************************
.include "4434def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************
.org ADCCaddr ;Vector de ADC conversin terminada
rjmp ADC_Fin ;redireccionado.
;************************************************************
ADC_Fin:
;Escriba aqui su codigo
in r17,ADCL
in r18,ADCH
out PORTB,r17
reti
RESET: ;inicio de programa.
;************************************************************
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
;************************************************************
ldi r17,0xff
out DDRB,r17 ;Puerto B como salida
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO ;PASO ;PASO ;PASO2 22 2
ldi r17,0x00 ;Configura como entrada Puerto A
out DDRA,r17 ;Son las entradas Analgicas
;PASO3 ;PASO3 ;PASO3 ;PASO3
cbi ADCSR,ADPS2 ;Frecuencia de la seal ADC Clock
sbi ADCSR,ADPS1 ;es fosc/4
cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4 ;PASO4 ;PASO4 ;PASO4
sbi ADCSR,ADFR ;Modo Conversin Continua
;PASO5 ;PASO5 ;PASO5 ;PASO5
42
sbi ADCSR,ADIE ;Habilita Int ADC
;PASO6 ;PASO6 ;PASO6 ;PASO6
sbi ADCSR,ADIF ;Limpia Posible Interrupcin Falsa
;PASO7 ;PASO7 ;PASO7 ;PASO7
cbi ADMUX,MUX2 ;Selecciona Canal 0
cbi ADMUX,MUX1 ;Pin 40, PA0
cbi ADMUX,MUX0
;PASO8 ;PASO8 ;PASO8 ;PASO8
sbi ADCSR,ADEN ;Habilita ADC
;PASO9 ;PASO9 ;PASO9 ;PASO9
sei ;Habilita Interrupciones Globales
;PASO10 ;PASO10 ;PASO10 ;PASO10
sbi ADCSR,ADSC ;Inicia la primera conversin.

loop:
nop
nop
rjmp loop ;loop infinito

El siguiente programa muestra como configurar al ADC en Modo de una Sola Conversin.

;CONVERTIDOR ANALOGICO DIGITAL
;Modo una Sola Conversin
;************************************************************
.include "4434def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************.org ADCCaddr
;Vector de ADC conversin terminada
rjmp ADC_Fin ;redireccionado.
;************************************************************
ADC_Fin:
;Escriba aqui su codigo
ldi r17,0xff
reti
RESET: ;inicio de programa.
;************************************************************ ldi
r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
43
;************************************************************
ldi r17,0xff
out DDRB,r17 ;Puerto B como salida
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO2 ;PASO2 ;PASO2 ;PASO2
ldi r17,0x00 ;Configura como entrada Puerto A
out DDRA,r17 ;Son las entradas Analgicas
;PASO3 ;PASO3 ;PASO3 ;PASO3
cbi ADCSR,ADPS2 ;Frecuencia de la seal ADC Clock
sbi ADCSR,ADPS1 ;es fosc/4
cbi ADCSR,ADPS0 ;ADPS0=0 ADPS1=1 ADPS2=0
;PASO4 ;PASO4 ;PASO4 ;PASO4
cbi ADCSR,ADFR ;Modo Conversin Continua
;PASO5 ;PASO5 ;PASO5 ;PASO5
sbi ADCSR,ADIE ;Habilita Int ADC
;PASO6 ;PASO6 ;PASO6 ;PASO6
sbi ADCSR,ADIF ;Limpia Posible Interrupcin Falsa
;PASO7 ;PASO7 ;PASO7 ;PASO7
cbi ADMUX,MUX2 ;Selecciona Canal 0
cbi ADMUX,MUX1 ;Pin 40, PA0
cbi ADMUX,MUX0
;PASO8 ;PASO8 ;PASO8 ;PASO8
sbi ADCSR,ADEN ;Habilita ADC
;PASO9 ;PASO9 ;PASO9 ;PASO9
sei ;Habilita Interrupciones Globales
;PASO10 ;PASO10 ;PASO10 ;PASO10
sbi ADCSR,ADSC ;Inicia la primera conversin.
loop:
nop
nop
sbrs r17,0 ;espera hasta terminar conversion
rjmp loop
in r17,ADCL
in r18,ADCH
out PORTB,r17
ldi r17,0x00
nop
rjmp loop ;loop infinito
44














































45
OMBRE DEL PERIFRICO: COMPARADOR AALGICO.

DESCRIPCI GEERAL.

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

DISPOIBLE E
AT90S8515, AT90S1200, AT90S2313, 90S2333,AT90LS2333, AT90S4433,
AT90LS4433.

APLICACIOES
Deteccin picos de seales analgicas.
Control de potencia por ngulo de disparo con Tiristores.
Conversin analgico a digital.

REGISTROS IVOLUCRADOS

DISPOSITIVO: AT90S8515, AT90S2313, AT90XX4434, AT90XX8535.
OMBRE
REGISTRO
B7 B6 B5 B4 B3 B2 B1 B0
ACSR ACD ACO ACI ACIE ACIC ACIS1 ACIS0
Tabla CA-1A. Registros Involucrados con el Comparador Analgico.

DISPOSITIVO AT90S1200.
OMBRE
REGISTRO
B7 B6 B5 B4 B3 B2 B1 B0
ACSR ACD ACO ACI ACIE ACIS1 ACIS0
Tabla CA-1B. Registros Involucrados con el Comparador Analgico.

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


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

BIT SIGIFICADO FUCI
ACD Analog Comparator
Disable.
1 Apaga al comparador analgico.
0 Enciende comparador analgico.
ACO Analog comparator
Output.
Conectado de manera directa a la
salida del comparador analgico.
ACI Analog Comparator
Interrupt Flag.
1 indica que se ha producido una
interrupcin debida del comparador
analgico . Ver bits ACIS1 y ACIS0.
ACIE Analog Comparator
Interrupt Enable.
1 Habilita interrupcin del
comparador analgico.
ACIC Analog Comparator
Input Capture Enable.
1 Hace que la captura del
Timer/Counter1 sea activada por el
comparador analgico.
ACIS1 Analog Comparator
Interrupt Mode
Select.
Ver Tabla CA-3.
ACIS0 Analog Comparator
Interrupt Mode
Select.
Ver Tabla CA-3.
AIBG Analog Comparator
BandGap Select
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
seal proveniente del exterior.
0 La seal proveniente del exterior
se aplica a la entrada AIN0 del
comparador analgico.
Tabla CA-2. Bits de los registros especiales utilizados para el comparador
analgico.

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



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

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

DISPOSITIVO
AI0
(in +)
AI1
(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. Localizacin de los pines AIN0 y AIN1 en la familia AVR.
EMPAQUETADO DIP).


SECUECIA DE COFIGURACI COMPARADOR AALGICO.
1 Deshabilite interrupciones globales.
SREG<I>=0
2 Deshabilite la interrupcin del comparador analgico (Siempre que cambie la
configuracin de este perifrico, lo recomendable es deshabilitar su interrupcin).
ACSR<ACIE>=0
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 interrupcin. 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 pngalo en 0.
7 Habilite el comparado analgico
ACSR<ACD>=1.
8 Si lo requiere, habilite la interrupcin del comparador analgico y las interrupciones
globales
ACSR<ACIE>=1.
SREG<I>=1.

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

DISPOSITIVO VECTOR DIRECCIO
AT90S1200 5 $003
AT90S2313 11 $00A
AT90S4414 13 $00C
AT90S8515 13 $00C
AT90XX2333 14 $00D
AT90XX4433 14 $00D
AT90XX4434 17 $010

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

49
IMPLATACIO
En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en
velocidad.

El programa siguiente configura al comparador analgico para que genere interrupciones en
cada flanco negativo.

;AIN0 y AIN1 se encuentran en el PORTB
;del AT90S8515. Si usa otro dispositivo
;Vea Tabla CA-4.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************************
.org ACIaddr ;vector del Comparador Analogico
rjmp CompAn ;redireccionado.
;************************************************************************
CompAn:
;Escriba aqui su codigo
reti
RESET: ;inicio de programa.
;************************************************************************
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
;************************************************************************
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO2 ;PASO2 ;PASO2 ;PASO2
ldi r17,0x80 ;Deshabilita int del
out ACSR,r17 ;Comparador Analogico. (ACIE="0")
;PASO3 ;PASO3 ;PASO3 ;PASO3
ldi r17,0x00 ;Configura como entrada los pines
out DDRB,r17 ;correspondientes a AIN0 y AIN1
;Esta linea cambia en otro dispositivo.
;PASO4 ;PASO4 ;PASO4 ;PASO4
;// in r17,ACSR ;EL AT90S8515 no tiene circuito de
;// ori r17,(1<<AINBG) ;referencia interna
;// out ACSR,r17 ;
50
;PASO5 ;PASO5 ;PASO5 ;PASO5
in r17,ACSR ;Se generara la interrupcin en cada
ori r17,0x02 ;flanco descendente de la salida del
out ACSR,r17 ;Comparador Analogico (bit ACO)
;PASO6 ;PASO6 ;PASO6 ;PASO6
; in r17,ACSR
; ori r17,(1<<ACIC) ;Si desa habilitar el evento de captura
; out ACSR,r17 ;descomente esto
;PASO7 ;PASO7 ;PASO7 ;PASO7
in r17,ACSR ;Habilita al comparador Analogico
andi r17,0x7f ;ACD="0"
out ACSR,r17
;PASO8 ;PASO8 ;PASO8 ;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




51














































52
OMBRE DEL PERIFRICO: PERRO GUARDI (WATCHDOG TIMER).

DESCRIPCI GEERAL.
Este perifrico permite que el microcontrolador se reinicie automticamente mediante un
circuito contador, que se incrementa continuamente a una frecuencia de 1MHz
aproximadamente. Para evitar que el microcontrolador se reinicie, hay que restablecer el
valor del contador antes de que este se desborde. El restablecimiento del contador se
efecta mediante una instruccin especial (WDR).

DISPOIBLE E
AT90S1200, AT90S2313, AT90S2323, AT90LS2323, AT90S2343, AT90LS2343, AT90S2333,
AT90LS2333, AT90S4433, AT90LS4433, AT90S4414, AT90S8515, AT90S4434, AT90LS4434,
AT90S8535, AT90LS8535

APLICACIOES.

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 IVOLUCRADOS.
DISPOSITIVO: AT90S1200.

OMBRE
DEL
ARCHIVO.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 FUCI

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
DEL
ARCHIVO.
BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0
WDTCR - - - WDTOE WDE WDP2 WDP1 WDP0
Tabla WDT-1B. Registros involucrados.

El bit WDE de registro WDTCR es el responsable de habilitar o deshabilitar el perifrico
Perro Guardin. Los tres bits menos significativos de este registro permiten establecer el
53
mximo intervalo de tiempo que puede ocurrir entre dos instrucciones WDR para evitar una
interrupcin, es decir, con estos tres bits se controla el limite mximo de tiempo que con el
que se cuenta para restablecer el contador interno del Perro Guardin, antes de que el
microcontrolador se reinicie. La Tabla WDT-2 muestra las posibles combinaciones de los
bits WDP2, WDP1 y WDP0.
El bit WDTOE del registro WDTCR ayuda a prevenir una desactivacin accidental del
Perro Guardin. Para activar al Perro Guardin, simplemente escriba un 1 al bit WDE.
Para desactivarlo siga los siguientes pasos (excepto para AT90S1200):
(a) Escriba al mismo tiempo un 1 en los bits WDTOE y WDE del registro WDTCR.
(b) En seguida, antes de cuatro ciclos de reloj, escriba un 0 al bit WDE.

WDP2 WDP1 WDP0
ITERVALO
DE TIEMPO
A 5 v
(mili segundos)
ITERVALO
DE TIEMPO
A 3 v
(mili segundos)
MERO DE
CICLOS DEL
COTADOR
ITERO DEL
PERRO GUARDIA.
(K CICLOS)
0 0 0
15 47 16
0 0 1
30 94 32
0 1 0
60 190 64
0 1 1
120 380 128
1 0 0
240 750 256
1 0 1
490 1500 512
1 1 0
970 3000 1024
1 1 1
1900 6000 2048

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

SECUECIA DE COFIGURACI WDT.
1 Deshabilite Interrupciones Globales. (Recomendado pero no necesario)
SREG<I> =0
2 Seleccione el intervalo de tiempo. Ver Tabla WDT-2.
3 Habilite el Perro Guardin.
WDTCR<WDE>=1
A partir del momento de habilitar al Perro Guardin, cuenta con el intervalo de tiempo
especificado en la Tabla WDT-2 , para ejecutar una instruccin WDR. En caso de NO
ejecutar la instruccin WDR, el microcontrolador se reiniciar.
4 Habilite interrupciones globales.
SREG<I>=1
54
IMPLATACI.
En aras de la claridad el cdigo no est optimizado ni en tamao ni en velocidad.

La secuencia de configuracin, de los registros especiales, se muestra programada en
lenguaje ensamblador. Si usted utiliza otro lenguaje de programacin, solo tome los
ejemplos de implantacin como referencia.


;************************************************************.include
"1200def.inc" ;archivo que contiene los nombres de registros ;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************.org $0
;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************ RESET:
;inicio de programa.
;************************************************************;ldi
r16,high(RAMEND) ;Descomente para dispositivos
;con RAM mayor 256 Bytes
; out SPH,r16
; ldi r16,low(RAMEND)
; out SPL,r16
;************************************************************;PASO1
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO2 ;PASO2 ;PASO2 ;PASO2
ldi r17,0
out WDTCR,r17 ;Watch Dog Timer se
;reinicia cada 15 ms.
;PASO3 ;PASO3 ;PASO3 ;PASO3
in r17,WDTCR
ori r17,(1<<WDE) ;Habilita Watch Dog Timer
out WDTCR,r17
;PASO4 ;PASO4 ;PASO4 ;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

55














































56

OMBRE DEL PERIFRICO: SPI - ITERFAZ SERIAL PERIFERICA.

DESCRIPCI GEERAL
Este perifrico permite al microcontrolador comunicarse de manera serial con otros
dispositivos externos as como con otros microcontroladores. El tipo de comunicacin es
bi-direccional del tipo asncrona y con una alta velocidad de transferencia.
Por favor, lea la seccin REGISTROS INVOLUCRADOS de este capitulo para una
explicacin ms detallada.

DISPOIBLE E
AT90xS2333, AT90xS4433, AT90S8515,AT90S4414, AT90Xs4434 y AT90Xs8535.

APLICACIOES
Comunicaciones seriales con dispositivos electrnicos (ADC, Memorias, etc.) o entre
varios microcontroladores.

REGISTROS IVOLUCRADOS


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


OMBRE
REGISTRO
B7 B6 B5 B4 B3 B2 B1 B0
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 funcin se puede observar en la Tabla SPI-2.


57

BIT SIGIFICADO FUCI
SPIE SPI Interrupt Enable 1 Habilita interrupcin del SPI
0 La deshabilita.
SPE SPI Enable 1 Habilita al Perifrico SPI
0 Lo deshabilita.
DORD Data Order Especifica el orden en que se transmiten los
datos.
1 Se enva primero el LSB
0 Se enva primero el MSB
MSTR Master/Slave Select Especifica el modo de operacin
1 Modo Maestro
0 Modo Esclavo
CPOL Clock Polarity Especifica la polaridad de la seal de Clock
(SCK).
1 SCK Se mantiene en ALTO (1) cuando
esta en estado de Espera (Idle).
0 SCK Se mantiene en BAJO (0) cuando
esta en estado de Espera (Idle).
CPHA Clock Phase Especifica la fase de la seal 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 seal SCK, misma que se encarga de
sincronizar las transferencias de datos.

SPR1 SPR0 FRECUECIA DE SCK
0 0 F
osc principal
/4
0 1 F
osc principal
/16
1 0 F
osc principal
/64
1 1 F
osc principal
/128
Tabla SPI-3. Efecto de los bits SPR1 y SPR0 del registro SPCR sobre la frecuencia
de la seal de Clock.

En una comunicacin SPI existe siempre un MAESTRO y un ESCLAVO. Generalmente
un microcontrolador AVR toma el papel de maestro y cualquier dispositivo conectado a l
se comporta como esclavo (Aunque los papeles pueden intercambiarse). Para comunicar un
58
dispositivo mediante SPI con un microcontrolador AVR, se utilizan cuatro pines de este
ltimo: MISO, MOSI, SCK y SS .
La localizacin de estos pines se muestra en la Tabla SPI-4.

DISPOSITIVO MISO MOSI SCK SS
AT90xS2333 18
(PB4)
17
(PB3)
19
(PB5)
16
(PB2)
AT90xS4433 18
(PB4)
17
(PB3)
19
(PB5)
16
(PB2)
AT90S8515 7
(PB6)
6
(PB5)
8
(PB7)
5
(PB4)
AT90S4414 7
(PB6)
6
(PB5)
8
(PB7)
5
(PB4)
AT90Xs4434 7
(PB6)
6
(PB5)
8
(PB7)
5
(PB4)
AT90Xs8535 7
(PB6)
6
(PB5)
8
(PB7)
5
(PB4)
Tabla SPI-4. Localizacin de los pines MISO, MOSI, SCK y SS en la familia
AVR. (EMPAQUETADO DIP).

FUCIO DE LOS PIES MOSI, MISO, SCK Y SS E MODO MAESTRO.

El pin MOSI del microcontrolador puede ser configurado como entrada o salida en modo
MAESTRO, sin embargo, para transmisiones se utiliza como SALIDA de los datos.

Por el pin SCK se saca la seal de reloj que sincroniza el envo de bits desde un dispositivo
hacia otro. Este pin tambin puede ser configurado como entrada o salida en modo
MAESTRO.

El pin MISO se comporta como ENTRADA de los datos seriales cuando el dispositivo
AVR se encuentra en modo MAESTRO.

Por ltimo, el pin SS puede ser configurado como entrada o como salida. Al ser
configurado este pin como SALIDA no afecta el funcionamiento del perifrico SPI. Si el
pin SS se configura como ENTRADA entonces afecta el sistema SPI de la siguiente
manera:
El pin SS debe mantenerse siempre en nivel alto (1), en caso de que este pin pase a nivel
bajo (0) el microcontrolador pasar automticamente a modo ESCLAVO. Esto evita una
posible contencin del bus poniendo los pines SCK y MOSI como entradas.
Al pasar de modo MAESTRO a modo ESCLAVO por un cambio de nivel en el pin SS , el
bit SPIF del registro SPSR es puesto a cero (0), por lo que se puede generar una
interrupcin.
Como recomendacin, si configura al pin SS como entrada, asegrese de que el
microcontrolador permanece en modo MAESTRO antes de transmitir datos.

59
FUCIO DE LOS PIES MOSI, MISO, SCK Y SS E MODO ESCLAVO.

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

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

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



MSB
MSB
6
SCK CYCLE#
(FOR REFERENCE)
SCK (CPOL=0)
SCK (CPOL=1)
MOSI
(FROM MASTER)
MISO
(FROM SLAVE)
SS (TO SLAVE)
5 4 3 2 1 LSB
6 5 4 3 2 1 LSB
1 2 3 4 5 6 7 8 3
5
5 (FROM MASTER)
SCK (CPOL=1)
SCK (CPOL=0)
SS (TO SLAVE)
MISO
(FROM SLAVE)
MOSI
MSB
MSB 6
6
(FOR REFERENCE)
SCK CYCLE# 1 2
4
4
2 3
3 2
LSB
LSB
1
1
4 6 5 8 7
CPHA=0 CPHA=1

60
SECUECIA DE COFIGURACI SPI.

1.- Deshabilite interrupciones.
Ponga SREG<I>=0.
2.- Configure los pines MOSI, MISO, SCK Y SS de acuerdo a lo requerido en su
aplicacin.
Si el modo de operacin del microcontrolador ser como MAESTRO, generalmente
MOSI es SALIDA, MISO ENTRADA , SCK SALIDA y SS es SALIDA.
En modo MAESTRO SS se configura como entrada solo cuando hay ms de un
microcontrolador conectado al bus SPI (MOSI, MISO y SCK).
En modo ESCLAVO todos los pines son configurados automticamente como entradas,
a excepcin de MISO que puede configurarse como salida o entrada, aunque
generalmente se establece como SALIDA. Recuerde que en modo ESCLAVO los
circuitos externos deben poner el pin SS en nivel bajo (0) para habilitar al SPI.
3.- Establezca el modo de operacin: MAESTRO o ESCLAVO.
Ver Tabla SPI-2.
4.- Establezca los bits DORD, CPOL y CPHA segn sea necesario. Ver Tabla SPI-2 y
Figura SPI-1.
5.- Seleccione la frecuencia de la seal SCK. Ver Tabla SPI-3.
6.- Habilite la interrupcin del perifrico SPI si as lo requiere. Generalmente s es
necesario habilitarla. Ver Tabla SPI-2.
SPCR<SPIE>=1.
7.- Habilite el perifrico SPI.
SPCR<SPE>=1
8.- Habilite interrupciones globales.
SREG<I>=1.

Para transmitir una palabra (8 bits) por medio de SPI, simplemente escriba al registro
SPDR el dato correspondiente.
Cuando se completa una transmisin o recepcin, se genera la interrupcin correspondiente
(siempre que se encuentren habilitadas las interrupciones). Para evitar corrupcin de datos,
antes de escribir al registro SPDR verifique que se haya completado la transferencia
anterior.
Si por alguna razn se escribe al registro SPDR antes de terminar una transmisin, entonces
el bit WCOL se establece a 1 indicando un error.
Para leer la ultima palabra recibida, lea el valor del registro SPDR.

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


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

DISPOSITIVO VECTOR DIRECCIO
AT90S4414 9 $008
AT90S8515 9 $008
AT90xS2333 8 $007
AT90xS4433 8 $007
AT90xS4434 11 $00A
AT90Xs8535 11 $00A

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

IMPLATACIO
En aras de la claridad, el cdigo presentado no est optimizado en tamao ni en velocidad.

El siguiente programa configura al microcontrolador en modo MAESTRO. El registro r17
contiene un valor que se incrementa y enva a travs de SPI. El registro r18 se utiliza para
notificar que ya se ha enviado el dato.

;SPI MODO MAESTRO.
;*****************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de
;registros especiales.
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;*****************************************************************
.org $0 ;vector de inicio.
Rjmp RESET ;redireccionado a la direccin donde se
;encuentra RESET
.org SPIaddr
rjmp SPI_INT ;redireccionado hacia SPI_INT.
;*****************************************************************
SPI_INT:
;Solamente pone el registro r18 en $ff, para
;notificar que ya se ha enviado el dato.
ldi r18,0xff
reti
RESET: ;inicio de programa.
;*****************************************************************
ldi r16,high(RAMEND) ;Comente para dispositivos
;con RAM menor a 256 Bytes
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
62
;*****************************************************************
;PASO1 ;PASO1 ;PASO1 ;PASO1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO2 ;PASO2 ;PASO2 ;PASO2
;Para el AT90S8515 modo MAESTRO
;__
;SS PB4 SALIDA
;MOSI PB5 SALIDA
;MISO PB6 ENTRADA
;SCK PB7 SALIDA
ldi r17,0b10110000
out DDRB,r17
;PASO3 ;PASO3 ;PASO3 ;PASO3
sbi SPCR,MSTR;Poner el AVR en Modo Maestro.
;PASO4 ;PASO4 ;PASO4 ;PASO4
cbi SPCR,CPOL;SCK en Bajo cuando no transmite.
cbi SPCR,DORD;MSB se envia primero.
cbi SPCR,CPHA;fase del SCK.
;PASO5 ;PASO5 ;PASO5 ;PASO5
cbi SPCR,SPR0;Frecuencia de seal
cbi SPCR,SPR0;SCK es igual a fosc principal.
;PASO6 ;PASO6 ;PASO6 ;PASO6
sbi SPCR,SPIE;Habilita Int SPI
;PASO7 ;PASO7 ;PASO7 ;PASO7
sbi SPCR,SPE;Habilita periferico SPI
;PASO8 ;PASO8 ;PASO8 ;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
63














































64
OMBRE DEL PERIFRICO: UART - UIVERSAL ASYCHROOUS
RECEIVER AD TRASMITTER.

DESCRIPCI GEERAL.
La UART permite al microcontrolador establecer comunicaciones seriales RS-232 con
otros dispositivos. El tipo de comunicacin Full Duplex, Asncrona y las velocidades de
transferencia son de hasta 115200 b.p.s.

DISPOIBLE E
AT90S2313, AT90xS2333, AT90xS4433, AT90S4414, AT90S8515AT90xS4434,
AT90xS8535.

APLICACIOES
La UART es a menudo utilizada para realizar interfaces con computadoras personales.
Tambin se utiliza para adquisicin de datos mediante la conexin con otros instrumentos
tales como multmetros.

REGISTROS IVOLUCRADOS
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 funcin se puede observar en la Tabla UART-2.
BIT significado FUCI
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..
UDRE UART Data Register
Empty
Mediante este bit la UART indica ya est lista
para enviar otro dato.
FE Framing Error Se establece a 1 cuando el bit de STOP es cero.
(Un Error en la recepcin).
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...
65
Continuacin...
BIT SIGIFICADO FUCI
RXCIE RX Complete Interrupt
Enable
1 Habilita Interrupcin de Recepcin.
TXCIE TX Complete Interrupt
Enable
1 Habilita Interrupcin de Transmisin.
UDRIE UART Data Register
Interrupt Enable
1 Habilita Interrupcin de Registro de Datos
Vaco.
RXE Receiver Enable 1 Habilita la Recepcin de datos.
TXE Transmitter Enable 1 Habilita la Transmisin 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 TRASMISI DE DATOS.

Para recibir o transmitir por la UART se deben de habilitar primero los bits RXEN y TXEN
del registro UCR.

El registro UDR se utiliza para recibir y transmitir datos por la UART. La longitud de los
datos generalmente es de 8 bits, sin embargo, se puede configurar al perifrico para que la
longitud sea de 9 bits mediante el bit CHR9 del registro UCR. Esto es til para ciertas
aplicaciones donde el noveno bit puede servir como bit de direccin.
Para saber si ha llegado un dato por la UART puede utilizarse el bit RXC del registro USR:
si este bit se encuentra en 1 puede leerse el registro UDR para recuperar el ltimo dato
recibido. Otra opcin es habilitar la interrupcin de recepcin y dentro de la I.S.R. leer el
registro UDR.

Para transmitir datos por la UART simplemente escriba al registro UDR, esto har que el
perifrico realice lo necesario para comenzar a transmitir. Es conveniente revisar el bit
TXC, para asegurarse que ya se ha transmitido completamente un dato antes de enviar otro.
La recepcin y transmisin de datos se realiza por los pines RXD y TXD del
microcontrolador, la Tabla UART-3 muestra la posicin de estos pines en cada miembro de
la familia AVR con empaque DIP.
66

DISPOSITIVO TXD RXD
AT90S2313
3
(PD1)
2
(PD0)
AT90xS2333
3
(PD1)
2
(PD0)
AT90xS4433
3
(PD1)
2
(PD0)
AT90S8515
11
(PD1)
10
(PD0)
AT90S4414
11
(PD1)
10
(PD0)
AT90xS4434
15
(PD1)
14
(PD0)
AT90xS8535
7
(PB6)
6
(PB5)
Tabla UART-3. Localizacin de los pines TXD y RXD en la familia AVR.
(EMPAQUETADO DIP).

En las comunicaciones seriales la velocidad de transmisin / recepcin de datos es muy
importante. Esta velocidad esta relacionada con el Baud Rate.

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

) 1 ( 16 +
=
UBRR
fosc
Rate Baud --------------(1)

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

Baud rate
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
Tabla UART-4. Valores ms comunes de Baud Rate.

En lugar de proporcionar una tabla completa con valores de UBRR, Baud Rate y
frecuencias de oscilador principal (f
osc
)

se mostrar un mtodo para encontrar el valor de
UBRR en funcin de Baud Rate y f
osc
.
Para configurar las transmisiones / recepciones a un Baud Rate especfico (Tabla UART-3)
proceda como se muestra a continuacin.

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

=
Rate Baud
Error
REAL
Rate Baud
1 100 % --------------(3)
Se recomienda que el porcentaje de error sea menor a 1%.

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

(b) Redondeando se tiene UBRR =12

(c) 19230.769
) 1 12 ( 16
4000000
=
+
=
REAL
Rate Baud

68
(d) 2 . 0 16 . 0
19200
19230.769
1 100 % =

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

Tabla UART-5. Valores de UBRR para algunas frecuencias de cristal.

SECUECIA DE COFIGURACI UART

1. Deshabilite interrupciones. Recomendado pero no necesario.
2. Configure los pines TXD y RXD como entradas.
3. Configure el Baud Rate. Ver SECCION SELECCIN 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 aplicacin lo requiere, habilite las interrupciones siguientes:

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

6. Habilite la interrupcin transmisin y recepcin de datos. Ver Tabla UART-2.
7. Habilite interrupciones globales.

Para transmitir un dato por medio de la UART, simplemente escriba al registro UDR el
dato correspondiente. Para leer la ultima palabra recibida, lea el valor del registro UDR.


f
osc
= 1.8432 Mhz

f
osc
= 3.6864 Mhz f
osc
= 7.3728 Mhz
BAUD
RATE
%ERROR UBRR %ERROR UBRR %ERROR UBRR
2400 0.0 47 0.0 95 0.0 191
4800 0.0 23 0.0 47 0.0 95
9600 0.0 11 0.0 23 0.0 47
14400 0.0 7 0.0 15 0.0 31
19200 0.0 5 0.0 11 0.0 23
28800 0.0 3 0.0 7 0.0 15
38400 0.0 2 0.0 5 0.0 11
57600 0.0 1 0.0 3 0.0 7
76800 33.3 1 0.0 2 0.0 5
115200 0.0 0 0.0 1 0.0 3
69
I.S.R.
Para que se generen interrupciones se requiere que se encuentren habilitadas, incluidas las
interrupciones globales.
Cuando se completa una transmisin, se genera la Interrupcin de Transmisin Para evitar
corrupcin de datos, antes de escribir al registro UDR verifique que se haya completado la
transferencia anterior.
Cuando se recibe un dato por la UART, se genera la Interrupcin de Recepcin, si el dato
anterior no fue ledo, se genera un error de sobreflujo.
La Tabla UART-6 muestra el vector de interrupcin y la direccin correspondiente para
cada dispositivo de la familia AVR.

ITERRUPCI
DE RECEPCIO
ITERRUPCI
DE TRASMISIO
ITERRUPCI
DE UDR VACIO
DISPOSITIVO
VECTOR DIRECCIO VECTOR DIRECCIO VECTOR DIRECCIO
AT90S2313 8 $007 10 $009 9 $008
AT90xS2333 9 $008 11 $00A 10 $009
AT90xS4433 9 $008 11 $00A 10 $009
AT90S8515 10 $009 12 $00B 11 $00A
AT90S4414 10 $009 12 $00B 11 $00A
AT90xS4434 12 $00B 14 $00D 13 $00C
AT90xS8535 12 $00B 14 $00D 13 $00C

Tabla UART-6. Vectores de interrupcin para UART.

IMPLATACIO
En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en
velocidad.

El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,
Interrupciones de Recepcin y Transmisin habilitadas. f
osc
es 4MHZ Cada vez que llega
un dato por la UART se hace eco.

;-Configuracin
;-Manejo Por Interrupciones.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************************
.org URXCaddr ;Vector de UART Recepcion completa.
rjmp Rx_Completa ;redireccionado.
.org UDREaddr ;Vector de Registro UDR vacio.
70
rjmp UDR_Vacio ;redireccionado.
.org UTXCaddr ;Vector de UART Transmisin completa.
rjmp Tx_Completa ;redireccionado.
;************************************************************************
;ISR De Transmision Completa
Tx_Completa:
;Escriba aqui su codigo
reti
;************************************************************************
;ISR De Recepcion Completa
Rx_Completa:
;Escriba aqui su codigo
in r18,UDR;Lee el ltimo dato recibido.
;Se guarda en r18.
out UDR,r18 ;Regresar el dato (ECO).
reti
;************************************************************************
;ISR De UDR Vacio.
UDR_Vacio:
;Escriba aqui su codigo
reti
RESET: ;inicio de programa.
;************************************************************************
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
;************************************************************************
;PASO 1 ;PASO 1 ;PASO 1 ;PASO 1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO ;PASO ;PASO ;PASO 2 22 2
cbi DDRD,0;Pin RXD como entrada
cbi DDRD,1;Pin TXD como entrada
;PASO 3 ;PASO 3 ;PASO 3 ;PASO 3
ldi r17,0x0c;Baud Rate=19200
out UBRR,r17;
;PASO 4 ;PASO 4 ;PASO 4 ;PASO 4
cbi UCR,CHR9;Longitud de Datos 8 bits
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5
sbi UCR,RXCIE;Interrupcin de Recepcin.
sbi UCR,TXCIE;Interrupcin de Transmisin.
cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada.
;PASO 6 ;PASO 6 ;PASO 6 ;PASO 6
sbi UCR,TXEN;Habilita Transmisin
sbi UCR,RXEN;Habilita Recepcin.
71
;PASO 7 ;PASO 7 ;PASO 7 ;PASO 7
sei ;Habilita Interrupciones Globales
loop:
nop
nop
rjmp loop ;loop infinito

En aras de la claridad, el cdigo presentado no est optimizado ni en tamao ni en
velocidad.

El siguiente programa configura a la UART a 19200 Baudios. Longitud de 8 Bits,. f
osc
es
4MHZ Cada vez que llega un dato por la UART se hace eco.

;-Configuracin
;-Manejo Por Escaneo.
;************************************************************************
.include "8515def.inc" ;archivo que contiene los nombres de registros
;especiales
;Sustityalo por el archivo correspondiente al
;microcontrolador que utiliza.
;************************************************************************
.org $0 ;vector de inicio.
rjmp RESET ;redireccionado a la direccin donde se encuentra RESET
;************************************************************************
RESET: ;inicio de programa.
;************************************************************************
ldi r16,high(RAMEND)
out SPH,r16
ldi r16,low(RAMEND)
out SPL,r16
;************************************************************************
;PA ;PA ;PA ;PASO 1 SO 1 SO 1 SO 1
cli ;SREG<I>=0.int. deshabilitadas.
;PASO 2 ;PASO 2 ;PASO 2 ;PASO 2
cbi DDRD,0;Pin RXD como entrada
cbi DDRD,1;Pin TXD como entrada
;PASO 3 ;PASO 3 ;PASO 3 ;PASO 3
ldi r17,0x0c;Baud Rate=19200
out UBRR,r17;
;PASO 4 ;PASO 4 ;PASO 4 ;PASO 4
cbi UCR,CHR9;Longitud de Datos 8 bits
;PASO 5 ;PASO 5 ;PASO 5 ;PASO 5
cbi UCR,RXCIE;Interrupcin de Recepcin.NO HABILITADA.
cbi UCR,TXCIE;Interrupcin de Transmisin. NO HABILITADA.
cbi UCR,UDRIE;Interrupcin de UDR vaco.No Habilitada. NO HABILITADA.
72
;PASO 6 ;PASO 6 ;PASO 6 ;PASO 6
sbi UCR,TXEN;Habilita Transmisin
sbi UCR,RXEN;Habilita Recepcin.
;PASO 7 ;PASO 7 ;PASO 7 ;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




























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



75
BIBLIOGRAFA.


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

You might also like