tema 4: microcontrolador at90s2313 - dte.us.es · registros del sistema (mcucr) 16 • mcu control...

63
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 1

Upload: buikiet

Post on 23-Jan-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

Tema 4: MicrocontroladorTema 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

• 1

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema 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 RESETExisten 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 )

2

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

• Estructura de generación de un reset internoEstructura de generación de un reset interno

3

• Power On Reset (POR)Power On Reset (POR)

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

4

• Reset externoReset externo

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

5

• Watchdog ResetWatchdog Reset

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

6

• 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)

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

7

• ¿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..

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

8

• La tabla de vectores de interrupción La tabla de vectores de interrupción

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema de control de interrupciones y RESET

Vector nº Dirección deprograma

Origen Definición de interrupción

1 $000 RESET Hardware Pin and Watchdog Reset2 $001 INT0 External interrupt request 03 $002 INT1 External interrupt request 14 $003 TIMER1, CAPT1 Timer/counter 1 capture event5 $004 TIMER1, COMP1 Timer/counter 1 compare match6 $005 TIMER1, OVF1 Timer/counter 1 overflow7 $006 TIMER0,OVF0 Timer/counter 0 overflow8 $007 UART,RX UART,rx complete9 $008 UART,UDRE UART Data register empty10 $009 UART,TX UART, tx complete11 $00A ANA_COMP Analog Comparator

9

• Ejemplo de utilización de los vectores de Ejemplo de utilización de los vectores de interrupción. interrupción.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Sistema de control de interrupciones y RESETSistema 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

10

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros de entrada/salidaRegistros de entrada/salida

SRAM

32 registros

64 registros E/S

11

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros de entrada/salidaRegistros 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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema Registros del sistema

13

• 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).

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (GIMSK)Registros del sistema (GIMSK)

14

• 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!.!.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (GIFR)Registros del sistema (GIFR)

15

• 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 SLEEPSLEEP

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (MCUCR)Registros del sistema (MCUCR)

16

• 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

interrupcionesinterrupciones

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (MCUCR)(cont.)Registros del sistema (MCUCR)(cont.)

17

• 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 INT1de la entrada externa INT1

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (MCUCR)(cont.)Registros del sistema (MCUCR)(cont.)

18

• 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 INT0de la entrada externa INT0

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Registros del sistema (MCUCR)(cont.)Registros del sistema (MCUCR)(cont.)

19

• Permiten configurar los pines del Permiten configurar los pines del microcontrolador y establecer (o leer) los valores microcontrolador y establecer (o leer) los valores de tensión asociados a cada uno de los pinesde 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313PuertosPuertos

20

• 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 BHay 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto BPuerto B

21

• Funciones alternativas a los pines del puerto BFunciones alternativas a los pines del puerto B

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto B(cont.)Puerto B(cont.)

22

• Registro DDRBRegistro 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto B(cont.)Puerto B(cont.)

2323

• Registro PORTBRegistro 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!

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto B(cont.)Puerto B(cont.)

24

• 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 DHay 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto DPuerto D

25

• Funciones alternativas a los pines del puerto DFunciones alternativas a los pines del puerto D

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto D(cont.)Puerto D(cont.)

26

• Registro DDRDRegistro 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto D(cont.)Puerto D(cont.)

27

• Registro PORTDRegistro 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!

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Puerto D(cont.)Puerto D(cont.)

28

• Son contadores que se incrementan Son contadores que se 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 temporizadores pueden generar Ambos temporizadores pueden generar interrupciones.interrupciones.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizadores/ContadoresTemporizadores/Contadores

29

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizadores/ContadoresTemporizadores/Contadores

30

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizadores/Contadores (TIMSK)Temporizadores/Contadores (TIMSK)

31

• 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!

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizadores/ContadoresTemporizadores/Contadores (TIFR) (TIFR)

32

• 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!

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizadores/ContadoresTemporizadores/Contadores (TIFR) (cont.) (TIFR) (cont.)

33

• 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 TCNT0reloj que llega al TCNT0

• Registros de habilitación y flags (TIFR,TIMSK)Registros de habilitación y flags (TIFR,TIMSK)

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 0Temporizador 0

34

• Registro TCCR0.Registro TCCR0.

– Los bits CS0x definen la entrada de reloj del contadorLos bits CS0x definen la entrada de reloj del contador

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 0Temporizador 0

35

• Registro TCNT0Registro 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 escrituraescritura

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 0Temporizador 0

36

• 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)

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

37

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

38

• TCNT1H y TCNTLTCNT1H 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 TCNT1HTCNT1H

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

39

• OCR1AH y OCR1ALOCR1AH 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

40

• ICR1H y ICR1LICR1H 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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

41

• TCCR1BTCCR1B

– CS12,CS11,CS10: Selecciona la temporización del CS12,CS11,CS10: Selecciona la temporización del timer1.timer1.

• ºº

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

42

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

43

• TCCR1ATCCR1A

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

44

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

45

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Temporizador 1Temporizador 1

46

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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 StopStart

47

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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

RXRX

SDU2

SDU1

SDU1SDU2TX

UDR

reposo reposo

← tiempo

Inicia la recepción

48

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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

Generadorde baudios

Lógica de control e

interrupciones

49

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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.50

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)

• UART en el AT90S2313 (Transmisor)UART en el AT90S2313 (Transmisor)

•UDR

TxSHR TxDSDU

Bus de datos

RX

7 6 5 4 3 2 1 0

TX UDRE FE

USR

OR

51

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)

• UART en el AT90S2313 (Transmisor)UART en el AT90S2313 (Transmisor)

UDR

TxSHR TxDSDU

Escritura1

DATO

2

3

4

RX

7 6 5 4 3 2 1 0

TX UDRE FE

USROR

0: Estado inicial: UDRE=1 y TX=11: Escritura de un dato en UDR2: El paso 1 pone a 0 UDRE3: Se forma la SDU y se traspasa al registro TxSHR. Entonces UDRE=1 y TX=04: La transmisión de la SDU pone a uno el bit TX

52

UDR

RxSHR

DatoRxD

Bus de datos

RX

7 6 5 4 3 2 1 0

TX UDRE FE

USR

OR

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)

• UART en el AT90S2313 (Receptor)UART en el AT90S2313 (Receptor)

53

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)

• UART en el AT90S2313 (Receptor)UART en el AT90S2313 (Receptor)

DataRxD

RHR

Lectura

DATO 11

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=01: Se recibe una SDU2: 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 USR4: Se produce la lectura del registro UDR5: Se borra el bit RX

54

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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.

•55

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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

56

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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 CHR9 RXB8 TXB8TXEN

RX

7 6 5 4 3 2 1 0

TX UDRE FE ORUSR

UCR

&&

&Interrupción

57

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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 CHR9 RXB8 TXB8TXENUCR

58

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (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 CHR9 RXB8 TXB8TXENUCR

59

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)MicrocontroladorMicrocontrolador AT90S2313 AT90S2313UART (Comunicaciones serie asíncronas)UART (Comunicaciones serie asíncronas)

• UART en el AT90S2313 (Resumen de registros)UART en el AT90S2313 (Resumen de registros)

60

• 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 2048msvigilancia 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 vigilanciavigilancia

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Perro guardían (Perro guardían (Watchdog) Watchdog)

61

• WDTCRWDTCR

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

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Perro guardían (Watchdog)Perro guardían (Watchdog)

62

– Habilitación del perro guardiánHabilitación del perro guardián• WDE = 1WDE = 1

– Inhabilitación del perro guardiánInhabilitació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.

MicrocontroladorMicrocontrolador AT90S2313 AT90S2313Perro guardían (Perro guardían (Watchdog)Watchdog)

63