-
-
Erfahrener Benutzer
Begeisterter Techniker
Hallo Attila,
Du kannst die Controller einfach so verbinden, die jeweiligen RXD und TXD Leitungen natürlich kreuzen.
Da mir bald die I/O Leitungen meines Mega32 ausgehen, werde ich sowas ähnliches auch machen müssen.
Ich habe mir das so vorgestellt:
Der Slave wartet i.d.R. an der RS232 auf ein oder mehrere bestimmte Zeichen.
Erkennt er diese frägt der Slave seine ganzen Eingänge der Reihe nach ab, auch eventuelle A/D Wandler.
Die ganzen I/O Bits und A/D Werte setzt er dann zu einem Datenpacket zusammen und schick dies dem Master.
Damit der Master nicht wärend der ganzen Abfrage zum Warten verdonnert wird verbinde ich noch einen I/O Pin
des Slaves mit einen Interrupteigang des Masters.
D.h. wenn der Slave mit seiner I/O Abfrage fertig ist löst er beim Master einen Interupt aus.
Der Master kann dann die Daten empfangen und dann die A/D Werte und einzelnen Bits weiter auswerten.
Eventuell wird der Slave noch eine Prüfsumme aus den ganzen A/D Werten und I/O Bits errechnen und
an das Datenpacket hängen.
Der Master überprüft diese Summe mit den übertragenen Bytes und fordert die Daten nochmals an falls die Prüfsumme nicht stimmt.
Sollte nun ein kritisches Ereigniss an einem Slave I/O Pin auftreten,
(z.B. ein Bodenkontakt meldet das vor dem Roboter ein Abgrund/Treppe ist)
dann kann der Slave auch jederzeit ohne Anforderung des Masters einen Interupt auslösen
und den Master auf die Gefahr hinweisen.
Das ganze Übertragungsprotokoll, d.h. die Reihenfolge der I/O Bits, ob z.B. die A/D Werte als 10Bit Wert
oder bei einem angeschlossenem Sharp Sensor gleich als Entfernung in cm, oder was für Deinen Roboter
dann ein kritisches Ereigniss ist mußt Du natürlich erstmal festlegen.
Gruß
m.artmann
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen