Hi Markus,

ohne das Problem und das Modul zu kennen, würde ich dir empfehlen die UART interruptgesteuert abzurufen.
Und zwar so lange bis der CR (Carriage Return) ankommt, also 0x13.

Oben stand ja das Format in dem das Modul sendet.

"du liest alle 0,5s eine Sequenz ein. Da kommen 4 byte. LSB, MSB, checksum und CR (0x13). Aus LSB und MSB berechnest du den Kompasswert wie folgt:
x = MSB * 256 + LSB"

Für den interruptgesteuerten Empfang schau mal hier http://www.rowalt.de/mc/avr/avrboard/04/avrb04.htm vorbei.

Du könntest es so machen das du, wie in dem Link beschrieben, ein Array aus 4 Byte solange auffüllst bis das 4. Byte den Wert 0x13 hat.
Aus dem 1. und 2. Byte berechnest du dann deine Werte.
Also x = MSB * 256 + LSB.
MSB ist übrigens das "Höherwertige Byte" und LSB das "niederwertige Byte" deiner gesuchten Zahl. Auf englisch "Most" und "Least significant Byte".

x ist dann eine 16Bit Zahl, also max. 65535, wie z.B. Integer. Ich denke aber das man das dann nochmal umrechnen muss. Vielleicht x * 0,00549, aber ohne Gewähr...

Das 3. Bit ist die Prüfsumme, sofern du die nicht brauchst kannst du die über Board werfen.

Zusammengefasst:

4 Byte einlesen, das 4. Bit mus 0x13 sein.
Wenn das erfüllt ist x = 2. Byte * 256 + 1. Byte, danach eventuell umrechnen.
3. Bit ist die Prüfsumme und vorerst nicht benötigt, 4. Bit dient als Trennzeichen der Sequenz, wird zum berechnen nicht benötigt.

Gruß, Sonic