UART-Verbindungen zwischen mehreren PICs

OP (Firma: ---) #3745408
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
Angehängte Dateien:
#3745457
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
Gast #3766568
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.