PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 2 oder mehr Atmels verbinden



minirobo
17.06.2006, 08:48
Hallo,
wie kann man 2 Atmels miteinander verbinden ? Ich würde gerne Aufgaben auf 2 kleine Atmels aufteilen und würde das gern so machen, dass beide miteinander kommunizieren und auch die Bascomprogramme untereinander kommunizieren .....
Ich denke, das geht über einen MAX232...oder hat der Atmel noch eine andere Möglichkeit zur Kommunikation mit anderen Atmels ?
Danke.
Gruß
minirobo

Crazy_Hardware
17.06.2006, 09:08
Hallo minirobo,

willst DU mehrere ATmegas verbinden, also mehr als 2, dann solltest Du den TWI-Bus nehmen.

Gruß Hansi

shaun
17.06.2006, 10:45
Da es hier nur um zwei Stück ging, wäre die einfachste Lösung für die kleinen (<ATmega64) wohl die serielle Schnittstelle, also wie der OP schon im Hinterkopf hatte, nur macht es natürlich wenig Sinn, die seriellen Daten auf ein und derselben Platine oder zumindest in unmittelbarer Nähe erst mit einem MAX auf V24-Pegel zu wandeln und dann gleich wieder auf TTL zurück, da verbindet man dann RxD des einen Atmel mit TxD des anderen, also über Kreuz. Dann braucht man nur noch für beide UARTs die gleiche Baudrate und sonstigen Parameter einzustellen und kann fröhlich hin und her senden. Schneller geht's mit SPI, nur ist der meist mit dem ISP-Stecker belegt, es bedarf also zusätzlicher Logik, um zwischen Kommunikation und Programmierung umzuschalten. Ab dem ATmega64 kehren sich die Verhältnisse um; da wird RxD und TxD des ersten UARTs zum Programmieren benutzt, leider aber auch der SPI-Clock, so dass man während des Programmierens beide AVRs lahm legen muss, da sonst SCK des SPI-Masters und der Clock des Programmeres kollidieren würden. Im einfachsten Fall trickst man das mit einem Widerstand hin, ansonsten nimmt man ein bisschen HCTTL-Logik, die bei aktivem Programmer-Reset den Bus entsprechend umschaltet. Ich habe für einen ATmega eine Umschaltung des 1. UARTs zwischen RS485 und ISP-Programmierung gestrickt, besteht aus einem ganzen 74HC00. Bei Interesse stelle ich den Schaltungsausschnitt auf meine Homepage, ist aber wirklich nicht spektakulär.

minirobo
18.06.2006, 16:02
Danke. Und wie spricht man die beiden oder mehrere Atmels untereinander an ??

PicNick
18.06.2006, 16:47
Wenn die angeschlossenen Atmels HW-TWI (I2C) haben, wäre eine Multimaster-TWI Lösung wohl schon sehr geeignet.

shaun
18.06.2006, 19:15
Multimaster-I2C für zwei Controller? Naja, funktionieren wird es sicher und hat den Vorteil, dass die Pins dafür sicher nicht anderweitig belegt sind, aber wenn kein Hardware-I2C-Block vorliegt und daher irgendeine Form von bit-banging implementiert werden muss, kann man sich auch gleich ein eigenes Protokoll überlegen - oder natürlich eine der vielfach im Netz herumschwirrenden I2C-Routinen benutzen. Die Möglichkeiten sind vielfältig, aber die Frage, wie die Atmels untereinander anspricht irritiert mich etwas. Man konfiguriert auf beiden die jeweils benutzte Schnittstelle entsprechend und dann definiert man ein Protokoll, worüber sich die auf den Controllern jeweils laufenden Programme unterhalten können. Wenn der erste was zu sagen hat, muss der zweite das natürlich verstehen - aber das ist Dein Job!

PicNick
19.06.2006, 08:49
..Wenn der erste was zu sagen hat, muss der zweite das natürlich verstehen..
*schmunzel* Da hast du recht, bei der Rechner-Kommunikation hat das durchaus Vorteile.