Tutorial de ensamblador AVR 6 (2 / 3 paso)

Paso 2: Subrutinas comunicaciones

Lo primero que debemos hacer es conectar los dos controladores. Así que tome un cable de PD6 en uno y conecte a PD7 en el otro y viceversa. Luego inícielos estableciendo PD7 salida en ambos y PD6 con la entrada de ambos. Finalmente todos ellos fijado a 0V. En concreto, añadir lo siguiente en el Init o restablecer la sección del código en cada microcontrolador:

 sbi DDRD,7 ; PD7 set to output cbi PortD,7 ; PD7 initially 0V cbi DDRD,6 ; PD6 set to input cbi PortD,6 ; PD6 initially 0V clr total ; total on dice initially 0 

Ahora vamos a configurar la subrutina de comunicaciones en la viruta del rodillo de dados. En primer lugar definir una nueva variable en la parte superior llamado "total" que almacenará el número en el par de dados e inicializar a cero.

Luego escribir una subrutina para comunicarse con el analizador:

 communicate: cbi PortD,7 sbi PortD,7 ; Send ready signal wait: sbic PinD,6 ; read PinD and skip if 0V rjmp wait delay 8 ; delay to synchronize (found this experimentally) send: dec total delay 2 ; delay for each die count cpi total,0 ; 0 here means "total" number delays have been sent breq PC+2 rjmp send cbi PortD,7 ; PD7 to 0V clr total ; reset dice total to 0 ret 

En el analizador añadimos un rcall desde la rutina principal a la subrutina de comunicación:

 clr analyzer ; prepare for new number sbic PinD,6 ; check PD6 for a 5V signal rcall communicate ; if 5V go to communicate mov analyzer, total ; output to analyzer display rcall analyzer 

y luego escribir la subrutina de comunicar lo siguiente:

 communicate: clr total ; reset total to 0 delay 10 ; delay to get rid of bounces sbi PortD,7 ; set PB7 to 5V to signal ready receive: delay 2 ; wait for next number inc total ; increment total sbic PinD,6 ; if PD6 goes back to 0V we're done rjmp receive; otherwise loop back up for more data cbi PortD,7 ; reset PD7 when done ret 

Hay que ir! Ahora cada microcontrolador está configurado para comunicarse el resultado del rollo de dados y luego mostrar en el analizador.

Vamos a implementar una manera mucho más eficiente de comunicar más tarde cuando tenemos que transferir el contenido de un registro entre los controladores en lugar de sólo un rollo de dados. En ese caso, todavía utilizamos sólo dos cables conectarlos pero usaremos 1,1 significa "comenzar la transmisión"; 0,1 en el sentido de "1"; 1,0 en el sentido de "0"; y por último 0,0 significa "transporte".

Ejercicio 1: ver si se puede implementar el mejor método y usarlo para transferir los dados como un número binario de 8 bits.

Le adjunto un video que muestra a mina en operación.

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