Tutorial de ensamblador AVR 7 (11 / 12 paso)

Paso 11: ¿Cómo lo deshago del botón? Versión 3

Hay numerosas maneras que podríamos proceder. En primer lugar podríamos agregar hardware para deshacerse del botón. Por ejemplo podemos tratar de poner un transistor en el circuito en la línea de salida de la opresión de una tecla para que se tome un chorrito pequeño de la corriente de la salida y enviar un pulso de 5V al pin de interrupción PD2.

Sin embargo, probablemente sería demasiado ruido al menos y en el peor de los casos no permite suficiente tiempo para que una pulsación precisa lectura puesto que la tensión de salida del teclado no tiene tiempo para stabilze antes de la lectura de ADC es capturado.

Así que llegaríamos con una solución de software. Lo que nos gustaría hacer es añadir una interrupción sobre el pin PD2 y escribir un manejador de interrupción para él que se llama una lectura única del perno del teclado. En otras palabras, deshacerse de la autotrigger interrupción del ADC y añadir una interrupción externa que llama a la ADC en su interior. Así la señal para leer al ADC llega después de la señal PD2 ya ha ocurrido y esto podría dar cosas tiempo suficiente para estabilizar a un voltaje exacto antes el pin PC0 es leído y convertido. Todavía tenemos una terminación ADC interrumpir que salidas el resultado a la pantalla del analizador al final.

¿Tiene sentido? Bien vamos a hacerlo...

Echa un vistazo en el nuevo código adjuntado.

Ver los siguientes cambios:

  1. Hemos añadido un rjmp en dirección .org 0x0002 para manejar la interrupción externa INT0
  2. Hemos cambiado el registro EIMSK para indicar que quiere interrumpir en el pasador de INT0
  3. Hemos cambiado el ADATE pin en el registro ADCSRA para desactivar autotriggering
  4. Nos libramos de la configuración de ADCSRB ya que son irrelevantes cuando ADATE está apagado
  5. Ya no tenemos que restablecer la bandera de disparo externo ya que la rutina de interrupción INT0 hace automáticamente cuando termina, ya no tenemos una rutina de interrupción, sólo activa el ADC de una señal en ese pin, así que tuvimos que borrar esa bandera con la mano.

Ahora en el controlador de interrupción que simplemente llamamos una conversión individual de la ADC.

Ejercicio 5: ejecutar esta versión y ver qué pasa.

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