Tutorial de ensamblador AVR 7 (12 / 12 paso)

Paso 12: Código y Video para la versión de trabajo

Como se ha visto por la última versión, la interrupción de botón no funciona muy bien ya que la interrupción se activa en un flanco ascendente a pin PD2 y luego el controlador de interrupción llama a la conversión ADC. Sin embargo, la ADC obtiene entonces la lectura de voltaje antes de se ha estabilizado y por lo que dice tonterías.

Lo que necesitamos es introducir un retardo entre la interrupción de PD2 y el ADC en la PC0. Esto lo haremos agregando un temporizador/contador, una interrupción de desbordamiento del contador y una rutina de retardo. Por suerte ya sabemos cómo hacer esto de Tutorial 3! Tan sólo copiar y pegar el código correspondiente de allí.

He dado el código resultante y un video mostrando en operación.

Notarás que las lecturas no son tan exactas como es de esperar. Esto es probable debido a una serie de fuentes:

  1. nos estamos aprovechando de la tensión de salida del teclado para disparar en la PD2 que afecta a la lectura en la PC0.
  2. realmente no sé cuánto tiempo retrasar después el gatillo para obtener la mejor lectura.
  3. tarda unos pocos ciclos para la conversión del ADC completar lo que significa que no podemos de fuego rápido en el teclado.
  4. probablemente hay ruido en el teclado sí mismo.
  5. etc....

Así, aunque hemos conseguido que el teclado para trabajar, y ahora podríamos utilizar en aplicaciones utilizando los valores de la pulsación de alguna otra manera en vez de sólo los mostrar a la pantalla del analizador, no es muy exacto y es muy molesto. Por esta razón creo que la mejor manera de conectar teclados es simplemente pegar cada salida desde el teclado en un puerto diferente y decidir que tecla es presionada por que puertos ver una tensión. Eso es fácil, muy rápido y muy preciso.

De hecho, hay sólo dos razones por qué uno querría conducir un teclado de la manera que hemos hecho aquí:

  1. Sólo utiliza 2 de los pernos en nuestro microcontrolador en vez de 8.
  2. Es un gran proyecto de mostrar diferentes aspectos de la ADC en el microcontrolador que es diferente de lo estándar que puede encontrará por ahí como las lecturas de temperatura, potenciómetros, etc.. Quisiera un ejemplo de lecturas solo disparadas y externo perno de disparo automático en lugar de solo libre engullendo CPU modo corriente.

De todos modos, aquí está un par final de ejercicios para usted:

Ejercicio 6: vuelva a escribir el controlador de interrupción completa de conversión ADC para utilizar una tabla de búsqueda. Es decir, por lo que prueba el valor analógico con el primer elemento en la tabla y si es más grande regresa de la interrupción, si no entonces lo es incrementos de Z al siguiente elemento en la tabla y ramas de nuevo a prueba. Esto reducir el código y limpiar la rutina de interrupción y que se vea más bonito. (Le dará una posible solución como el siguiente paso)

Ejercicio 7: conectar el teclado a 8 pines en el microcontrolador
y escribir el controlador simple para él y cuánto mejor es experiencia. ¿Puedes pensar en algunas maneras de hacer mejor nuestro trabajo de método?

Eso es todo por este tutorial. Adjunto la versión definitiva con punteros. Mientras hacemos nuestro camino más cerca a nuestro objetivo final, usaremos el teclado una vez más en el Tutorial 9 mostrar cómo controlar siete segmento muestra (y partiendo de algo interesante que usa las teclas extras del teclado del teléfono) y entonces pasará a controlar cosas con pulsar un botón en su lugar (ya que ese método se ajusta mejor con el producto final que estamos construyendo hacia con estos tutoriales) y justo a lado el teclado.

Hasta la próxima!

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