Stimmt, kann man so proggen.Generell lauft es ja so ab, dass das RFM12 einen Interrupt verursacht
Du kriegst aber pro Interrupt nur ein Byte.
Damit kannst Du erstmal gar nichts anfangen.
Ausserdem kann es ja sein, das Dir ein Byte durch die Lappen geht. Wenn das gerade ein Sync Byte war hast Du ein Problem.
In meinen unverschlüsselten ASCII Übertragungen hab ich deshalb immer ein eindeutiges Startbyte, z.B. $ und eine feste Endsequenz <CR><LF>.
Die Auswertung einen Strings erfolgt dann immer erst, wenn <CR><LF> empfangen wurde. Dann setz ich im Interrupt ein Flag und das Hauptprogramm weiss, das es etwas tun muß.
Ein $ Byte setzt bei mir den Zeiger des Auswertepuffers immer auf 0.
Verbunden mit einer CRC Checksumme kann dann eigentlich nicht mehr viel passieren, was die Datenübertragung aus dem Tritt bringen könnte.
Tritt in einem String ein Bitfehler auf der zufällig ein $ ergibt, stimmt die Checksumme nicht und der String wird verworfen.
Kommt ein <CR><LF> nicht, wird beim näcsten String wieder alles gut, weil das $ ja den Auswertestringzeiger wieder auf 0 setzt.
Den Ringpuffer muss man allerdings dann so groß machen, das mindestens 2 komplette Strings rein passen, da ja wie gesagt das <CR><LF> ja auch mal nicht kommen kann.
Lesezeichen