Tutorial de ensamblador AVR 3 (6 / 9 paso)

Paso 6: Desbordamiento de controlador

Así que vamos a asumir que el registro de timer/counter0 acaba desbordado. Ahora sabemos que el programa recibe una señal de interrupción y ejecuta 0x0020 que dice el contador de programa PC para saltar a la etiqueta "overflow_handler" el siguiente es el código que escribió después de esa etiqueta:

 overflow_handler: inc overflows cpi overflows, 61 brne PC+2 clr overflows reti 

Lo primero que hace es incrementar la variable "desbordamientos" (que es nuestro nombre de registro de trabajo de propósito general R17) entonces "compara" el contenido de desbordamientos con el número 61. La manera en que los trabajos de la cpi de instrucción son que simplemente resta los dos números y si el resultado es cero establece la bandera Z del registro SREG (te dije que estaríamos viendo este registro todo el tiempo). Si los dos números son iguales entonces la bandera Z será 1, si los dos números no son iguales, entonces será un 0.

La siguiente línea dice "brne PC + 2", lo que significa "rama si no es igual". Esencialmente, comprueba el flag Z en SREG y si no es uno (es decir, los dos números no son iguales, si fueran iguales, se crearía la bandera de cero) la PC ramifica a PC + 2, lo que significa salta la siguiente linea y va directo a "reti" que regresa de la interrupción a cualquier lugar en el código cuando llegó la interrupción. Si la instrucción brne encontró un 1 en el bit del indicador de cero no rama y en su lugar sólo seguirá la siguiente línea que clr desbordamientos restablecer a 0.

¿Cuál es el resultado neto de todo esto?

Así vemos que cada vez que hay un desbordamiento del temporizador este controlador aumenta el valor de "desbordamientos" de uno. Así que la variable "desborda" es contando el número de desbordamientos que se producen. Cuando el número llega a 61 nos restablecerlo a cero.

Ahora ¿por qué en el mundo ¿hacer?

Vamos a ver. ¿Recordar que nuestra velocidad de reloj de la CPU es 16MHz y "prescaled" con TCCR0B para que el contador solo cuenta a una tasa de 15625 cuentas por segunda a la derecha? Y cada vez que el temporizador llega a una cuenta de 255 que desborda. Eso significa que desborda 15625/256 = 61.04 veces por segundo. Nos estamos manteniendo la cuenta del número de desbordamientos con nuestra variable "desbordamientos" y estamos comparando ese número con 61. Así vemos que "desborda" será igual a 61 cada segundo! Así nuestro handler restablecerá "desborda" a cero una vez cada segundo. Así que si tuviéramos que simplemente controlar los variable "desbordamientos" y tomar nota de cada tiempo restablece a cero que sería contando segundo a segundo en tiempo real.

Ahora que hemos "manejado" las interrupciones de desbordamiento del temporizador. Asegúrese de que entender cómo esta obras y entonces se mueven en el siguiente paso donde hacemos uso de ello.

Artículos Relacionados

Tutorial de ensamblador AVR 11

Tutorial de ensamblador AVR 11

Bienvenido a Tutorial 11!En este breve tutorial, finalmente vamos a construir la primera parte de nuestro proyecto final.Lo primero que debes hacer es ir al último paso de este tutorial y ver el video. Luego vienen aquí. [pausa mientras haces eso...]
Tutorial de ensamblador AVR 1

Tutorial de ensamblador AVR 1

He decidido escribir una serie de tutoriales sobre cómo escribir programas del lenguaje ensamblador para el Atmega328p que es el microcontrolador utilizado en el Arduino. Si la gente sigue interesada voy a seguir poner a uno una semana o así hasta qu
Tutorial de ensamblador AVR 6

Tutorial de ensamblador AVR 6

Bienvenido a Tutorial 6!Tutorial de hoy será corto donde desarrollamos un método sencillo para comunicar datos entre uno atmega328p y otro con dos puertos conectan. Luego tomar los dados rodillo del Tutorial 4 y el analizador de registro de 5 Tutoria
Tutorial de ensamblador AVR 8

Tutorial de ensamblador AVR 8

Bienvenido a Tutorial 8!En este breve tutorial vamos a tomar un poco de diversión de introducir nuevos aspectos de la programación de lenguaje ensamblador para mostrar cómo mover nuestros componentes prototipos a un separado "" del circuito impr
Tutorial de ensamblador AVR 9

Tutorial de ensamblador AVR 9

Bienvenido a Tutorial 9.Hoy nos muestra cómo controlar un display de 7 segmentos y un display de 4 dígitos utilizando nuestro código de lenguaje ensamblador ATmega328P y AVR. En el curso de hacer esto que tendremos que hacer desvíos cómo utilizar la
Tutorial de ensamblador AVR 7

Tutorial de ensamblador AVR 7

Bienvenido a Tutorial 7!Hoy vamos a ver primero cómo limpiar un teclado y luego se muestra cómo utilizar los puertos de entrada analógicos para comunicarse con el teclado.Esto lo haremos utilizando como entrada de interrupciones y un solo cable. Se a
Tutorial de ensamblador AVR 10

Tutorial de ensamblador AVR 10

Bienvenido al Tutorial de 10!Lo siento que tomó tanto tiempo para salir esta próxima entrega, pero esta es una época bastante ajetreada del año. En cualquier caso, aquí está!Hemos recorrido un largo camino y probablemente ya eres lo suficientemente c
Tutorial de ensamblador AVR 5

Tutorial de ensamblador AVR 5

Hoy vamos a tomar un vistazo a los distintos lugares de la memoria en el microcontrolador Atmega328p y ver si podemos comprender mejor cómo se almacenan las cosas, donde se almacenan y cómo funcionan los punteros y tablas de búsqueda.El tutorial se s
Tutorial de ensamblador AVR 4

Tutorial de ensamblador AVR 4

Bienvenido a tutorial número 4!En este tutorial vamos construir un circuito que simulará el balanceo de dos dados. Entonces vamos primero a escribir un programa de fuerza bruta que hace el trabajo. A continuación simplificamos ese programa de varias
Tutorial de ensamblador AVR 2

Tutorial de ensamblador AVR 2

Este tutorial es una continuación de "AVR Assembler Tutorial 1"Si no has ido por 1 Tutorial debe parar ahora y hacer que uno primero.En este tutorial vamos a continuar nuestro estudio de programación del lenguaje ensamblador de la atmega328p en
Un enfoque avanzado de programación de Arduino y AVR

Un enfoque avanzado de programación de Arduino y AVR

Este instructable es obligada lectura para todo aquel que esté familiarizado con núcleo AVR virutas y Arduino.Bien, para ser más específicos, al leer el instructivo, usted será capaz de:1) saber la diferencia correcta entre el AVR y Arduino.2) progra
Placa de desarrollo para microcontrolador Attiny84

Placa de desarrollo para microcontrolador Attiny84

Se trata de una placa de desarrollo para microcontrolador Attiny84. Tha Attiny84 chip tiene 11 pines direccionables con el IDE de Arduino, 8k de memoria flash para el almacenamiento de programa y 512 bytes de RAM disponible para las variables de pila
La tortura de Raven, aguda

La tortura de Raven, aguda

este es un pequeño dispositivo que diseñé para el sencillo propósito de ser discretamente molesta. Espera una cantidad predeterminada de tiempo, y luego empieza a emitir pitidos agudos. Yo he programado mina para tomar ventaja de una propiedad intere
Cariño, encogi lo Arduino: pasar de Arduino a ATtiny y escribir el código en C de AVR puro

Cariño, encogi lo Arduino: pasar de Arduino a ATtiny y escribir el código en C de AVR puro

Arduino es una plataforma de software y de gran dura - pero con todas sus características también está un poco hinchado y a menudo necesita sólo una pequeña parte de todas las funciones. A veces el proyecto requiere dispositivos más pequeños y más ba