Forum: Mikrocontroller und Digitale Elektronik UART-Verbindungen zwischen mehreren PICs


von Jochen S. (Firma: ---) (nechoj)


Angehängte Dateien:

Lesenswert?

Wertes Forum,

für meine Eisenbahnanlage (Signalsteuerungen) entwickle ich schon seit 
langem eigene Schaltmodule. Jeder Schaltmodul hat einen PIC µC. Die
miteinander korrespondierenden Module werden über ser. UART-Verbindung
miteinander verbunden. Die längste Verbindung zweier µC kann bis zu ca.
20m betragen. Hierfür wurde mir die allgemeine Verwendung von UART-Ver-
bindungen empfohlen.
Auf beiliegender Zeichnung sind die beiden Verbindungsfälle ersichtlich.

Fall 1: Hier ist ein PIC 16F877A der MASTER und überträgt insges. 2byte
        an verschiedene Slaves.
Fall 2: Obengenannter PIC ist hierbei jetzt der Slave, während nur 1
        obengenannter Slave (Sk-Rel-Eb-Modul)jetzt der MASTER ist. Er
        überträgt nur 1 byte.

Wie muß ich die Adressierung der einzelnen PICs in den Fällen 1 und 2
vornehmen? Nirgendwo konnte ich bislang entsprechende verständliche
Anleitungen finden!
Die Programmierung muß in C erfolgen.

Wer kann mir mit wenigen verständlichen Angaben weiterhelfen?
Für evtl. auftretende Fragen stehe ich gerne zur Verfügung.

Freundliche Grüße und Dank im voraus.

    Jochen

von Dirk F. (dirkf)


Lesenswert?

Hallo,
habe auch bereits 16 Pics über SPI verbunden. Bei Deinen Entfernungen 
ist aber wohl UART duch besser..
Du musst erst mal dafür sorgen, dass jeder PIC eine eigene Adresse 
bekummt. Z.B.  über DIP codierschalter.
Dann muss der Master ein Telegramm senden, die die Adresse des gemeinten 
PIC enthält.
Nur der PIC, der sich angesprochen fühlt, sendet dann auf seiner TX 
Leitung Daten zurück.
Setz mal besser noch jeweils 100 Ohm Widerstände in des TX Leitung der 
Slaves, um bei Fehlern zu verhindern, dass 2 Ausgänge parallel arbeiten.

In der Software der Slaves die TX nur aus Ausgang setzen, wenn er auch 
senden möchte.
LG Dirk

von Ingenieur (Gast)


Lesenswert?

Schau dir mal halbduplex RS485 an. Entweder Multimaster (wird 
schwieriger wegen Kollisionserkennung) oder Singlemaster (pollt ggf. die 
Slaves).

von m.a. (Gast)


Lesenswert?

Dirk F. schrieb:
> Du musst erst mal dafür sorgen, dass jeder PIC eine eigene Adresse
> bekummt. Z.B.  über DIP codierschalter.

Viele PICs haben ein EEPROM, wo man die ganz ohne zusätzlichen 
Hardwareaufwand ablegen kann. Wenn man jedem Modul zusätzlich noch eine 
Seriennummer fest einbrennt - kann man über Broadcast sogar die Adressen 
neu vergeben, so dass man Module tauschen und umadressieren kann. 
Außerdem bietet sich an, in jedem Modul z.B. eine Klartextinfo 
(Funktion, Anlagenkoordinaten, Gleis) o.ä. abzulegen, so dass man aus 
der bestehenden Anlage die Konfigurationsinformation abrufen kann und 
nicht auf (veraltete) Listen angewiesen ist.

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.