Forum: Mikrocontroller und Digitale Elektronik mehrere uC verbinden


von Steffen (Gast)


Lesenswert?

Hallo,

ich stehe vor folgendem Problem:

Ich habe ein modulares System mit einer Masterbaugruppe, in das 
Baugruppen hineingeschoben werden.

Da die Masse der notwendigen Signale so langsam das überschreitet, was 
auf der Backplane "verdrahtbar" ist, würde ich gerne vom bisherigen Weg 
abgehen und auf den slave Baugruppen einen Attiny Controller (mit 
hardware uart) einsetzen. Am master sitzt ein 644.


Meine Frage nun: Wie schaffe ich einen Kommunikationskanal zwischen den 
slaves und dem master? Die slaves müssen jeweils nur mit dem Master 
sprechen können und umgekehrt. Eine kommunikation zwischen ihnen ist 
nicht notwendig.

Ich könnte ja prinzipiell zu jedem der 8 slaves eine "select" Leitung 
legen und der Master schaltet dann periodisch eine select Leitung ein, 
fragt Informationen ab bzw. sendet Informationen und aktiviert dann die 
nächste select Leitung.

Wenn die select Leitung inaktiv ist, deaktiviere ich dann die pins für 
den Uart am slave - bzw aktiviere sie, wenn sie aktiv ist.


Bei diesem System bruach ich doch eigentlich keinerlei externe 
Bausteine, wenn jeder uC eine hardware uart hat oder?


Für bessere Ideen bin ich gerne offen; Beschäftige mich erst seit ein 
paar Wochen mit uCs und blicke noch nicht bei allem durch.


Vielen Dank!!


Steffen

von Paul H. (powl)


Lesenswert?

Schau dir mal I²C bzw TWI an. Sowas haben die meisten Atmels schon von 
Haus aus drin. Das ist ein Bus-System das genau deine Anforderungen 
erfüllen sollte.

von Michael (Gast)


Lesenswert?

Hallo Steffen

Wenn du schon überall einen UART zur Verfügung hast geht das nur 
bedingt. Der Uart ist normalerweise RS232 Standart und ist nicht für 
Punkt-Mehrpunkst vorgesehen Zu kleiner Innenwiederstand der Empfänger da 
paralell geschaltet. Aber das ist nur die Hälfte der Wahrheit. Für eine 
Punkt-Mehrpunktverbindung ist Hardware und das Protokoll entscheidend.

Möglichkeit1: RS485 Baustein an Mikrocontroller hängen. 3Pin von uC 
nötig (RX/TX Richtungsschalter --> Normale Ausgänge des UART + 1Portpin)

Möglichkeit2. SPI wenn deine uC das untertüzen.

Möglichkeit3. IIC wenn deine uC das untertüzen. (Etwas alt und langsam)

Gruss Michael

von spess53 (Gast)


Lesenswert?

Hi

Wie lang sind den die Entfernungen, die du überbrücken musst?

>Der Uart ist normalerweise RS232 Standart

Nein. Der ist TTL.

MfG Spess

von Paul H. (powl)


Lesenswert?

Ist der AVR UART wirklich so schlecht, hat er so einen hohen 
Innenwiderstand? Und der Empfänger so einen niedrigen? Wenn man da ein 
paar µC dran hängt müsste die Kommunikation doch noch funktionieren 
oder? Man kann ja auch einen Transistor zum schalten verwenden.

von Mehmet K. (mkmk)


Lesenswert?

Steffen wrote:
>
> Beschäftige mich erst seit ein  paar Wochen mit uCs und blicke noch nicht >bei 
allem durch.
>

Na, dann würde ich an deiner Stelle von einem Multi-MCU Design absehen. 
Ansonsten: Mehrere MCU, die auf einer Platine sind, verbinde ich mit 
SPI.

von Steffen (Gast)


Lesenswert?

Hallo,

danke schonmal für die superschnellen Rückmeldungen!

Die Entfernungen sind ~ 25cm: über einen signalstecker auf die 
backplane, signalstecker und dann noch ein paar cm auf der slaveplatine


Ich dachte eben daran mit einer "Selectleitung" zu jedem slave immer nur 
einen Slave Uart zu aktivieren und sonst auf Eingang zu schalten.


SPI schau ich mir gleich mal an!

von Mätte T. (maette)


Lesenswert?

kommt drauf an welche Datenmengen du übertragen möchtest.
>Möglichkeit3. IIC wenn deine uC das untertüzen. (Etwas alt und langsam)
I²C ist eigentlich genau richtig, da du im Std.Mode 127 Slaves 
anschließen kannst und sie Software mäßig adressieren. Bei SPI brauchst 
du eine SS Leitung ( Slave Select ) und wenn das System erweiterbar 
bleiben sollte, musst du entweder solche Leitungen vorsehen oder halt 
ein anderen Bus verwenden.

von Steffen (Gast)


Lesenswert?

Also die Datenrate ist unkritisch. wenige Bytes pro Sekunde.

Dann seh ich mir i²c auch nochmal an. Danke!

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.