Hallo ans Forum,
seit kurzem beschäftige ich mich mit der seriellen Schnittstelle (UART)
der ATMega-Reihe. Den UART zu Initialisieren und zu betreiben ist Dank
Manual und diesem Forum eigentlich nicht schwer.
Zur Zeit schaffe ich es Zeichen oder auch Strings von einem µC an den
anderen zu übergeben. Testweise auch an einen UART/USB Wandler und mit
einem Hyperterminal als 2ter µC Ersatz.
Nun möchte ich einen Schritt weiter gehen und eine Art
Kommunikationsprotokoll aufbauen. In einem sehr simplen Verfahren
funktioniert das schon. Dazu wird das einzelne empfangene Byte mit einer
IF-Schleife auf 2 Bits kontrolliert (Minimaler Aufwand zum Test) und
entsprechend vom µC ausgeführt.
Mein gewünschtes Protokoll (angelehnt an den I²C-BUS) besteht aus
4-Byte. Es soll zu erst ein Adressbyte, 1 Befehlsbyte, 1 Datenbyte und
zum Schluss ein CRC8-Byte beinhalten. Die Kontrolle des CRC8-Bytes würde
ich im ersten Schritt unter den Tisch fallen lassen, da es mir in erster
Linie um die Verarbeitung des Datenrahms geht.
Nun möchte ich euch gerne Fragen wie man dies Umsetzen kann?
Rein logisch müssen die 4 Byte erst einmal irgendwie gesammelt und im
nachhinein irgendwie ausgewertet werden. Kann man hier trotzdem mit dem
Interrupthandler "ISR(USART_RX_vect)" arbeiten? Stehe irgendwie auf dem
Schlauch.
Hinweise:
-> Für die Berechnung von CRC8 habe ich bereits eine Routine im Internet
gefunden.
-> meine bevorzugte Programmiersprache ist C in der AtmelStudio 6.0
Umgebung
Vielen Dank
Paritybit