PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenübertragung über UART zu 2xSMci33-2 von Nanotec



jiodatsinga
16.05.2012, 11:25
Guten Tag,

Ein Textdatei enthält X- und Y-Koordinate und ist in meinem PC unter Windows XP gespeichert. Mein Ziel ist die Übertragung von Koordinaten über die

Schnittstelle RS232 des PCs bis zu einem Mikrocontrollerboard. Dann die empfangenen Koordinaten, die sich im Mikrocontrollerboard befinden, werden über eine

zusätzliche schnittstelle RS485 zu Zwei Motortreiber SMCI33-2 von Nanotec gesendet. Außerdem soll ein SMCI33-2 die X-Koordinaten empfangen und der andere

SMCI33-2 empfängt die Y-Koordinaten. Weiterhin besitzt jeder SMCI33-2 eine Schnittstelle RS485 , um die Koordinaten zu empfangen.

Ich habe für mein Experiment der Mikrocontroller 644p, da er zwei UARTs besitzt. Ein UART der 644p soll über die Schnittstelle RS232 die koordinaten von PC

empfangen und der andere UART der 644p wird über die Schnittstelle RS485 die Koordinaten an den beiden SMCI33-2 übertragen. Da die Motortreiber SMCI33-2 die

Schnittstelle RS485 haben.
Ich habe die Schaltung auf ein Steckboard gebastelt und einige Teste ohne Schwierigkeiten durchgeführt. Kurz gesagt, die Schaltung läuft gut.

Anschließend wurde eine C++-Code geschrieben, um die X- und Y-Koordinaten vom PC zum Mikrocontrollerboard 644p zu senden. Diese Phase hat auch geklappt.

Nun möchte ich die Koordinaten, die sich in Mikrocontrollerboard 644p befinden,über die zweite UART (Schnittstelle RS485) zu den beiden Motortreiber SMCI33-2

übertragen. Ich habe eine C-Code unter der Entwicklungsumgebung AVR Studio 4 geschrieben und dann compiliert. Zwar bekomme ich keine Fehlermeldung, aber

meine beide Motortreiber empfangen keine Daten.

Woran kann das liegen ? kann jemand von euch mir helfen ?

Anbei der Textdatei und meine C-Code

Die C++-Code lautet:

Bemerkung:

Allerdings besitzt der Motortreiber SMCI33-2 seine eigene Befehle. Wenn man die SMCI33-2 ansprechen möchte, dann soll man diese Anweisungen verwenden.

BSP einer Anweisung: '#1A\r'

# -----> Startzeichen eines Befehls
1 -----> Adresse des Motortreibers
A -----> Starten eines Satzes(Eigentliche Anweisung)
\r ----> Endzeichen eines Befehls
' ----> Zeichen, das sich immer vor dem Startzeichen (#) und nach dem Endzeichen (\r) befinden.


Danke im Voraus.

Mit besten Grüßen.

Luffy

sast
16.05.2012, 12:36
Wo schaltest du denn dein Read und Write beim 485 Baustein im Code?

sast

Edit: Günstig ist immer auch, wenn man auf der RS485 mitschnüffelt. Dazu benötigst du lediglich einen kleinen Konverter aus MAX 232 und einem 481 inkl. Kleinzeug und schon weißt du genau wer denn nun nicht mitmacht und kannst nebenbei auch über den PC weiterhin eingreifen und direkt senden. RS485 ist dafür super geeignet. Ansonsten hilft auch Pegel mitschneiden am Oszi.