Hallo allerseits, Ich habe mich schon eine Weile mit uC's beschaeftigt und will nun eine Steuerung fuer mein Modellschiff entwerfen. Ich benutze einen AVR ATMega 328P, der an einem Empfaenger haengt, der mir ein serielles Signal ausgibt. Das Signal sieht wie folgt aus: alle 11ms gibt er mir 16byte aus. Das Signal ist Asynchron, die Baudrate ist ca. 115200 und das Signal hat, so wie ich das verstanden habe, 8 Datenbits, kein parity-bit und kein stop-bit. Eine Signaleinheit ist 2byte breit. Das macht also 8 "Signaleinheiten" alle 11ms. Der Empfaenger sendet im ersten 16byte Block in den ersten 2 byte wie viele solcher Bloecke vom Empfaenger selber nicht ausgewertet werden konnten(Funkstoerung ect.), die anderen 14byte die uebrigbleiben, werden auf 7 Kanaele mit je 2Byte verteilt. Im darauf folgenden Block sendet der Empfaenger den 8ten Kanal ebenfalls nachdem die verpassen Bloecke ausgegeben werden. In den 16Bit eines Kanals steckt die Kanalnummer und der Wert der siesem Kanal zugeordnet wird. Das MSB jedes dieser 16bit Paktet sagt aus, ob das Paket eine Kanalinformation beinhaltet oder nicht. Nach zwei Bloecken a 16byte beginnt der Spass von vorne. Gut illustriert hat das Protokoll dieser Herr aus Australien: http://www.cgsy.com.au/archives/215 Meine Frage ist nun wie ich die Kanaele am besten auswerte, die verpassten Frames des Empfaengers sind mir in diesem Zusammenhang ziemlich egal, die Kanalinfo umso wichtiger. Der USART im AVR ist mir noch ziemlich neu, desshal wuerde ich mich ueber ein PC-programm freuen, das mir dabei hilft, das signal irgendwie "sichtbar" zu machen damit ich es mir mal genauer anschauen kann. Ich nehme an, dass ich erstmal die 16 Byte auslesen muss, byte fuer byte, indem ich sie per Interrupt aus dem Rx Puffer hole und irgendwo in den Speicher schreibe. sobald alle 16byte drin sind habe ich ja dann fast 11 ms Zeit um mit den daten was anzufangen, also meine Kanalnummer herauszufinden und dann den dazugehoerigen Wert in eine globale Variable abzuspeichern, damit ich im Hauptprogramm meinen Spass damit haben kann. Genaueres Zur bitverteilung im Paket steht im Link, ich weiss nur nicht ganz was ich daraus fuer Schlusesse ziehen soll. Besten Dank schonmal, Alexander Becker
Alexander Becker schrieb: > Meine Frage ist nun wie ich die Kanaele am besten auswerte, Fang erst mal damit an, die UART deines AVR in Betrieb zu nehmen, in dem du vom AVR an den PC sendest. Am PC läuft ein Terminalprogramm,, so dass du sehen kannst, ob das (zb Texte) was du auf dem AVR mit der UART wegschickst, auch auf dem PC korrekt ankommt. Erst dann hast du die Gewissheit, dass die UART grundsätzlich korrekt und mit der richtigen Geschwindigkeit funktioniert. Kannst du vom AVR zum PC übertragen, dann machst du die Gegenrichtung: vom PC zum AVR. Der Vorteil, den du jetzt hast: du hast bereits eine funktionierende UART Ausgabe auf dem AVR, so dass du die benutzen kannst um dir zb Statusinformationen auszugeben, ob das vom PC gesendete korrekt am AVR ankommt (wird es normalerweise wenn die Gegenrichtung schon funktioniert) bzw. du kannst mal erste Erfahrungen damit machen, wie man solche Auswertungen angehen könnte. Und erst dann hängst du anstelle des PC deinen Empfänger an die Leitung zum AVR, wobei du dir die Ausgabemöglichkeit auf dem PC offen lässt und auch fleissig benutzt um zu sehen, was vom Empfänger daher kommt bzw. ob deine Auswertestrategie funktioniert. Aber im Moment steuerst du auf einen Mehrfrontenkrieg zu. Du weisst nicht, ob die USART funktioniert. Du weisst nicht, ob sie mit der korrekten Geschwindigkeit arbeitet. Du weisst nicht, ob du korrekt vom Empfänger empfangen kannst. Du weisst nicht, ob deine Auswertung richtig ist. Das sind ein bischen zu viele 'du weisst nicht'. In derartige Mehrfrontenkriegen sind schon ganz andere Leute untergegangen.
:
Bearbeitet durch User
Ok danke, dann werd ich mich mal dran machen, die USART anstaendig zu konfigurieren.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.