Nabend Community Ich habe folgendes Problem, Ich habe in ein PC-Programm geschrieben um vom PC aus, Aus/Eingänge von mehreren Atmegas zu verwalten, Adc´s auslesen usw... Ich überlege gerade wie ich die Kommunikation der µC´s am einfachsten hinbekomme, da ich mit i²c nicht so gut klarkomme wollte ich den Uart benutzen. Im Anhang habe ich mal ne skizze reingelegt, würde das so funktionieren ? zB: Das PC Programm sendet "A12" Ein Atmega kennt den Befehl und schaltet einen Ausgang, alle anderen wissen nicht was sie damit sollen und ignorieren den Befehl einfach... Theoretisch müsste das doch funktionieren oder ? vielen dank Cablecore
Du kannst die Sendeleitungen der AVRs nur dann zusammenschalten, wenn Du dafür sorgst, dass zu jedem Zeitpunkt nur ein UART-Sender aktiviert ist und dass solange die anderen AVRs ihren Tx-Pin hochohmig (Input) schalten. Für den Fall, dass kein AVR-Tx aktiv ist, würde ich einen Pullup vorsehen oder den internen aktivieren. Alle Empfänger gleichzeitig lauschen zu lassen ist dagegen kein Problem.
Sicherheitshalber würde ich aber noch an jedem Tx-Pin einen Widerstand in Reihe einplanen, damit im Fehlerfall sich die µCs sich nicht gegenseitig die Ausgangspins schrotten. Gruß Rainer
Ich würde wetten, dass für deine Anwendung ein einziger Controller ausreicht.
Hi Hc Zimmerer Das hört sich gut an, danke für deine schnelle Hilfe wenn ich das richtig verstanden habe, dann mache ich also an jeden Tx einen 10k als pullup und dann können alle ihre signale verschicken?
Eine Alternative wäre Daisy-Chaining [1]. Vorteil: sehr einfacher Aufbau und einfach erweiterbar, keiner killt des anderen IO-Pin; Nachteil: Die Latenz steigt etwas, jeder µC muss die Daten durchreichen, wenn einer verreckt sind die anderen taubstumm. [1] http://de.wikipedia.org/wiki/Daisy_Chaining
cablecore schrieb: > wenn ich das richtig verstanden habe, dann mache ich also an jeden Tx > einen 10k als pullup und dann können alle ihre signale verschicken? Nein, das hast Du nicht richtig verstanden. Da die Sendepins parallel geschaltet sind, brauchst Du natürlich nicht an jedem einen Pullup. Außerdem muss die Software dafür sorgen, dass zu jedem Zeitpunkt nur ein einziger der Pins auch wirklich ein Sendepin ist, die anderen müssen hochohmig sein. Aber das schrieb ich bereits.
Phil J. schrieb: > mit RS485 wärs einfacher aber nur, wenn für jeden einzelnen µC ein eigener RS485-Transceiver vorgesehen 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.