Étape 3: Code d’hôte
Dans ma configuration, je vous joins l’hôte à mon ordinateur portable et il analysera les commandes avrdude, Télécharger hex et la vérification. Le périphérique est connecté à la cible Arduino UNO.
Dans une précédente incarnation de cette instructable, j’ai eu une structure de code beaucoup plus compliquée à analyser et directe l’avrdude Télécharger commandes/demandes, télécharger des pages et des pages de vérification. Depuis lors, j’ai découvert que l’avrdude utilise différents protocoles pour le téléchargement de périphériques cibles différentes. Par exemple, la Microchip MPIDE utilise avrdude aux conseils chipKIT programme et le protocole est très différent ! Mon firmware d’origine était trop précis ! En outre, il n’avait pas quelque sorte de manipulation simple transmission... Ainsi,
Retour au clavier !
J’utilise un timer sur l’entrée de la série afin de trouver la fin des messages longueur variables pendant le téléchargement. outre divers avr commandes et requêtes, Arduino UNO postera et vérifie dans les pages de 128 octets, et chipKIT postera et vérifie dans les pages de 256 octets. Afin de gérer la limite de paquet de 32 octets dans la bibliothèque de RFduinoGZLL, j’ai mis en place un tampon de tableau 2D pour recueillir des données série. Mon tampon est 10 niveaux de profondeur, qui est plus que suffisant pour traiter ce que j’ai besoin dans ce cas. Pour garder la trace des choses, je suis réservant le premier indice du premier tableau pour contenir le nombre de paquets qui arrive finalement sur la radio. Genre de somme de contrôle.
La bonne chose est que ce firmware RFduino s’occupent également de transmission série entre la cible et le PC sans avoir besoin de savoir si c’est le téléchargement ou non. Le code est beaucoup plus agréable à regarder et plus polyvalent. Rock !
Une chose qui est venu était du côté de l’appareil, je ne parviens pas à utiliser la fonction serialEvent(). Probablement en raison d’une sorte de problème d’interruption avec l’appel de radio dos. Donc au lieu de cela, je suis du scrutin le port série de la loop().
Je suis du scrutin le GPIO6 pour voir quand ça se passe bas, signifiant cible réinitialiser tentative. J’envoie alors un extraordinaire caractère périphérique de « $» à mettre c’est propre GPIO6 faible. Puis, quand GPIO6 hôte va haut, il enverra le « # » pour dire l’appareil pour le mettre est propre GPIO6 élevé.
Beaucoup plus de commentaires dans le code ci-joint !
Ensuite, nous allons prendre un coup d’oeil au code de l’appareil !