Tutorial de ensamblador AVR 4 (3 / 9 paso)

Paso 3: Temporizador/contador 0

De ahora en adelante no voy a entrar en detalle sobre las partes del código que ya entiendes de partes anteriores de estos tutoriales. También, si ves las instrucciones que look nuevo o no recuerda lo que hacen, ya sabes qué hacer. Puede hacia el conjunto de instrucciones resumidas en la hoja de datos y Recuérdate a ti mismo de esa manera, o usted puede ir a la instrucción completa set manual: www.atmel.com/images/doc0856.pdf que tiene una explicación más detallada de cada instrucción y hasta código de ejemplo de cómo se utiliza. Creo que encontrarás un manual útil si planea seguir la codificación en lenguaje ensamblador. Lo que haremos de aquí en adelante, en vez de análisis línea por línea, es hablar de los nuevos conceptos que vamos a introducir que no has visto antes en estos tutoriales.

Así que, antes de llegar a subrutinas, vamos a empezar por echar un vistazo a nuestro reloj temporizador. Recuerdan ese pasado tutorial mostramos cómo utilizar interrupciones y el temporizador/contador TCNT0 para crear un método para tener retrasos en el programa donde nos necesiten. Te darás cuenta que, en esta ocasión, hemos cambiado lo ligeramente. Aquí está el código que estoy hablando:

Como se puede ver, en lugar de FCPU/1024 como hemos utilizado la última vez, esta vez estamos utilizando FCPU/64. Esto significa que nuestro contador de tiempo se marque en una tasa de

Tasa de TCNT0 = 16000000/64 = 250000 ticks por segundo.

Ahora introducimos algo nuevo. la comparación de la salida de OCR0A registro A (ver la hoja de datos en la Página 108). Establecemos un valor de 249 en este registro (ver tabla 15-1 en la página 94). Luego ponemos el pin del modo de generación de la onda WGM01 en TCCR0A y ver tabla 15-8 en la página 106 que esto significa que el temporizador se limpiar y reconfigurar cada vez que alcanza el valor que hemos puesto en OCR0A. En otras palabras se restablecerá a 0 cuando el temporizador llega a 249. Esto significa que se desbordará una vez cada 250 cuenta. Ya que se cuenta a una tasa de 250000 garrapatas por segundo, tarda 1/1000 de un segundo derrame. Por lo tanto TCNT0 se desborda ahora cada milisegundo.

Luego habilitamos interrupciones de desbordamiento del temporizador y también interrupciones globales como explicamos en el tutorial 3.

Creo que ustedes estarán de acuerdo que el contador de tiempo/contadores son cosas complicadas. Hay tres contadores diferentes en el microcontrolador y se puede utilizar a tiempo y la interrupción en diferentes combinaciones si quieres cosas diferentes de tiempo o desea comparar el tiempo que lleva hacer una cosa en lugar de otro. Las aplicaciones son infinitas. Por ahora sólo utilizaremos TCNT0 ya que creo que conseguir utilizado a él es bastante complicado.

Una buena manera de ver todos estos especiales registra como TCCR0A, TCCR0A, TIMSK0, y como es como un panel con interruptores de palanca en él. Como en una NASA control de habitación o a operadores de radio de jamón establecido. Usted puede activar y desactivar diversos modificadores y este controlará cómo funciona el dispositivo. En este caso el contador TCNT0. He incluido una foto de mis días de estudiante de posgrado en física de partículas de pie en la sala de control de un laboratorio de acelerador. Estos chips de codificación a veces puede sentirse como.

La razón por la que nos hemos establecido para desbordar cada ms es que podemos crear una subrutina de "retraso" que se demora en milisegundos (al igual que la función de "delay()" Arduino).

En nuestro código se puede ver que se ha implementado con una subrutina que cuenta el número de desbordamientos y compara dicho valor con el número de milisegundos que desea diferir.

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 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
Tutorial de ensamblador AVR 3

Tutorial de ensamblador AVR 3

Bienvenido a tutorial número 3!Antes de empezar quiero hacer un punto filosófico. No tenga miedo de experimentar con los circuitos y el código que estamos construyendo en estos tutoriales. Cambiar los cables alrededor de añadir nuevos componentes, sa
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