Stap 3: Host Code
In mijn setup, ik ben de gastheer van mijn laptop koppelen en het zal ontleden de avrdude opdrachten, upload hex en verificatie. Het apparaat is aangesloten op de target Arduino UNO.
In een eerdere incarnatie van dit instructable, ik had een veel meer gecompliceerde codestructuur om te ontleden en Pass Through-de avrdude opdrachten/verzoeken upload, upload's en verificatie. Sindsdien heb ik ontdekt dat de avrdude verschillende protocollen gebruikt voor het uploaden naar verschillende doelapparaten. Bijvoorbeeld, de Microchip MPIDE gebruikt avrdude programma chipKIT boards, en het protocol is zeer verschillend! Mijn originele ingebouwde programmatuur was ook specifieke! Ook hoefde het niet enigerlei wijze van behandeling van eenvoudige pass-through... Dus,
Terug naar het toetsenbord!
Ik ben met behulp van een timer op de seriële input om het einde van de variërende lengte berichten vinden tijdens het uploaden. Naast verschillende avr opdrachten en verzoeken, Arduino UNO uploads en controleert op 128 byte's en chipKIT uploads en controleert op 256 byte's. Om de limiet van 32 byte packet in RFduinoGZLL bibliotheek beheren, troep mij opwaarts een 2D-matrix buffer seriële gegevens te verzamelen. Mijn buffer is 10 niveaus diep, dat is meer dan genoeg om te verwerken wat ik nodig heb in dit geval. Om bij te houden dingen, ben ik de eerste index van de eerste matrix te houden van het aantal pakketten dat uiteindelijk op de radio komt reserveren. Soort een controlesom.
Het aardige ding is dat deze RFduino firmware ook seriële pass-through tussen de doelgroep en de PC behandelen zal zonder te weten als het het uploaden van of niet. De code is veel leuker om naar te kijken, en veelzijdiger. Rock!
Een ding dat kwam was aan de kant van het apparaat, ik ben niet in staat om de serialEvent()-functie te gebruiken. Waarschijnlijk steunt als gevolg van één of ander soort interrupt probleem met de oproep van de radio. Ik ben dus in plaats daarvan, de seriële poort in de loop polling.
Ik ben de GPIO6 om te zien wanneer het gaat laag polling, betekenende doel reset poging. Ik ben dan het verzenden van een speciaal teken '$' apparaat te zetten is het eigen GPIO6 laag. Vervolgens, wanneer de HOST GPIO6 gaat hoog, stuurt het '#' te vertellen apparaat om het eigen GPIO6 hoog is.
Veel meer opmerkingen in de bijgevoegde code!
Volgende, we zullen een kijkje nemen op de apparaatcode!