Forum: Mikrocontroller und Digitale Elektronik 2 MCs miteinander "verbinden"


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Joshua H. (joshih13)


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!

von Oliver S. (oliverso)


Lesenswert?

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

von chris (Gast)


Lesenswert?

Uart, TWI, I2C usw

von Luca E. (derlucae98)


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.

: Bearbeitet durch User
von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


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.

von Fabian D. (Gast)


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

von Thomas O. (kosmos)


Angehängte Dateien:

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

von Günter X. (kolle)


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

von Phantomix X. (phantomix)


Lesenswert?

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

von LostInMusic (Gast)


Lesenswert?

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

von MCUA (Gast)


Lesenswert?

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

von Mike (Gast)


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.

von MCUA (Gast)


Lesenswert?

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

von Thomas O. (kosmos)


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.

von MCUA (Gast)


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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.