Hallo erstmal! Ich versuche gerade Befehle(Koordinatenositionen) von meinem PC zu einem Motortreiber über meinem Mikrocontroller (der ATmega644p, der 2 USART-Port besitzt (USART0 und USART1) zu senden. Das Protokoll soll folgendermaßen aussehen: - Der PC schickt zunächst die Befehle über USART0 nacheinander an dem Mikrocontroller. Jeder Befehl sieht so aus: \nx,y\r. mit \n: Beginn des Befehls x: Position auf der x-Achse ,: Trennung zwischen x und y y: Position auf der y-Achse \r: Ende des Befehls - Der Mikrocontroller leitet die empfangenen Daten an dem Motortreiber nacheinander über USART1 weiter. Dabei muss der Mikrocontroller auf ein Feedback des Motortreibers für jede weitergeleiteten Data warten bevor er der nächste Befehl schickt. Dh, zwischen zwei Befehlen, muss der Motortreiber ein Feedback zum Mikrocontroller liefert, um bescheid zu sagen, ob der empfangene Befehl als gültiger oder ungültiger Befehl betrachten muss. Beispiel: gesendetes Befehl --------------------------------> "#2A\r" Feedback Motortreiber(Wenn Befehl gültig ist) ----> "2A\r" Feedback Motortreiber(Wenn Befehl ungültig ist) --> "2A?\r" Der Motortreiber ist ansprechbar, wenn die Befehle folgendermaße aussehen: "Beginn des Befehls, Nummer des Motortreibers, Befehl zu ausführen, Ende des Befehls " Beispiel mit: "#3p2\r" #: beginn des Befehls 3: Nummer des Motortreibers p2: Arbeitsmodus \r: Ende des Befehls Irgendwie funktioniert das nicht so recht und ich komme einfach nicht weiter. Ich vermute dass es an dem Zusammenspiel zwischen USART0 und USART1 liegt. Es gibt wahrscheinlich Konflikt zwischen ISR(USART0_RX_vect) und ISR(USART1_RX_vect). Vielleicht kann mir jemand hier helfen. Ich wäre sehr dankbar
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.