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
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.
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
Hi
Wie lang sind den die Entfernungen, die du überbrücken musst?
>Der Uart ist normalerweise RS232 Standart
Nein. Der ist TTL.
MfG Spess
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.
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.
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.