Paso 4: Ejemplo 2: comunicación Serial
Para este proyecto usé timer2 interrumpe periódicamente Compruebe si hay cualquier datos entrantes en serie, leerlo, y almacenarlo en la matriz "ledData []". Si usted echa un vistazo al código, verá que el bucle principal del bosquejo es realmente responsable de uso de la información en ledData para iluminar los LEDs correctos y comprobar el estado de los botones (una función llamada "shift()"). La rutina de interrupción es tan corta como posible - sólo comprobación de bytes entrantes y almacenarlos adecuadamente.
Aquí está la configuración para el timer2:
CLI (); //stop interrupciones
establecer interrupción timer2 cada 128us
TCCR2A = 0; / / todo TCCR2A registro para 0
TCCR2B = 0; / / única para TCCR2B
TCNT2 = 0; //initialize valor de contador a 0
compara Set match registrarse incrementos de 7,8 khz
OCR2A = 255; / / = (16 * 10 ^ 6) / (7812.5 * 8) - 1 (debe ser < 256)
Activar modo de CTC
TCCR2A | = (1 << WGM21);
Establezca el bit CS21 para 8 prescaler
TCCR2B | = (1 << CS21);
habilitar interrupción de timer en comparación
TIMSK2 | = (1 << OCIE2A);
SEI (); //allow interrupciones
Aquí está el bosquejo completo de Arduino:
descargar el parche de MaxMSP abajo (ejecutará en Max Runtime también).