Programmera Arduino över RFduino (3 / 4 steg)
Steg 3: Värd kod
I min setup, jag bifoga värden till min laptop och det kommer att tolka den avrdude kommandon, ladda upp hex och kontroll. ENHETEN är ansluten till målet Arduino UNO.
I en tidigare inkarnation av detta instructable, jag hade en mycket mer komplicerade kodstruktur att parsa och vidarekoppling avrdude ladda upp kommandon/begäran, ladda upp sidorna och kontroll sidorna. Sedan dess har jag upptäckt att avrdude använder olika protokoll för uppladdning till olika målenheter. Till exempel mikrochip MPIDE använder avrdude till programmet chipKIT styrelser, och protokollet är extremt olika! Min ursprungliga firmware var alltför specifik! Det heller inte något sätt att hantera enkla genomslag... Så,
Tillbaka till tangentbordet!
Jag använder en timer på den seriell in för att hitta slutet av varierande längd visas under uppladdning. Förutom varierande avr kommandon och begäranden, Arduino UNO uppladdningar och verifierar i 128 byte sidor och chipKIT uppladdningar och verifierar i 256 byte sidor. För att hantera 32 byte paket gränsen i RFduinoGZLL bibliotek, satt jag upp en 2D array buffert att samla seriella data. Min buffert är 10 nivåer djup, vilket är mer än tillräckligt för att hantera vad jag behöver i detta fall. För att hålla reda på saker, jag reservera första index för den första matrisen att hålla antalet paket som så småningom kommer in på radion. Typ av en kontrollsumma.
Fina är att denna RFduino firmware också kommer att hantera seriell överföring mellan mål och PC utan att veta om det belastande upp eller inte. Koden är mycket trevligare att titta på, och mer mångsidig. Rock!
En sak som kom upp var på enheten sida, jag kan inte använda funktionen serialEvent(). Förmodligen ryggar på grund av någon form av avbrott fråga med radio samtalet. Jag så istället röstningen den seriella porten i loop().
Jag är röstningen GPIO6 för att se när det går låg, betecknar mål återställa försök. Jag sedan skickar en speciell karaktär '$' enhet att sätta det är egen GPIO6 låg. Sedan, när värd GPIO6 går högt, det kommer att sända '#' tala om enheten för att uttrycka det är egen GPIO6 hög.
Massor fler kommentarer den bifogade uppförandekoden!
Därefter tar vi en titt på styrkod!