2 MCs miteinander "verbinden"

OP #3620876
Lesenswert?

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!
#3620885
Lesenswert?

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.
Persönliche Seite #3620890
Lesenswert?

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.
Gast #3620906
Lesenswert?

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
#3620914
Lesenswert?

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
Angehängte Dateien:
#3620970
Lesenswert?

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
Gast #3622265
Lesenswert?

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.
#3622404
Lesenswert?

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.
Gast #3622415
Lesenswert?

>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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren