Guten Tag, ich suche nach einer Möglichkeit, zwei Mikrocontroller miteinander kommunizieren zu lassen. Und zwar brauche ich für ein Projekt eine Art Tastatur mit 15 Tastern. Allerdings wird das mit dem Platz knapp am ATmega32. Deshalb möchte ich die Taster erst zB an einen ATmega 8 anschließen und die Informationen dann in Bytes übertragen. Ich hatte mir gedacht, dass ich je zwei Pins von beiden Controllern nehme und Sie so verbinde. Der ATmega 8 soll dann, wenn ein Taster gedrückt wird auf einem Kanal ein durchgehendes Signal: 8x1 "11111111" senden und auf dem zweiten Kanal den entsprechenden Byte: zB "01110001" usw. Das ganze Beispielsweise mit einer Frequenz von 1 Mhz. Funktioniert das so? Brauchen die Controller dann eine gemeinsame Clock (ich denke nein, aber sicher ist sicher)? Brauch ich Wiederstände zwischen den MCs? Und ist das allgemein überhaupt eine gute Lösung? Vielen Dank schonmal im Voraus!
Nimm eine der Kommunikationsschnitstellen, die eh schon dran sind (UART, SPI, TWI). Sollten die tatsächlich alle schon belegt sein, gibts die auch in Software. Oliver
Joshua H. schrieb: > Allerdings wird das mit dem Platz knapp am > ATmega32 Schieberegister? http://www.mikrocontroller.net/articles/AVR-Tutorial:_Schieberegister#Porterweiterung_f.C3.BCr_Eing.C3.A4nge AVR-Tutorial: Schieberegister Joshua H. schrieb: > ich suche nach einer Möglichkeit, zwei Mikrocontroller miteinander > kommunizieren zu lassen. Am einfachsten per UART-Schnittstelle.
:
Bearbeitet durch User
Du willst eine serielle Übertragung machen. Dazu bietet es sich an, eine dafür geeignete Schnittstelle zu nutzen - das wäre UART (asynchron) oder I2C bzw. SPI (beide synchron). Bei ersterer brauchst Du sogar nur eine Leitung zwischen beiden µCs, denn der "Tastaturcontroller" sendet nur, muss aber nichts empfangen. Allerdings muss, damit die Angelegenheit zuverlässig funktioniert, auf beiden Seiten eine stabile Taktquelle verwendet werden, womit der interne RC-Oszillator ausscheidet. Die synchronen Schnittstellen sind hier unkritisch, die funktionieren auch bei Nutzung des internen RC-Oszillators, dafür brauchen sie aber zwei Leitungen, eine für den Takt, und eine für die übertragenen Daten. Wenn Du nur ein paar Tasten abfragen willst, brauchst Du dafür aber keinen eigenen µC zu verwenden, sondern kannst z.B. einen I2C-Expander wie PCF8574 verwenden.
Hallo Joshua, soweit ich dich richtig verstehe, moechtest du die Kommunikation einbauen, da nicht genug Pins fuer die Taster zur Verfuegung stehen. Hast du eine Matrixanordnung der Taster in Erwaegung gezogen? Hierfuer wuerdest du in deinem Fall lediglich 8 Pins benoetigen, mit denen du theoretisch 16 Tasten abfragen kannst. Die grundsaetzliche Idee wird hier erlauetert: http://www-user.tu-chemnitz.de/~heha/Mikrocontroller/Tastenmatrix.htm
mir gefällt immernoch der parallele Weg. ein 74HC573er Latch damit kann man sowohl Portein als auch Ausgänge erweitern und jederzeit von einem Port wieder abkoppeln so das dieser nicht gestört wird wenn er gerade andere Dinge machen soll. Man spart sich das ganze Protokoll man muss nur kurz ein paar Pins anklingeln und gut und zudem geht die eigentliche Übetragung sehr schnell vonstatten
der gute alte 8255 wäre auch eine Lösung :-) Aber heutzutage nimmt man die schon genannten i2c-gpio chips oder was mit SPI, je nach dem was einem lieber ist. MC zu MC läßt sich auch elegant mit CAN lösen ;) wobei das hier wohl auscheidet. Um ein paar inputs mehr zu haben wären mehrere µCs sicher nicht der einfachste Weg. Aber es würde schon gehen, per i2c, UART oder SPI auch kein Akt
74hc597 -ein spi-bus ist nötig -lässt sich kaskadieren (so viele Eingänge wie du willst) Für Taster ist der völlig ausreichend; du musst allerdings oft über SPI pollen, d.h. ein interruptgestütztes SPI-Handling ist zu empfehlen
>Und zwar brauche ich für ein Projekt eine Art Tastatur mit 15 Tastern.
Falls kein gleichzeitiges Mehrfachdrücken von Tasten erkannt werden
muss:
ADC-Pin + Widerstandsleiter?
>mir gefällt immernoch der parallele Weg. ein 74HC573er Latch
um das par. einzulesen braucht er nur 2x (8bit- oder 2x4bit- IN-ICs (bsp
'541). (uc ist dafür völlig unnötig)
MCUA schrieb: >>mir gefällt immernoch der parallele Weg. ein 74HC573er Latch > um das par. einzulesen braucht er nur 2x (8bit- oder 2x4bit- IN-ICs (bsp > '541). (uc ist dafür völlig unnötig) Und wozu dann den Zwischenspeicher? Dann kann man die Tasten genauso gut direkt anschließen.
>Und wozu dann den Zwischenspeicher?
Da ist kein Zwischenspeicher, nur Driver-IC.
(um bsp.weise von beliebig vielen INs auf 8 oder 4 Leitungen zuschalten,
die dann zum uC gehen.)
man gibt seine 8 bit an das Latch und sagt dem 2ten µC "deine Daten sind abrufbereit" danach schaltet man die Latcheingänge hochohmig und kann seine Portpins wieder anderweiteig "als Ein/Ausgänge" verwenden. Ich habe z.B. einen Attiny26 damit ein LCD im 8 bit Mode betrieben und gleichzeitig mehrere Portpins für ADC und andere Sachen wie Warn LEDs verwendet.
>man gibt seine 8 bit an das Latch und sagt dem 2ten µC "deine Daten sind >abrufbereit" danach schaltet man die Latcheingänge hochohmig und kann >seine Portpins wieder anderweiteig "als Ein/Ausgänge" verwenden. Dafür braucht man kein Latch. Ausserdem schaltet man nicht Eingänge sondern Ausgänge hochohmig.
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.