Hi, ich habe fünf ATmega8 Mikrocontroller. Einer soll jedem der anderen vier Controller gelegtentlich 2 Byte spezifische Daten schicken. Alle Mikrocontroller haben die gleiche Masse und ein gemeinsames Vcc. Ich will für die Datenübetragung nur eine oder max. zwei Leitungen verwenden. Ist das möglich? SPI braucht 3 Leitungen + Chip Select. Kommt also nicht in Frage. Gibt es eine andere einfache Lösung? Grüße, 006
Probier mal eine Suche nach "One Wire" oder "Two Wire Interface" aka TWI oder I2C Die Dinge heissen doch schon genau nach dem was sie nutzen ... rolleyes
Sowas wie LIN machen, eine gemeinsame "open drain" Leitung mit externem Pullup. In SW aber nicht ganz trivial. http://de.wikipedia.org/wiki/Local_Interconnect_Network Gruss
UART ist das Stichwort! Einfacehe UART, Den TX des "Master ATmenga" auf die RXe der Slave-Megas. Jeder Slave empfängt dann die Daten. Als Sync einfach einen "Idle" Frame nehmen, fertig ist dein Protokoll!
006 schrieb: > eine andere einfache Lösung? Wenn es ein wenig Hardware sein darf, nimm doch die vorhandenen UARTs (wenn du die anderweitig brauchst, gibt es auch Soft-UART). Du musst nur die Tx-Leitungen per Open Drain und externem Pullup verodern (Ruhepegel muss dann natürlich auf HIGH am Koppelpunkt sein, ggfs noch einen Inverter). Jeder Protz bekommt eine Adresse und du sendest ein Telegramm "Flag, Zieladresse, Absender, Daten, 8-bit Prüfsumme, Flag". Wenn zwei gleichzeitig senden, knallt es, das Telegramm wird zerstört und du merkst es an der falschen Prüfsumme. Oder du baust dir noch in Software eine "Kanal belegt" Kontrolle ein. Auch das ist simpel.
Wenn nur ein ATmega senden soll, und die anderen nur empfangen, dann reicht es UART zu verwenden und TX vom sendenden ATmega mit RX der empfangenden ATmegas zu verbinden.
006 schrieb: > Hi, ich habe fünf ATmega8 Mikrocontroller. Einer soll jedem der anderen > vier Controller gelegtentlich 2 Byte spezifische Daten schicken. > ... > SPI braucht 3 Leitungen + Chip Select. Kommt also nicht in Frage. Gibt > es eine andere einfache Lösung? Jein. Wenn bei SPI die Übertragung nur in eine Richtung laufen muss, braucht man nicht unbedingt ein MISO. Und Chip-Select lässt sich auch per Adressierung erreichen: du verschickst nicht 2 Bytes, sondern generell 3 Bytes, wobei das erste Byte die Zieladresse enthält. Falls die an alle anderen 4 Controller zu versendenden Bytes aber sowieso gleich sind, brauchts natürlich auch kein Chip-Select.
006 schrieb: > Ist das möglich? Schau dir mal das ccTalk-Protokoll an: Ist eine simple UART kommunikation und braucht exakt einen Draht.
jeweils 3Bytes per 1wire - Empfänger, Sender und Nutzlast, das geht ganz einfach.
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.