-
2 Atmegas verknüpfen
Hallo,
ich hab mal irgendwo gelesen, dass man die Atmegas untereinander verbinden kann, um z.B. mehr I/Os zu erhalten.
Das würde ich auch gern so machen. Aber erstmal: Mit welchen Leitungen werden die µP miteinander verbunden? UART? iSP?
Was müsste ich softwaretechnisch machen? Ich benutze Bascom.
Hauptprozessor sollte ein Atmega32 oder AT90S8535 sein, jeweils im DIP-Gehäuse.
Danke schonmal!
-
Für die Verbindung hat man verschiedene Möglichkeiten, halt die üblichen Schnittstellen die die µCs so haben und wenn es sein muss auch noch eine Software Version.
Uart ist recht einfach, braucht aber in der Regel Quarze oder gleichen Takt, damit es zuverlässig läuft.
SPI ist schnell braucht aber 3 oder gar 4 Leitungen. Für einfach nur mehr IOs könnte man da ggf. auch gleich Schieberegister nehmen.
TWI bzw. I2C ist als Bus für mehr Teile geeignet, aber nicht ganz so einfach von der Software.
-
Hallo,
welche Möglichkeiten bieten sich noch, wenn man 2 µP miteinander verknüpft? Ich hab schonmal ein bisschen gegooglet, bis jetzt aber nichts brauchbares gefunden..
gleicher Takt bei UART wäre ja kein Problem, evtl könnte ich beide µP über einen Quarzoszillator laufen lassen.
-
Wenn man Leitungen Sparen muss, z.B. weil die µCs weit auseinander sind, kann man noch ein 1-Wire Interface nutzen, ggf. auch mit einer Leitung für beiden Richtungen. Das müsste man dann aber wohl in SW machen, wird also eher langsam.
Möglichkeiten gibt es viele, aber einfacher wird es wenn die Schnittstelle von der Hardware Unterstützt wird. Das sind halt UART,TWI oder SPI beim Mega32.
Wenn das mit dem Takt kein Problem ist, ist die UART schon nicht schlecht und kann wenn nötig auch über längere Kabel gehen. TWI bietet sich an, wenn man es ohnehin schon hat für andere Hardware.
-
Alle Methoden haben auch Vor- und Nachteile:
1wire Interface: Ist nur in Software implementierbar. Für 1 wire Master gibts Librarys für 1wire slaves nicht - Soweit ich weiß. Da das Timing nicht lapidar ist wür ich diese Schnittstelle nicht verwenden.
TWI bzw I²C: Ist im Prinzip langsam, aber durch den Quittierungs algorithmus relativ zuverlässig und wird von den meisten ATMEGA Controllern in Hardware unterstützt.
USART Verbindung: Relativ einfaches Protokoll, die Geschwindigkeit ist in Grenzen frei wählbar, die Schnittstelle wird von Hardware unterstützt und wenn man Bustreiber Bausteine benutzt geht das auch über sehr lange Verbindungen bis zu 1km.
SPI:Eigentlich die klassische Verbindung die von Hardware unterstützt wird. Geht schnell Ein Controller ist Master, der andere Slave. Auch die Schnittstelle wird von Hardware unterstützt. Aufpassen muß man lediglich bei der ISP, da die bei den meisten Controllern die gleichen Ports benutzt wie die SPI Verbindung.
Hie muß man also mit Jumpern oder Lötbrücken arbeiten, oder auf die ISP Schnittstelle verzichten.
Wenn es nur um eine Erweiterung von Portleitungen geht würde ich aber auch eine Schieberegister Lösung oder einen I²C Port Baustein verwenden.
-
wkrug hat ja schon die Vor und Nachteile ganz gut beschrieben, in deinem Fall für mehr IO Ports würde ich auf I2C Port expander setzen, hier im Wiki ist das recht gut beschrieben:
http://www.rn-wissen.de/index.php/Bascom_I2C_Master
Grüße
Neutro
-
Hallo,
Ich weiß ja nicht, was sich noch so für Möglichkeiten anbieten, wenn man 2 µP miteinander verbindet. Die Porterweiterung war nur ein Bsp. Auf welchen Pins liegt beim 32er denn TWI? Ich kenn den Bus nichtmal. Von I²C hab ich gehört, vorallem im Bereich der EEPROMs.
-
TWI = I2C btw. Porterweiterung würde ich nicht mit einen zweiten µC! machen. Ein zweiter µC bietet sich zur Arbeitsteilung an, zb. wenn der Hauptcontroller schon mit seinen Hauptaufgaben schon relativ ausgelastet ist und man will aber eine Ethernetschnittstelle einbauen, dann übernimmt ein zweiter Controller diese Aufgabe mit dem Kommunikationschip.
-
Hallo,
würde es auch gehen, den Coprozessor als Speichercontroller für z.B. RAM, ROM oder Flash zu benutzen?
-
Alles was du machen willst. Das war nur ein Beispielszenario von mir ;)