Tema 4: Microcontrolador
Tema 4: Microcontrolador
AT90S2313
AT90S2313
•
- Sistema de interrupciones y RESET
- Sistema de interrupciones y RESET
•
- Mapa de registros de E/S
- Mapa de registros de E/S
•
- Registros del sistema
- Registros del sistema
•
- Puertos B y D
- Puertos B y D
•
- Temporizadores
- Temporizadores
•
- UART
- UART
•
- Perro guardián
- Perro guardián
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
Un RESET reinicia la ejecución de instrucciones y
Un RESET reinicia la ejecución de instrucciones y
sitúa al microcontrolador en un estado inicial
sitúa al microcontrolador en un estado inicial
conocido.
conocido.
•
Existen tres causas que activan un RESET
Existen tres causas que activan un RESET
– Power On Reset ( encendido )Power On Reset ( encendido )
– Reset externo ( terminal de Reset )Reset externo ( terminal de Reset )
– Watchdog reset ( activado por el perro guardián )Watchdog reset ( activado por el perro guardián )
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
Estructura de generación de un reset interno
Estructura de generación de un reset interno
•
Power On Reset (POR)
Power On Reset (POR)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
Reset externo
Reset externo
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
Watchdog Reset
Watchdog Reset
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
Tras un RESET interno, el microcontrolador inicia
Tras un RESET interno, el microcontrolador inicia
el proceso de ejecución de instrucciones a partir
el proceso de ejecución de instrucciones a partir
de la dirección 0 de la memoria de programa.
de la dirección 0 de la memoria de programa.
•
Otras causas (interrupciones) provocan que se
Otras causas (interrupciones) provocan que se
inicie la ejecución de instrucciones en posiciones
inicie la ejecución de instrucciones en posiciones
determinadas de la memoria de programa
determinadas de la memoria de programa
( vectores de interrupción)
( vectores de interrupción)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
¿Qué es una interrupción?
¿Qué es una interrupción?
– Evento que requiere la suspensión (interrupción) Evento que requiere la suspensión (interrupción) del programa actual y la ejecución de una rutina
del programa actual y la ejecución de una rutina
concreta (rutina de interrupción), al final de la cual
concreta (rutina de interrupción), al final de la cual
se devuelve el control al programa interrumpido.
se devuelve el control al programa interrumpido.
•
¿Qué se necesita para procesar interrupciones?
¿Qué se necesita para procesar interrupciones?
– - Pila. Almacena la dirección de la instrucción del - Pila. Almacena la dirección de la instrucción del programa interrumpido.
programa interrumpido.
– - Rutina de interrupción - Rutina de interrupción instaladainstalada debidamente debidamente según su
según su vector de interrupciónvector de interrupción..
–
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
•
La tabla de vectores de interrupción
La tabla de vectores de interrupción
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
Vector nº Dirección de programa
Origen Definición de interrupción
1 $000 RESET Hardware Pin and Watchdog Reset
2 $001 INT0 External interrupt request 0
3 $002 INT1 External interrupt request 1
4 $003 TIMER1, CAPT1 Timer/counter 1 capture event 5 $004 TIMER1, COMP1 Timer/counter 1 compare match
6 $005 TIMER1, OVF1 Timer/counter 1 overflow
7 $006 TIMER0,OVF0 Timer/counter 0 overflow
8 $007 UART,RX UART,rx complete
9 $008 UART,UDRE UART Data register empty
10 $009 UART,TX UART, tx complete
11 $00A ANA_COMP Analog Comparator
•
Ejemplo de utilización de los vectores de
Ejemplo de utilización de los vectores de
interrupción.
interrupción.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Sistema de control de interrupciones y RESET
Sistema de control de interrupciones y RESET
$000 rjmp RESET ; Reset Handler
$001 rjmp EXT_INT0 ; IRQ0 Handler
$002 rjmp EXT_INT1 ; IRQ1 Handler
$003 rjmp TIM_CAPT1 ; Timer1 capture Handler $004 rjmp TIM_COMP1 ; Timer1 compare Handler $005 rjmp TIM_OVF1 ; Timer1 overflow Handler $006 rjmp TIM_OVF0 ; Timer0 overflow Handler $007 rjmp UART_RX ; UART RX complete Handler
$008 rjmp UART_UDRE ; UART data register empty Handler $009 rjmp UART_7X ; UART TX complete Handler
$00A rjmp ANA_COMP ; Analog Comparator Handler
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros de entrada/salida
Registros de entrada/salida
SRAM 32 registros 64 registros E/S 11Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros de entrada/salida
Registros de entrada/salida
SRAM 32 registros 64 registros E/S 12•
Permiten configurar:
Permiten configurar:
– - Interrupciones externas. - Interrupciones externas.
– - Modos de bajo consumo.- Modos de bajo consumo.
•
Registros:
Registros:
– GIMSKGIMSK
– GIFRGIFR
– MCUCRMCUCR
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema
Registros del sistema
•
Registro General Interrupt Mask.
Registro General Interrupt Mask.
– Habilita la generación de interrupciones externas a Habilita la generación de interrupciones externas a través de los pines PD2 (INT0) y PD3(INT1), si los
través de los pines PD2 (INT0) y PD3(INT1), si los
bits INT0 e INT1 están a 1. Quedan inhabilitadas
bits INT0 e INT1 están a 1. Quedan inhabilitadas
para 0.
para 0.
•
Las interrupciones externas pueden ser activadas
Las interrupciones externas pueden ser activadas
por nivel o por flanco (MCUCR).
por nivel o por flanco (MCUCR).
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (GIMSK)
Registros del sistema (GIMSK)
•
Registro General Interrupt Flag.
Registro General Interrupt Flag.
– Un evento en el pin PD2 (INT0), pone a 1 INTF0. Si los bits Un evento en el pin PD2 (INT0), pone a 1 INTF0. Si los bits INT0 de GIMSK e I de SREG están a 1, la CPU salta a
INT0 de GIMSK e I de SREG están a 1, la CPU salta a
ejecutar la instrucción situada en la dirección $001.
ejecutar la instrucción situada en la dirección $001.
– Un evento en el pin PD3 (INT1), pone a 1 INTF1. Si los bits Un evento en el pin PD3 (INT1), pone a 1 INTF1. Si los bits INT1 de GIMSK e I de SREG están a 1, la CPU salta a
INT1 de GIMSK e I de SREG están a 1, la CPU salta a
ejecutar la instrucción situada en la dirección $002.
ejecutar la instrucción situada en la dirección $002.
– Los flags INTFi se ponen a cero automáticamente cuando se Los flags INTFi se ponen a cero automáticamente cuando se ejecuta la rutina de interrupción o alternativamente se ponen
ejecuta la rutina de interrupción o alternativamente se ponen
a 0,
a 0, ¡ escribiendo un 1¡ escribiendo un 1
!.
!.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (GIFR)
Registros del sistema (GIFR)
•
MCU control register.
MCU control register.
– SE: (1) Habilita la posibilidad de pasar a modo SE: (1) Habilita la posibilidad de pasar a modo
“dormido” mediante la instrucción SLEEP. (0) Inhabilita
“dormido” mediante la instrucción SLEEP. (0) Inhabilita
la posibilidad.
la posibilidad.
– En modo “dormido”, se para la ejecución de En modo “dormido”, se para la ejecución de instrucciones. Bajo consumo de energía.
instrucciones. Bajo consumo de energía.
– El microcontrolador se “despierta” cuando ocurre una El microcontrolador se “despierta” cuando ocurre una interrupción. Entonces ejecuta la interrupción y
interrupción. Entonces ejecuta la interrupción y
contínua la ejecución a continuación de la instrucción
contínua la ejecución a continuación de la instrucción
SLEEP
SLEEP
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (MCUCR)
Registros del sistema (MCUCR)
•
MCU control register.
MCU control register.
– SM: Selecciona entre dos “modos de dormir”SM: Selecciona entre dos “modos de dormir”
• (1)Power Down(1)Power Down
– Oscilador externo paradoOscilador externo parado
– Funcionan: watchdog, interrupciones externas y resetFuncionan: watchdog, interrupciones externas y reset
• (0)Idle Mode(0)Idle Mode
– Funcionan: temporizadores, watchdog e Funcionan: temporizadores, watchdog e interrupciones
interrupciones
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (MCUCR)(cont.)
Registros del sistema (MCUCR)(cont.)
•
MCU control register.
MCU control register.
– ISC11,ISC10: Configuran el modo de interrupción ISC11,ISC10: Configuran el modo de interrupción de la entrada externa INT1
de la entrada externa INT1
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (MCUCR)(cont.)
Registros del sistema (MCUCR)(cont.)
•
MCU control register.
MCU control register.
– ISC01,ISC00: Configuran el modo de interrupción ISC01,ISC00: Configuran el modo de interrupción de la entrada externa INT0
de la entrada externa INT0
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Registros del sistema (MCUCR)(cont.)
Registros del sistema (MCUCR)(cont.)
•
Permiten
Permiten
configurar
configurar
los
los
pines
pines
del
del
microcontrolador y establecer (o leer) los valores
microcontrolador y establecer (o leer) los valores
de tensión asociados a cada uno de los pines
de tensión asociados a cada uno de los pines
•
Existen dos puertos:
Existen dos puertos:
– - Puerto B de 8 bits- Puerto B de 8 bits
– - Puerto D de 7 bits.- Puerto D de 7 bits.
–
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puertos
Puertos
•
Puerto E/S bidireccional de 8 bits. Cada pin es
Puerto E/S bidireccional de 8 bits. Cada pin es
configurado individualmente.
configurado individualmente.
•
Hay tres registros asociados al puerto B
Hay tres registros asociados al puerto B
– PORTB: (R/W)PORTB: (R/W)
– DDRB: (R/W)DDRB: (R/W)
– PINB: (R)PINB: (R)
•
Los pines del puerto disponen de resistencias de
Los pines del puerto disponen de resistencias de
pull-up que pueden activarse o no.
pull-up que pueden activarse o no.
•
Alternativamente, los pines del puerto pueden
Alternativamente, los pines del puerto pueden
tener otras funciones activas o no.
tener otras funciones activas o no.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto B
Puerto B
•
Funciones alternativas a los pines del puerto B
Funciones alternativas a los pines del puerto B
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto B(cont.)
Puerto B(cont.)
•
Registro DDRB
Registro DDRB
(R/W)
(R/W)
– El bit K de este registro define si el pin K será El bit K de este registro define si el pin K será usado como entrada (0) o salida (1).
usado como entrada (0) o salida (1).
•
PINB (R)
PINB (R)
– Permite la lectura de los valores lógicos de los Permite la lectura de los valores lógicos de los pines.
pines.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto B(cont.)
Puerto B(cont.)
23 23
•
Registro PORTB
Registro PORTB
(R/W)
(R/W)
– Si el pin K está configurado como salida, el valor Si el pin K está configurado como salida, el valor lógico del bit K de este registro, se muestra en pin
lógico del bit K de este registro, se muestra en pin
correspondiente.
correspondiente.
– Si el pin K está configurado como entrada, Si el pin K está configurado como entrada, entonces el bit K de este registro activa la
entonces el bit K de este registro activa la
resistencia de pull-up(1), o no, (0).
resistencia de pull-up(1), o no, (0).
– ¡Lecturas de este registro no reflejan el estado de ¡Lecturas de este registro no reflejan el estado de los pines!
los pines!
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto B(cont.)
Puerto B(cont.)
•
Puerto E/S bidireccional de 7 bits. Cada pin es
Puerto E/S bidireccional de 7 bits. Cada pin es
configurado individualmente.
configurado individualmente.
•
Hay tres registros asociados al puerto D
Hay tres registros asociados al puerto D
– PORTD: (R/W)PORTD: (R/W)
– DDRD: (R/W)DDRD: (R/W)
– PIND: (R)PIND: (R)
•
Los pines del puerto disponen de resistencias de
Los pines del puerto disponen de resistencias de
pull-up que pueden activarse o no.
pull-up que pueden activarse o no.
•
Alternativamente, los pines del puerto pueden
Alternativamente, los pines del puerto pueden
tener otras funciones activas o no.
tener otras funciones activas o no.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto D
Puerto D
•
Funciones alternativas a los pines del puerto D
Funciones alternativas a los pines del puerto D
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto D(cont.)
Puerto D(cont.)
•
Registro DDRD
Registro DDRD
(R/W)
(R/W)
– El bit K de este registro define si el pin K será El bit K de este registro define si el pin K será usado como entrada (0) o salida (1).
usado como entrada (0) o salida (1).
•
PIND (R)
PIND (R)
– Permite la lectura de los valores lógicos de los Permite la lectura de los valores lógicos de los pines.
pines.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto D(cont.)
Puerto D(cont.)
•
Registro PORTD
Registro PORTD
(R/W)
(R/W)
– Si el pin K está configurado como salida, el valor Si el pin K está configurado como salida, el valor lógico del bit K de este registro, se muestra en pin
lógico del bit K de este registro, se muestra en pin
correspondiente.
correspondiente.
– Si el pin K está configurado como entrada, Si el pin K está configurado como entrada, entonces el bit K de este registro activa la
entonces el bit K de este registro activa la
resistencia de pull-up(1), o no, (0).
resistencia de pull-up(1), o no, (0).
– ¡Lecturas de este registro no reflejan el estado de ¡Lecturas de este registro no reflejan el estado de los pines!
los pines!
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Puerto D(cont.)
Puerto D(cont.)
•
Son
Son
contadores
contadores
que
que
se
se
incrementan
incrementan
periódicamente (modo temporizador) o cada vez
periódicamente (modo temporizador) o cada vez
que se genera un evento (modo contador)
que se genera un evento (modo contador)
•
Existen dos temp/cont:
Existen dos temp/cont:
– - T0 de 8 bits- T0 de 8 bits
– - T1 de 16 bits (con funciones añadidas)- T1 de 16 bits (con funciones añadidas)
•
Ambos
Ambos
temporizadores
temporizadores
pueden
pueden
generar
generar
interrupciones.
interrupciones.
–
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizadores/Contadores
Temporizadores/Contadores
•
El temporizador 0 y 1 disponen de un prescaler
El temporizador 0 y 1 disponen de un prescaler
de 10 bits que permite configurar la fuente de
de 10 bits que permite configurar la fuente de
reloj hacia cada temporizador.
reloj hacia cada temporizador.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizadores/Contadores
Temporizadores/Contadores
•
Timer/Counter Interrupt Mask register.
Timer/Counter Interrupt Mask register.
– TOEI0: (1) Habilita interrupción por overflow del TOEI0: (1) Habilita interrupción por overflow del timer 0. (0) Inhabilita.
timer 0. (0) Inhabilita.
– TOEI1: Igual que TOIEO pero para el timer 1.TOEI1: Igual que TOIEO pero para el timer 1.
– OCIE1A: (1) Habilita interrupción de comparación OCIE1A: (1) Habilita interrupción de comparación del timer1. (0) Inhabilita.
del timer1. (0) Inhabilita.
– TICIE1: (1) Habilita interrupción por captura ICP. TICIE1: (1) Habilita interrupción por captura ICP. (0) Inhabilita.
(0) Inhabilita.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizadores/Contadores (TIMSK)
Temporizadores/Contadores (TIMSK)
•
Timer/Counter Interrupt Flag register.
Timer/Counter Interrupt Flag register.
– TOV0: Se pone a 1 si ocurre overflow en timer 0. Si los bits TOV0: Se pone a 1 si ocurre overflow en timer 0. Si los bits TOIE0 de TIMSK e I de SREG están a 1, la CPU salta a
TOIE0 de TIMSK e I de SREG están a 1, la CPU salta a
ejecutar la instrucción situada en la dirección $006.
ejecutar la instrucción situada en la dirección $006.
– TOV1: Se pone a 1 si ocurre overflow en timer 1. Si los bits TOV1: Se pone a 1 si ocurre overflow en timer 1. Si los bits TOIE1 de TIMSK e I de SREG están a 1, la CPU salta a
TOIE1 de TIMSK e I de SREG están a 1, la CPU salta a
ejecutar la instrucción situada en la dirección $005.
ejecutar la instrucción situada en la dirección $005.
– Los flags TOV0 y TOV1 se ponen a cero automáticamente Los flags TOV0 y TOV1 se ponen a cero automáticamente cuando se ejecuta la rutina de interrupción correspondiente,
cuando se ejecuta la rutina de interrupción correspondiente,
o se ponen a cero manualmente
o se ponen a cero manualmente ¡ESCRIBIENDO un 1!¡ESCRIBIENDO un 1!
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizadores/Contadores
Temporizadores/Contadores
(TIFR)
(TIFR)
•
Timer/Counter Interrupt Flag register (cont.).
Timer/Counter Interrupt Flag register (cont.).
– OCF1A: Se pone a 1 los contenidos del timer 1 y el registro OCF1A: Se pone a 1 los contenidos del timer 1 y el registro de comparación, coinciden. Si los bits OCIE1A de TIMSK e I
de comparación, coinciden. Si los bits OCIE1A de TIMSK e I
de SREG están a 1, la CPU salta a ejecutar la instrucción
de SREG están a 1, la CPU salta a ejecutar la instrucción
situada en la dirección $004.
situada en la dirección $004.
– ICF1: Se pone a 1 si el contenido del timer1 se ha transferido ICF1: Se pone a 1 si el contenido del timer1 se ha transferido al registro ICR. Si los bits TICIE de TIMSK e I de SREG están
al registro ICR. Si los bits TICIE de TIMSK e I de SREG están
a 1, la CPU salta a ejecutar la instrucción situada en la
a 1, la CPU salta a ejecutar la instrucción situada en la
dirección $003.
dirección $003.
– Los flags TOV0 y TOV1 se ponen a cero automáticamente Los flags TOV0 y TOV1 se ponen a cero automáticamente cuando se ejecuta la rutina de interrupción correspondiente,
cuando se ejecuta la rutina de interrupción correspondiente,
o se ponen a cero manualmente
o se ponen a cero manualmente ¡ESCRIBIENDO un 1!¡ESCRIBIENDO un 1!
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizadores/Contadores
Temporizadores/Contadores
(TIFR) (cont.)
(TIFR) (cont.)
• Dispone de un contador de 8 bits (TCNT0)Dispone de un contador de 8 bits (TCNT0)
• Un registro de control TCCR0 que configura la señal de Un registro de control TCCR0 que configura la señal de reloj que llega al TCNT0
reloj que llega al TCNT0
• Registros de habilitación y flags (TIFR,TIMSK)Registros de habilitación y flags (TIFR,TIMSK)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 0
Temporizador 0
•
Registro TCCR0.
Registro TCCR0.
– Los bits CS0x definen la entrada de reloj del contadorLos bits CS0x definen la entrada de reloj del contador
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 0
Temporizador 0
•
Registro TCNT0
Registro TCNT0
– Contador ascendente.Contador ascendente.
– Overflow cuando pasa de 0xFF a 0x00Overflow cuando pasa de 0xFF a 0x00
– El contador se carga en el ciclo posterior a su El contador se carga en el ciclo posterior a su escritura
escritura
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 0
Temporizador 0
•
Dispone de un contador de 16 bits (TCNT1H,
Dispone de un contador de 16 bits (TCNT1H,
TCNT1L)
TCNT1L)
•
Un registro de captura de 16 bits (ICR1H,ICR1L)
Un registro de captura de 16 bits (ICR1H,ICR1L)
•
Un registro de comparación de salida (OCR1AH,
Un registro de comparación de salida (OCR1AH,
OCR1AL)
OCR1AL)
•
Controla el comportamiento de la salida OC1 (PB3)
Controla el comportamiento de la salida OC1 (PB3)
ante determinados eventos.
ante determinados eventos.
•
Generación PWM.
Generación PWM.
•
Posibilidad de generación de tres interrupciones
Posibilidad de generación de tres interrupciones
(TIMSK, TIFR)
(TIMSK, TIFR)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCNT1H y TCNTL
TCNT1H y TCNTL
– Se incrementa en cada ciclo programado de Se incrementa en cada ciclo programado de prescaler.
prescaler.
– La lectura y escritura simultánea de los 16 bits se La lectura y escritura simultánea de los 16 bits se realiza a través del registro oculto TEMP (8 bits).
realiza a través del registro oculto TEMP (8 bits).
– Escritura: 1º en TCNT1H (->TEMP) y 2º en Escritura: 1º en TCNT1H (->TEMP) y 2º en TCNTIL.
TCNTIL.
– Lectura: 1º de TCNT1L (TCNT1H->TEMP) y 2º en Lectura: 1º de TCNT1L (TCNT1H->TEMP) y 2º en TCNT1H
TCNT1H
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
OCR1AH y OCR1AL
OCR1AH y OCR1AL
– Su contenido se compara continuamente con TCNT1.Su contenido se compara continuamente con TCNT1.
– En coincidencia, el flag OCF1A del TIFR se activa y se En coincidencia, el flag OCF1A del TIFR se activa y se actúa según se programó en los registros de control.
actúa según se programó en los registros de control.
– Si los bits OCIE1A de TIMS e I de SREG están a 1, se Si los bits OCIE1A de TIMS e I de SREG están a 1, se genera la interrupción de vector $4.
genera la interrupción de vector $4.
– Se escribe 1º en OCR1AH seguido de OCR1AL y se Se escribe 1º en OCR1AH seguido de OCR1AL y se lee, primero de OCR1AL y después OCR1AH.
lee, primero de OCR1AL y después OCR1AH.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
ICR1H y ICR1L
ICR1H y ICR1L
– Registro de 16 bits de sólo lectura que se carga con Registro de 16 bits de sólo lectura que se carga con el contenido de TCNT1 cuando se detecta un flanco
el contenido de TCNT1 cuando se detecta un flanco
en la entrada ICP (PD6).
en la entrada ICP (PD6).
– A la vez que la transferencia, se activa el flag ICF1 A la vez que la transferencia, se activa el flag ICF1 del TIFR, y si los bits OCIE1A de TIMS e I de SREG
del TIFR, y si los bits OCIE1A de TIMS e I de SREG
están a 1, se genera la interrupción de vector $3.
están a 1, se genera la interrupción de vector $3.
– Se escribe 1º en OCR1AH seguido de OCR1AL y se Se escribe 1º en OCR1AH seguido de OCR1AL y se lee, primero de OCR1AL y después OCR1AH.
lee, primero de OCR1AL y después OCR1AH.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCCR1B
TCCR1B
– CS12,CS11,CS10: Selecciona la temporización del CS12,CS11,CS10: Selecciona la temporización del timer1.
timer1.
•
º
º
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCCR1B(cont.)
TCCR1B(cont.)
– CTC1: Si es 1, TCNT1 se pone a 0 un ciclo de reloj de CTC1: Si es 1, TCNT1 se pone a 0 un ciclo de reloj de CPU después de la coincidencia en comparación. Si es
CPU después de la coincidencia en comparación. Si es
0, prosigue su cuenta.
0, prosigue su cuenta.
– ICES1: Escoge el tipo de flanco, que en la entrada ICES1: Escoge el tipo de flanco, que en la entrada ICP, genera la captura. (1) subida, (0) bajada.
ICP, genera la captura. (1) subida, (0) bajada.
– ICNC1: Cancela ruido sobre el terminal ICP. (1) Activo ICNC1: Cancela ruido sobre el terminal ICP. (1) Activo (0) Inactivo.
(0) Inactivo.
• Muestrea la entrada ICP durante cuatro ciclos Muestrea la entrada ICP durante cuatro ciclos consecutivos.
consecutivos.
• Se consideran valores válidos de ICP aquellos que Se consideran valores válidos de ICP aquellos que mantienen su constancia durante los cuatro ciclos.
mantienen su constancia durante los cuatro ciclos.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCCR1A
TCCR1A
– COM1A1,COM1A0: Determinan la acción sobre la COM1A1,COM1A0: Determinan la acción sobre la salida OC1 (PB3) en coincidencia en comparación.
salida OC1 (PB3) en coincidencia en comparación.
• Tienen función diferente si PWM está activo.Tienen función diferente si PWM está activo.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCCR1A(cont.)
TCCR1A(cont.)
– PWM11,PWM10: Seleccionan el modo de modulación PWM11,PWM10: Seleccionan el modo de modulación por anchura de pulsos que actúa sobre la salida OC1.
por anchura de pulsos que actúa sobre la salida OC1.
– En este modo, TCNT1 actúa como un contador En este modo, TCNT1 actúa como un contador reversible, desde $0 hasta TOP y de TOP a $0.
reversible, desde $0 hasta TOP y de TOP a $0.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
•
TCCR1A(cont.)
TCCR1A(cont.)
– Cuando el contenido de TCNT1 coincide con los 8,9 o Cuando el contenido de TCNT1 coincide con los 8,9 o 10 LSB’s de OCR1A, el pin OC1 se activa o borra
10 LSB’s de OCR1A, el pin OC1 se activa o borra
dependiendo de COM1A1, COM1A0.
dependiendo de COM1A1, COM1A0.
– En modo PWM, cualquier cambio en OCR1A no se En modo PWM, cualquier cambio en OCR1A no se
produce hasta que TCNT1 alcanza TOP. Esto previene
produce hasta que TCNT1 alcanza TOP. Esto previene
glitches.
glitches.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Temporizador 1
Temporizador 1
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
•
La comunicación serie utiliza un único hilo (+ tierra)
La comunicación serie utiliza un único hilo (+ tierra)
por el que los bits se transmiten uno detrás de otro.
por el que los bits se transmiten uno detrás de otro.
•
La unidad mínima de transferencia se denomina
La unidad mínima de transferencia se denomina
SDU (unidad de datos serie).
SDU (unidad de datos serie).
•
Una SDU contiene: un bit de start (cero lógico),
Una SDU contiene: un bit de start (cero lógico),
entre uno y dos bits de stop (1 lógico), entre 5 y 8
entre uno y dos bits de stop (1 lógico), entre 5 y 8
bits de datos y un bit de paridad (opcional) para
bits de datos y un bit de paridad (opcional) para
detección de errores.
detección de errores.
Datos Paridad Stop Start
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• Un transmisor asíncrono en reposo muestra por su pin Un transmisor asíncrono en reposo muestra por su pin TX un 1.
TX un 1.
• Un receptor asíncrono muestrea su pin RX Un receptor asíncrono muestrea su pin RX continuamente. Si detecta una transición de 1 a 0 (inicio
continuamente. Si detecta una transición de 1 a 0 (inicio
de un bit de start), se procede a recibir un carácter.
de un bit de start), se procede a recibir un carácter.
TX TX RX RX SDU2 SDU1 SDU1 SDU2 TX UDR reposo reposo ← tiempo Inicia la recepción 48
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART (Transmisor Receptor Asíncrono Universal):UART (Transmisor Receptor Asíncrono Universal):
• -Transmisor -Transmisor
• - Receptor- Receptor
• - Generador de baudios- Generador de baudios
• - Lógica de control e interrupciones- Lógica de control e interrupciones
• • • • Transmisor TX Receptor RX UART Generador de baudios Lógica de control e interrupciones 49
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313UART en el AT90S2313– - SDU: 8bits de datos + 1 bit (opcional)- SDU: 8bits de datos + 1 bit (opcional)
– - Diferentes velocidades de transferencia y recepción.- Diferentes velocidades de transferencia y recepción.
– - No es posible configurar el transmisor y el receptor - No es posible configurar el transmisor y el receptor con parámetros diferentes.
con parámetros diferentes.
– - Transmisor y receptor individualmente activos o - Transmisor y receptor individualmente activos o inactivos.
inactivos.
– - Detección de errores en recepción.- Detección de errores en recepción.
– - Posibilidad de generación de interrupciones.- Posibilidad de generación de interrupciones.
– - Registros: UDR, USR, UCR y UBRR.- Registros: UDR, USR, UCR y UBRR.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Transmisor)UART en el AT90S2313 (Transmisor)• • UDR TxSHR TxD SDU Bus de datos RX 7 6 5 4 3 2 1 0 TX UDRE FE USR OR 51
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Transmisor)UART en el AT90S2313 (Transmisor)• • UDR TxSHR TxD SDU Escritura 1 DATO 2 3 4 RX 7 6 5 4 3 2 1 0 TX UDRE FE USR OR
0: Estado inicial: UDRE=1 y TX=1
1: Escritura de un dato en UDR 2: El paso 1 pone a 0 UDRE
3: Se forma la SDU y se traspasa al registro TxSHR. Entonces UDRE=1 y TX=0
4: La transmisión de la SDU pone a uno el bit TX
UDR RxSHR Dato RxD Bus de datos RX 7 6 5 4 3 2 1 0 TX UDRE FE USR OR
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Receptor)UART en el AT90S2313 (Receptor)• •
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Receptor)UART en el AT90S2313 (Receptor)• • Data RxD RH R Lectura DATO 1 1 4 2 5 3 RX 7 6 5 4 3 2 1 0 TX UDRE FE USR OR UDR RxSHR Dato 0: Estado inicial: RX=0 1: Se recibe una SDU
2: Se manda al UDR los bits de datos de la SDU y se actualizan los bits FE y OR.
3: Se activa el bit RX del USR 4: Se produce la lectura del registro UDR
5: Se borra el bit RX
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Receptor)UART en el AT90S2313 (Receptor)• - Error de trama (FE)- Error de trama (FE)
– Se activa cuando la SDU entrante tiene un 0 como bit de stopSe activa cuando la SDU entrante tiene un 0 como bit de stop
– Se borra cuando se reciba una SDU con el bit de stop correcto.Se borra cuando se reciba una SDU con el bit de stop correcto.
–
• - Error de overrun (OR)- Error de overrun (OR)
– Se activa cuando la SDU del registro de desplazamiento es Se activa cuando la SDU del registro de desplazamiento es sobrescrita por otra SDU.
sobrescrita por otra SDU.
– Se borra cuando la SDU se transfiere al registro UDR.Se borra cuando la SDU se transfiere al registro UDR.
–
• •
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Generador de Baudios)UART en el AT90S2313 (Generador de Baudios)– Configura la velocidad de transmisión y recepciónConfigura la velocidad de transmisión y recepción
– Registro UBRR Registro UBRR
– • •
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Configuración)UART en el AT90S2313 (Configuración)– Se realiza en el registro UCRSe realiza en el registro UCR
• - Habilitación de interrupciones si están a 1:- Habilitación de interrupciones si están a 1:
– RXCIE: Dato nuevo en registro buffer de RX.RXCIE: Dato nuevo en registro buffer de RX.
– TXCIE: Registro desplazamiento TX vacío.TXCIE: Registro desplazamiento TX vacío.
– UDRIE: Registro buffer de TX vacío. UDRIE: Registro buffer de TX vacío.
– • •
RXCIE
7 6 5 4 3 2 1 0
TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
RX 7 6 5 4 3 2 1 0 TX UDRE FE OR USR UCR & & & Interrupción 57
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Configuración) (cont.)UART en el AT90S2313 (Configuración) (cont.)– - Habilitación/Inhabilitación del transmisor (TxEN) y - Habilitación/Inhabilitación del transmisor (TxEN) y el receptor (RxEN)
el receptor (RxEN)
– –
– - RxEN a 1 habilita el receptor y pone el pin - RxEN a 1 habilita el receptor y pone el pin PD0(RXD) como entrada (independientemente del
PD0(RXD) como entrada (independientemente del
valor del bit DDRD0). Un 0 inhabilita el receptor.
valor del bit DDRD0). Un 0 inhabilita el receptor.
– - TxEN a 1 habilita el transmisor y pone el pin PD1 - TxEN a 1 habilita el transmisor y pone el pin PD1 (TXD) como salida, con independencia de DDRD1.
(TXD) como salida, con independencia de DDRD1.
Un 0 inhabilita el transmisor. Un 0 inhabilita el transmisor. – • • RXCIE 7 6 5 4 3 2 1 0
TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
UCR
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Configuración) (cont.)UART en el AT90S2313 (Configuración) (cont.)– - Habilitación/Inhabilitación del noveno bit en - Habilitación/Inhabilitación del noveno bit en transmisión y recepción.
transmisión y recepción.
– CHR9 = 1, habilita, CHR9 = 0, inhabilita.CHR9 = 1, habilita, CHR9 = 0, inhabilita.
– –
– - En transmisión la SDU contiene los 8 bits - En transmisión la SDU contiene los 8 bits depositado en el UDR más el bit TXB8 del UCR.
depositado en el UDR más el bit TXB8 del UCR.
– - En recepción, los 8 bits lsb's de la SDU se - En recepción, los 8 bits lsb's de la SDU se mandan al registro UDR mientras que el noveno bit
mandan al registro UDR mientras que el noveno bit
se escribe en el bit RXB8 del UCR.
se escribe en el bit RXB8 del UCR.
RXCIE
7 6 5 4 3 2 1 0
TXCIE UDRIE RXEN TXEN CHR9 RXB8 TXB8
UCR
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
UART (Comunicaciones serie asíncronas)
UART (Comunicaciones serie asíncronas)
• UART en el AT90S2313 (Resumen de registros)UART en el AT90S2313 (Resumen de registros)–
• Vigila el funcionamiento del programa. Vigila el funcionamiento del programa.
• Dispone de un oscilador propio a 1Mhz con un “prescaler” Dispone de un oscilador propio a 1Mhz con un “prescaler” programable que permite el ajuste del intervalo de
programable que permite el ajuste del intervalo de
vigilancia entre 16 y 2048ms
vigilancia entre 16 y 2048ms
• El watchdog genera un RESET interno, transcurrido el El watchdog genera un RESET interno, transcurrido el tiempo de vigilancia.
tiempo de vigilancia.
• La instrucción WDR “redispara” el tiempo de vigilancia.La instrucción WDR “redispara” el tiempo de vigilancia.
• Dispone de un registro de control, WDTCR que activa o Dispone de un registro de control, WDTCR que activa o desactiva el perro guardián y establece el intervalo de
desactiva el perro guardián y establece el intervalo de
vigilancia
vigilancia
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Perro guardían (
Perro guardían (
Watchdog)
Watchdog)
•
WDTCR
WDTCR
– WDE,WDTOE habilitan o inhabilitan el perro WDE,WDTOE habilitan o inhabilitan el perro guardián.
guardián.
– WDP2-0, seleccionan el intervalo de vigilancia.WDP2-0, seleccionan el intervalo de vigilancia.
Microcontrolador
Microcontrolador
AT90S2313
AT90S2313
Perro guardían (Watchdog)
Perro guardían (Watchdog)
– Habilitación del perro guardiánHabilitación del perro guardián
• WDE = 1WDE = 1
–
Inhabilitación del perro guardián
Inhabilitación del perro guardián
• Escribir, a la vez, un 1 en WDTOE y WDEEscribir, a la vez, un 1 en WDTOE y WDE
• En los siguientes cuatro ciclos de reloj, escribir un 0 En los siguientes cuatro ciclos de reloj, escribir un 0 en WDE.
en WDE.
– Transcurridos cuatro ciclos de reloj de que WDTOE Transcurridos cuatro ciclos de reloj de que WDTOE se puso a 1, el hardware lo pone a 0.
se puso a 1, el hardware lo pone a 0.