Hallo,
ich habe diesen Code auf einem LPC2xxx verwendet, sollte portierbar sein
wenn man den RTOS mist entfernt, und vermutlich umschreiben auf 8Bit.
Eigentlich allgemein gar nicht so gut der Ansatz, was besser wäre:
- Eigene Klasse "Packet" mit Member *pPacket zur Listenbildung
- Neue CRC, diese ist schnell und sicher, aber AVR clib hat eine die aus
12zeilen besteht. Ohne Schleife, ohne statischen speicher.
- Eine Packet::compose(daten, addresse, blabla) funktion, kopiert daten
in das paket, errechnet dabei crc und füllt alle nötigen felder.
- Zusätzliches feld für Netzwerk flags, wie "Acknowledge return" o.Ä.
Naja, konnte mit dem Code schon strings fehlerfrei asynchron über meinen
Arbeitstisch verschicken, aber habe es dann aufgegeben zugunsten von
RF22B Modulen. Sie sind weitaus mächtiger als die schäbigen RF12, und
würden auch dein vorhaben vielfach vereinfachen.
Wenn du noch keine Module gekauft hast, schau sie dir dringend an. Es
existiert sogar schon eine dicke ArduinoLib. Verstehe auch nicht wie
hier teilweise noch RF12 empfohlen werden. Die anderen kosten nen euro
mehr, aber das lohnt sich doppelt.
Bei deiner Anwendung mit RF22Bs müsstest du nur ein paar Register mit
ensprechenden (Slave) Adressen füllen. Deine komplette 20 Byte Nachricht
passt in die FIFO der RF22B und der Empfänger hat nur einen einzigen
Interrupt, falls die eingebaute! crc prüfung nicht fehl schlägt.
Allgemein wesentlich weniger gefrickel und sie haben auch noch mehr
Sendeleistung. Dazu kommt, dass es ein Excel sheet gibt was die ganzen
Radio Frequenz Einstellungen abdeckt, womit sich mal eben das halbe
Datenblatt überspringen lässt.
Naja, jedem das seine ;D