0% encontró este documento útil (0 votos)
117 vistas33 páginas

Stackinttimers

Este documento describe los conceptos de pila, interrupciones y temporizadores. Brevemente explica que una pila es una estructura de datos LIFO que se usa para almacenar información temporal como parámetros de función y variables locales. También cubre los mecanismos de interrupción hardware y software, así como la configuración e implementación de temporizadores en microcontroladores para medir intervalos de tiempo y generar señales periódicas.

Cargado por

Yelidi Caballero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
117 vistas33 páginas

Stackinttimers

Este documento describe los conceptos de pila, interrupciones y temporizadores. Brevemente explica que una pila es una estructura de datos LIFO que se usa para almacenar información temporal como parámetros de función y variables locales. También cubre los mecanismos de interrupción hardware y software, así como la configuración e implementación de temporizadores en microcontroladores para medir intervalos de tiempo y generar señales periódicas.

Cargado por

Yelidi Caballero
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

Stacks , INT, Timers

Stack
•Preguntas
Stack
•Que es un stack?
•Operaciones en un stack?
• Push, pop

SP 0x1023

0x00
Stack
•Microprocesadores & microcontroladores incluyen un
stack manejada en hardware
•El top del stack se almacena en el registro
•Normalmente se llama SP( stack pointer)
•Stack usualmente crece de arriba hacia abajo
•Dependiendo del microcontrolador(mp) el stack puede
residir en memoria de datos, una memoria solo para el
stack, o no tener.
Stack
•Cual es la direccion de inicio del stack?
•Cuantos byte tiene el stack?
•Cual es la necesidad de un stack?
l
Lenguajes de Alto nivel
l
Parametros a funciones , valores de retorno
l
Variables locales
l
Direccion de retorno
l
Preservar registros
l
Lenguaje ensamblador
l
Direccion de retorno( call)
l
Preservar registros (interrupciones, call, etc)
Stack
•Practica comun inicializar el stack pointer al
inicio del programa con el valor de la direccion
mas alta de la memoria donde recide el stack
•En nuestro caso
l
SPH , SPL porque?
l
High(Ramend)??
Stack
•Pushing and Poping
Stack
•Funciones en ensamblador (r)call y ret
Stack
•RET
Stack
•Ex
•func:
Push sreg
Push r16
Add r16,r17
Mov r18,r17
Pop r16
Pop sreg
ret
Interrupts
•Eventos asincronos
•Como saber cuando paso algo?
•Polling- chequeo periodico
•Interrupts- llamar a una subrutina especial
•Interrupts- mecanismo para atender de manera
asincrona forzando una llamada a una
subrutina( fuera de ejecucion normal)
Interrupts
Clasificaciones
•Internas | externas
•Hardware | software(trap)
•Makeable- | non maskeable
Interrupts
•Mecanismo De interrupciones
The identification of the interrupt source. H
Saving the current value of the PC register, thus providing a means to return from
the interrupt service routine. H
The PC is loaded either with, or from, the address of a reserved memory area, called
theinterrupt vector.( interrupt vectors son unicos, normalmente hardwire no pueden ser
modificados)

At the address of the interrupt vector, the program must contain either the address
of the interrupt service routine (HC11 uses this technique) or an instruction for
an unconditional jump to this routine (AVR and 8051 work this way).
The next step is the execution of theInterrupt Service Routine (ISR).
Interrupts
•Control de Interrupt por software
•Para maskeable interrupts
l
Habilitadas de modo global
l
Individual
l
Interrupt flag se habilita cuando pasa un evento
Interrupts
•AVR Interrupts
•The interrupt vector does not containthe
addressof the interrupt service routine, but a
jump instruction to that routine
•Solo reset es non- maskeable
•Vector de Interrupion localizado en 0x0000 a
0x0032 (328p)
•Son habilitadas globalmente usando el bit7 del
sreg
•Cada maskeable interrupt posee un bit de
Interrupts
•Atmega 328p interrup vector
interrupts
•Posible codigo del interrupt vector
•Posible codigo para un ISR
l
Avr studio
Timers
•Como medir intervalos de tiempo
correctamente?
•Como ejecutar codigo( funciones) a intervalos
regulares
•Como hacer polling
•Como generar senales ?
Timers
•Frecuencia
•Periodo
•Duty Cicle
Timers
•Propositos de los timers
l
detect and capture external timing events
l
generate timing events to control and access
external systems
Timers
•Diagrama general de un Timer
•TCNT (counter 8,16 bits) se incrementa (dec)
dependiendo de la fuente de reloj
•Senal puede ser interna( clock+prescaler),
externa( reloj , eventos)
•TCTL ( control)
•TFLG(flags) dependiendo del estado del timer
Timers
•Modos de operacion
•Overflow – cuenta de 0 a max(2^8,16) y a cero
•Input capture -> valor de TCNT se transfiere a
ICR
•Output compare -> TCNT se compara con OCR
cuando son iguales interrupt
•External Event counter – tcnt se incrementa con
la entrada externa de reloj
Timers
•Duracion del timer ?
•Cuanto equivale cada incremento?
•Ciclo de reloj?
ATMega328p Timers
•2 timers de 8 bits
•1 timer 16 bits
ATMega328p Timers
•Modos de operacion
•Normal Mode(free running)
l
TCNTn es incrementado por siempre. Que pasa a 0xFF si es 8 bits?
l
TOV0 set en overflow
l
Si la interrupcion de timer overflow es set -> se genera una interrupcion
l
TOV0 debe ser puesta cero por el programador o si ??
ATMega328p Timers
•Modos de operacion
•Clear Timer on Compare Match (CTC) Mode
OCR0A Register is used to manipulate the
counter resolution.
the counter is cleared to zero when the counter
value (TCNT0) matches theOCR0A
OCF0A Flag es set cuando OCR0A== TCNT0
una interrupcion se genera si el bit de mascara
de la interrupcion es 1
•Pwm modes ( tema de pwm)
Timer0(8bits)
•Registros
l
TCNT0 -> counter

l
OCR0A
Timer0
•TIMSK0

•TIFR0
Timer 0
•TCCR0A

•TCCR0B
Timer 0
•Pasos Usuales para configurar un timer
l
Decidir intervalo de tiempo(calcular valor)
l
Decidir fuente de los pulsos
l
Decidir Modo de operaciion
l
Cargar TCNT -> TCNT0 con valor inicial
l
Cargar compare register( depende del modo)-
OCR0A
l
Configurar interrupciones( TIMSK0)
l
Configurar registros de control con el modo
elegido, fuente,prescaler,etc
l
TCCR0A y TCCR0B
l
Timer 0
•Ejemplo
l
Una frecuencia de reloj de 8Mhz
l
Cual es la duraccion maxima del timer si no se
usa prescaler?
l
Como se podria generar un delay de 8 micro
segundo usando el timer cero? Modos de
operacion y reloj?
l
Cual es el tiempo mas largo que se tomaria
timer0 para generar poner el flag de overflow
en 1?
l
Timer 1
•Como hacer delay mas grandes?
l
Usar una variable que se incrementa en el vector de
interrupcion ? Mala idea ?
l
Usar un timer mas grande
l
Timer 1 de 16 bits
l
Se puede configurar usando los mismos registros de
timer0 excepto ( 16 bit counter)
l
Nombres diferentes

También podría gustarte