Tutorial de ensamblador AVR 6 (1 / 3 paso)

Paso 1: ¿Cómo podemos obtener dos microcontroladores para hablar?

Ya que estamos comenzando a expandir nuestro proyecto para que nuestro producto final se compone de una colección de piezas más pequeñas que vamos a necesitar más pines que puede proporcionar un único Atmega328P. Por lo tanto vamos a hacer cada pieza del proyecto global en un microcontrolador independiente y luego indíqueles que compartan datos entre ellos.

Así que el problema que necesitamos resolver es ¿cómo podemos nosotros llegar a un método simple para los controladores de hablar y transferir datos entre ellos?

Bueno, una cosa acerca de estos controladores es que cada uno de ellos ejecutar 16 millones de instrucciones por segundo. Esto precisamente se mide el tiempo y así podemos usar este tiempo para transferir datos. Si usamos retardos de milisegundos para constituir los datos entonces no debemos ser todo lo que precisa ya que la CPU está ejecutando instrucciones de 16.000 en un solo milisegundo. En otras palabras, un milisegundo es una eternidad para el CPU.

Así que vamos a intentarlo con los rodillos de los dados. Quiero transmitir el resultado de un rodillo de dados de la viruta del rodillo de dados a la viruta del analizador. Supongamos estaban de pie en la calle y quería la señal para el resultado de mi rollo de un par de dados. Lo que pude hacer, si ambos teníamos un reloj, es que podría encender una linterna, luego cuando esté listo para recibir mis datos enciende su linterna y ambos comenzamos nuestros relojes. Luego seguir mi linterna para el exacto número de milisegundos que el rollo de dados y luego apáguela. Así que si me lió un 12 mantengo mi luz 12 milisegundos.

Ahora el problema con esto es que, para usted y para mí, no hay ninguna manera podríamos tiempo cosas con la suficiente precisión para distinguir entre 5 milisegundos y 12 milisegundos. Pero, ¿esto: Supongamos que decidimos que sería mantener mi luz en un año para cada número en los dados? ¿Entonces si la voy a liar un 12 brillaría la luz te 12 años y creo que estarán de acuerdo que no hay ninguna posibilidad de que se comete un error en averiguar el número correcto? Podría tomar un descanso e ir a jugar béisbol, usted incluso podría ir jugar al craps en las Vegas para 6 meses, siempre y cuando en algún momento durante el año a miró a través de la calle para ver que si la luz estaba en no faltaría un recuento. Bueno, eso es exactamente lo que estamos haciendo para los microcontroladores! Un solo milisegundo para el CPU es como un año. Así que si se activa la señal de 12 milisegundos no hay casi ninguna posibilidad de que el otro microcontrolador confunde para 10 o 11 no importa qué interrupciones y todo eso suceden mientras tanto. Para los microcontroladores, un milisegundo es una eternidad.

Así que aquí está lo que hacemos. Primero vamos a elegir dos puertos de la controladora que nuestros puertos de comunicación. Voy a utilizar PD6 para recibir datos (podríamos llamarla Rx si nos gusta) y voy a elegir PD7 para transmisión de datos (podríamos llamarla Tx si nos gusta). El chip de analizador comprobará periódicamente es pin Rx y si ve una señal que caiga una "subrutina de comunicación" y entonces transmiten una señal de retorno para el rodillo de dados diciendo que está listo para recibir. Van ambos iniciar el cronometraje y el rodillo de dados transmitirá una señal (por ejemplo 5V) para un milisegundo por cada número en los dados. Así que si el rollo era doble seises, o un 12, luego el rodillo de dados es PD7 5V 12 milisegundos y luego ponerlo a 0V. El analizador comprobará su PD6 pin cada milisegundo, contando cada vez, y cuando vuelve a 0V entonces salidas el número resultante para el analizador de muestra, mostrando un doce en binario en los LED.

Por lo es el plan. Vamos a ver si podemos implementarlo.

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