Forum: Mikrocontroller und Digitale Elektronik Datentransfer von pc zum Motortreiber über Atmega644p


von truth n. (truth)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.