Paso 3: Código de Host
En mi configuración, adjunto la hostia a mi portátil, y analizará el avrdude comandos hex de carga y verificación. El dispositivo está conectado al Arduino UNO de destino.
En una anterior encarnación de este instructable, tenía una estructura mucho más complicada de código para analizar y paso el avrdude cargar comandos o solicitudes, subir páginas y páginas de verificación. Desde entonces, he descubierto que el avrdude utiliza diferentes protocolos para subir archivos a dispositivos de destino diversos. Por ejemplo, el Microchip MPIDE utiliza avrdude tarjetas chipKIT de programa y el protocolo es muy diferente! Mi firmware original era demasiado específica. Además, no tiene alguna forma de manipulación simple paso... Por lo tanto,
Al teclado!
Estoy usando un temporizador en la entrada de la serie para encontrar el final de los mensajes de longitud variable durante la carga. Además de diversos comandos de avr y solicitudes, Arduino UNO carga y verifica en páginas de 128 bytes y chipKIT carga y verifica en páginas de 256 bytes. Para administrar el límite de paquete de 32 bytes en RFduinoGZLL biblioteca, configurar un búfer de matriz 2D para recoger los datos en serie. Mi buffer 10 niveles de profundidad, que es más que suficiente para lo que necesito en este caso. Para hacer un seguimiento de las cosas, estoy reservando el primer índice de la primera matriz para sostener el número de paquetes que finalmente resulta en la radio. Clase de una suma de comprobación.
Lo bueno es que este firmware RFduino encargará también de paso serial entre el blanco y el PC sin necesidad de saber si está subiendo o no. El código es mucho más agradable de mirar y más versátil. Rock!
Una cosa que estaba en el lado del dispositivo, no puedo utilizar la función serialEvent(). Probablemente debido a algún tipo de problema de interrupción con la llamada de la radio apoya. Así que por el contrario, yo soy votación el puerto serie en el loop().
Soy GPIO6 para ver cuando va bajo de votación, lo que significa objetivo reiniciar intento. A continuación envío un especial carácter '$' dispositivo para poner es propia de GPIO6 de baja. Entonces, cuando GPIO6 HOST va alta, se le enviará '#' a dispositivo para ponerlo es propio GPIO6 alta.
Muchos más comentarios en el código adjunto!
A continuación, echamos un vistazo en el código de dispositivo!