Funcionamiento del Timer 0

5
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers Página 1 Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información PROGRAMAS PARA VISUALIZAR COMO CONTADOR NORMAL ASCENDENTE AL TEMPORIZADOR/CONTADOR 0 Los siguientes programas, contenidos en un solo archivo .ASM, permiten comprobar la operación del Timer/Contador 0 mediante la simulación en el AVR Studio. .NOLIST .INCLUDE "m164pdef.inc" .LIST ; .DEF AUX1 = R16 .DEF AUX2 = R17 .DEF AUX3 = R18 ; .CSEG JMP PROGP ; PROGP: ; MODO: CONTADOR NORMAL ; EJEMPLO: TIMER HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0A ; LUEGO HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0B ; Y FINALMENTE HASTA DETECTAR EL DESBORDAMIENTO ; INICIALIZACIÓN DE LOS REGISTROS COMPARADORES DEL T/C0 LDI AUX1,0x15 OUT OCR0A,AUX1 LDI AUX1,0x3A OUT OCR0B,AUX1 ; PROGRAMACIÓN DE LOS REGISTROS DE CONTROL DEL T/C0 ; COM0A1:0 = 00 OC0A DESCONECTADA ; COM0B1:0 = 00 OC0B DESCONECTADA ; DOS BITS RESERVADOS = 00 ; WGM01:0 = 00 MODO CONTADOR NORMAL LDI AUX1,0B00000000 OUT TCCR0A,AUX1 ; FOC0A = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0A ; FOC0B = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0B ; DOS BITS RESERVADOS = 00 ; WGM02 = 0 MODO CONTADOR NORMAL ; CS02:0 = 001 RELOJ IGUAL A Fosc LDI AUX1,0B00000001 OUT TCCR0B,AUX1 ; LAZO DONDE ESPERA EL EMPAREJAMIENTO CON OCR0A LOOP1: IN AUX1,TIFR0 SBRS AUX1,OCF0A RJMP LOOP1 ; CONTINÚA AL ENCENDER LA BANDERA DE COMPARACIÓN OCF0A ; REGISTRO DE CONTROL DEL T/C0 PARA DETENER ; CS02:0 = 000 LDI AUX1,0B00000000 OUT TCCR0B,AUX1 ; BORRAR LA BANDERA DE COMPARACIÓN OCF0A DEL T/C0 LDI AUX1,0B00000010 OUT TIFR0,AUX1 ; EL T/C0 DETENIDO LDI AUX1,10 STOP1: DEC AUX1 BRNE STOP1 Figura Nº1 Figura Nº2 Figura Nº3 No cambia el Timer

description

Programas para comprobar el funcionamiento del Timer con el Simulador AVR STUDIO

Transcript of Funcionamiento del Timer 0

Page 1: Funcionamiento del Timer 0

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers

Página 1

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

PROGRAMAS PARA VISUALIZAR COMO

CONTADOR NORMAL ASCENDENTE AL

TEMPORIZADOR/CONTADOR 0

Los siguientes programas, contenidos en un solo archivo .ASM, permiten comprobar la

operación del Timer/Contador 0 mediante la simulación en el AVR Studio.

.NOLIST .INCLUDE "m164pdef.inc" .LIST ; .DEF AUX1 = R16 .DEF AUX2 = R17 .DEF AUX3 = R18 ; .CSEG JMP PROGP ; PROGP: ; MODO: CONTADOR NORMAL ; EJEMPLO: TIMER HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0A ; LUEGO HASTA DETECTAR EL EMPAREJAMIENTO CON OCR0B ; Y FINALMENTE HASTA DETECTAR EL DESBORDAMIENTO ; INICIALIZACIÓN DE LOS REGISTROS COMPARADORES DEL T/C0 LDI AUX1,0x15 OUT OCR0A,AUX1 LDI AUX1,0x3A OUT OCR0B,AUX1 ; PROGRAMACIÓN DE LOS REGISTROS DE CONTROL DEL T/C0 ; COM0A1:0 = 00 OC0A DESCONECTADA ; COM0B1:0 = 00 OC0B DESCONECTADA ; DOS BITS RESERVADOS = 00 ; WGM01:0 = 00 MODO CONTADOR NORMAL LDI AUX1,0B00000000 OUT TCCR0A,AUX1 ; FOC0A = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0A ; FOC0B = 0 NO OBLIGA A UNA COMPARACIÓN CON OCR0B ; DOS BITS RESERVADOS = 00 ; WGM02 = 0 MODO CONTADOR NORMAL ; CS02:0 = 001 RELOJ IGUAL A Fosc LDI AUX1,0B00000001 OUT TCCR0B,AUX1 ; LAZO DONDE ESPERA EL EMPAREJAMIENTO CON OCR0A LOOP1: IN AUX1,TIFR0 SBRS AUX1,OCF0A RJMP LOOP1 ; CONTINÚA AL ENCENDER LA BANDERA DE COMPARACIÓN OCF0A ; REGISTRO DE CONTROL DEL T/C0 PARA DETENER ; CS02:0 = 000 LDI AUX1,0B00000000 OUT TCCR0B,AUX1 ; BORRAR LA BANDERA DE COMPARACIÓN OCF0A DEL T/C0 LDI AUX1,0B00000010 OUT TIFR0,AUX1 ; EL T/C0 DETENIDO LDI AUX1,10 STOP1: DEC AUX1 BRNE STOP1

Figura Nº1

Figura Nº2

Figura Nº3

No cambia

el Timer

Page 2: Funcionamiento del Timer 0

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers

Página 2

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

; REGISTRO DE CONTROL DEL T/C0 PARA ARRANCAR ; CON EL RELOJ IGUAL A Fosc ; CS02:0 = 001 LDI AUX1,0B00000001 OUT TCCR0B,AUX1 ; LAZO DONDE ESPERA EL EMPAREJAMIENTO CON OCR0B LOOP2: IN AUX1,TIFR0 SBRS AUX1,OCF0B RJMP LOOP2 ; CONTINÚA AL ENCENDER LA BANDERA DE COMPARACIÓN OCF0B ; REGISTRO DE CONTROL DEL T/C0 PARA DETENER ; CS02:0 = 000 LDI AUX1,0B00000000 OUT TCCR0B,AUX1 ; BORRAR LA BANDERA DE COMPARACIÓN OCF0B DEL T/C0 LDI AUX1,0B00000100 OUT TIFR0,AUX1 ; EL T/C0 DETENIDO LDI AUX1,10 STOP2: DEC AUX1 BRNE STOP2 ; REINICIALIZACIÓN DE LOS REGISTROS COMPARADORES DEL T/C0 LDI AUX1,0xF0 OUT OCR0A,AUX1 LDI AUX1,0xF8 OUT OCR0B,AUX1 ; VALOR INICIAL DEL REGISTRO CONTADOR T/C0 LDI AUX1,0xEC OUT TCNT0,AUX1 ; REGISTRO DE CONTROL DEL T/C0 PARA ARRANCAR ; CON EL RELOJ IGUAL A Fosc/8 ; CS02:0 = 010 LDI AUX1,0B00000010 OUT TCCR0B,AUX1 ; LAZO DONDE ESPERA EL DESBORDAMIENTO LOOP3: IN AUX1,TIFR0 SBRS AUX1,TOV0 RJMP LOOP3 ; CONTINÚA CUANDO SE DESBORDA ; REGISTRO DE CONTROL DEL T/C0 PARA DETENER ; CS02:0 = 000 LDI AUX1,0B00000000 OUT TCCR0B,AUX1 ; BORRAR LAS TRES BANDERAS DEL T/C0 LDI AUX1,0B00000111 OUT TIFR0,AUX1 ; EL T/C0 DETENIDO LDI AUX1,10 STOP3: DEC AUX1 BRNE STOP3 ; FINAL: RJMP FINAL .EXIT ; FIN DEL MODULO FUENTE

A continuación se muestran capturas de pantalla del AVR Studio, detallando los

contenidos de los Registros del Timer0, donde se puede apreciar los cambios que se

producen en el Registro Contador (TCNT0) y en las Banderas (OCF0A, OCF0B y

TOV0) a medida que avanza el programa.

Figura Nº4

No cambia

el Timer

No cambia

el Timer

Figura Nº5

Figura Nº6

Figura Nº7

Figura Nº8

Page 3: Funcionamiento del Timer 0

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers

Página 3

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

Figura Nº1 Inicialización de los Registros del Timer 0

Figura Nº2 Lazo de espera hasta que se encienda OCF0A

Figura Nº3 Encendido OCF0A, detención del contador y borrado de OCF0A

TCNT0=0x01

1 ciclo de

máquina

TCNT0=0x02

1 ciclo de

máquina

TCNT0=0x04

2 ciclo de

máquina

TCNT0=0x05

1 ciclo de

máquina

TCNT0=0x06

1 ciclo de

máquina

TCNT0=0x08

2 ciclo de

máquina

TCNT0=0x09

1 ciclo de

máquina

TCNT0=0x0A

1 ciclo de

máquina

TCNT0=0x15

Emparejando a

OCR0A

TCNT0=0x16

Bandera OCF0A

encendida

TCNT0=0x18

Siguen dentro

del lazo

TCNT0=0x19

Siguen dentro

del lazo

TCNT0=0x1B

Salta fuera del

lazo

TCNT0=0x1C

Se prepara para

detener

TCNT0=0x1D

Timer0

detenido

TCNT0=0x1D

Bandera OC0A

apagada

Page 4: Funcionamiento del Timer 0

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers

Página 4

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

Figura Nº4 Arranque del contador y lazo de espera hasta que se encienda OCF0B

Figura Nº5 Encendido OCF0B, detención del contador y borrado de OCF0B

Figura Nº6 Re inicialización de los Registros del Timer 0

TCNT0=0x1D

Timer0

detenido

TCNT0=0x1D

Activar ingreso

del reloj

TCNT0=0x1E

1 ciclo de

máquina

TCNT0=0x1F

1 ciclo de

máquina

TCNT0=0x21

2 ciclo de

máquina

TCNT0=0x22

1 ciclo de

máquina

TCNT0=0x23

1 ciclo de

máquina

TCNT0=0x25

2 ciclo de

máquina

TCNT0=0x3A

Emparejando a

OCR0B

TCNT0=0x3B

Bandera OCF0B

encendida

TCNT0=0x3D

Siguen dentro

del lazo

TCNT0=0x3E

Siguen dentro

del lazo

TCNT0=0x40

Salta fuera del

lazo

TCNT0=0x41

Se prepara para

detener

TCNT0=0x42

Timer0

detenido

TCNT0=0x42

Bandera OC0B

apagada

Page 5: Funcionamiento del Timer 0

SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento de los Timers

Página 5

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

Figura Nº7 Arranque del contador y lazo de espera hasta que se encienda TOV0

Figura Nº8 Detención del contador y borrado de las tres banderas OCF0A, OCF0B y

TOV0

TCNT0=0xEC

Arranca Timer0

con reloj/8

TCNT0=0xED

8 ciclos de

máquina

TCNT0=0xF0

Emparejando a

OCR0A

TCNT0=0xF1

Bandera OCF0A

encendida

TCNT0=0xF8

Emparejando a

OCR0B

TCNT0=0xF9

Bandera OCF0B

encendida

TCNT0=0xFF

Valor final del

contador

TCNT0=0x00

Bandera TOV0

encendida

TCNT0=0x01

Timer0

detenido

TCNT0=0x01

Banderas

apagadas