Forum: Mikrocontroller und Digitale Elektronik Wie mehrere ATMega( und LCD verbinden / kommunizieren


von Tobias N. (silberkristall)


Lesenswert?

Hallo,

kann mir jemand mal ein paar LLinks geben wo man nachlesen kann, 
möglichst in C wie man mit einem ATMega8 andere ATMega8 ansprechen kann?

Felgendes vorhaben:ich möchte ein Grafikdisplay mit Touch an einen 
ATMega8 hängen, gleichzeitig soll dieser noch 2 temperaturen auslesen. 
Dann soll der ATMega8 auf dem LCD mehrere Menüs anzeigen.

Wenn Menü 1 angezeigt wird und auf dem Touchscreen wird was gedrückt 
soll er das dann an ATMega8 1 weiter geben.

Wenn Menü 2 angezeigt wird und auf dem Touchscreen wird was gedrückt 
soll er das dann an ATMega8 2 weiter geben.

Wenn Menü 3 angezeigt wird und auf dem Touchscreen wird was gedrückt 
soll er das dann an ATMega8 3 weiter geben

usw.

Mir stellen sich hier nun die fragen,

wie verbindet man mehrere als nur 2 ATMega8 miteinander?

Wie sagt man dann "welchen" ATMega8 der "Haupt" ATMega8 ansprechen soll?

Kann sich der "Haupt" ATMega8 merken welchen Menü zuletzt angezeigt 
wurde wenn man den Strom dann abschaltet und nach 1 - 2 Tagen wieder 
einschaltet?

Wie wird das Touchscreen angeschlossen und ausgelesen?

Danke euch schonmal.

von i2c (Gast)


Lesenswert?

Das geht mit jedem beliebigem Bus der vom mega8 unterstützt wird, ich 
würde mal I2C vorschlagen.

von spess53 (Gast)


Lesenswert?

Hi

Stellt sich die Frage: Warum mehrere kleine ATMega statt eines großen.

MfG Spess

von Tobias N. (silberkristall)


Lesenswert?

würde ich einen großen nehmen müsste ich von dort an alle leitungen die 
ich so benötige verlegen. Das werden einige Leitungen die von dort ab 
weggehen müssten.

So dachte ich mir das ich überall dort wo ein Knotenpunkt ist, ich einen 
ATMega8 hinsetzen kann und dann nur die "paar" Leitungen zum "Haupt" 
ATMega8 legen muss.

von spess53 (Gast)


Lesenswert?

Hi

Um welche Entfernungen handelt es sich denn?

MfG Spess

von ... (Gast)


Lesenswert?

Wenn's denn sein muesste und das UART jeweils frei waere wuerd ich auf 
einem Kabel einen Bidirektionalen UART Bus mit RS422 verwenden. Wenn's 
auf einer Leiterplatte waere, wahrscheinlich SPI. I2C ist Ramsch, da 
muss man die Richtung umschalten.

Aber. Auf einer Leiterplatte machen mehrere AVR wenig Sinn. So ein 
System ist schwer debugbar. Dafuer wuerde man viel Erfahrung brauchen, 
welche wahrscheinlich fehlt.

von i2c (Gast)


Lesenswert?

... schrieb:
> I2C ist Ramsch, da
> muss man die Richtung umschalten.
Hö? I2C können die megas doch in Hardware, da muss man nichts 
umschalten.

von Frank K. (fchk)


Lesenswert?

Tobias N. schrieb:
> Hallo,
>
> kann mir jemand mal ein paar LLinks geben wo man nachlesen kann,
> möglichst in C wie man mit einem ATMega8 andere ATMega8 ansprechen kann?
>
> Felgendes vorhaben:ich möchte ein Grafikdisplay mit Touch an einen
> ATMega8 hängen, gleichzeitig soll dieser noch 2 temperaturen auslesen.
> Dann soll der ATMega8 auf dem LCD mehrere Menüs anzeigen.
>
> Wenn Menü 1 angezeigt wird und auf dem Touchscreen wird was gedrückt
> soll er das dann an ATMega8 1 weiter geben.
>
> Wenn Menü 2 angezeigt wird und auf dem Touchscreen wird was gedrückt
> soll er das dann an ATMega8 2 weiter geben.
>
> Wenn Menü 3 angezeigt wird und auf dem Touchscreen wird was gedrückt
> soll er das dann an ATMega8 3 weiter geben

Zunächst: Du wirst merken, dass für den zentralen Knoten ein Mega 8 
etwas eng werden kann. Ich würde einen größeren nehmen, sowas in 
Richtung 644p oder so. Da passen dann auch noch mehrere Fonts rein.

Und für die anderen nimmst Du besser Mega88p. Davon gibts bei Bedarf 
auch Versionen mit mehr Speicher: 168p, 328p. p steht für PicoPower, 
d.h. weniger Stromverbrauch. Und schneller sind die Teile auch noch, und 
sie haben noch einige Zusatzfunktionen. Der Mega8 ist eine alte Kamelle, 
lass den im Katalog.

> Mir stellen sich hier nun die fragen,
>
> wie verbindet man mehrere als nur 2 ATMega8 miteinander?

Schau mal nach RS485. Dazu brauchst Du den UART und einen MAX485 pro 
Knoten.

Lies das hier:
http://www.embeddedsys.com/subpages/resources/images/documents/microsys_art_RS485.pdf

> Wie sagt man dann "welchen" ATMega8 der "Haupt" ATMega8 ansprechen soll?

Einer spricht, die anderen hören mit, und der, der gemeint ist, merkt 
sich die Mitteilung.

> Kann sich der "Haupt" ATMega8 merken welchen Menü zuletzt angezeigt
> wurde wenn man den Strom dann abschaltet und nach 1 - 2 Tagen wieder
> einschaltet?

Ja. Für sowas gibts das EEPROM.

> Wie wird das Touchscreen angeschlossen und ausgelesen?

Googel nach der Appnote AVR341. Da stehts drin. Du brauchst 4 oder 5 
analoge Eingänge, je nach Typ. Beim Mega 8 und den modernen Nachfolgern 
Mega88/168/328 hast DU nur 6 analoge Eingänge, und wenn Du dann noch I2C 
benutzen willst, hast Du nur noch 4, und wenn Du dann noch zwei analoge 
Temperatursensoren (KTY, AD592 oder PTC) hast, dann hast Du ein Problem. 
Deswegen die Empfehlung, einen 40-poligen Chip wie den Mega644p zu 
nehmen.

von Tobias N. (silberkristall)


Lesenswert?

Frank K. schrieb:
>> Wie sagt man dann "welchen" ATMega8 der "Haupt" ATMega8 ansprechen soll?
>
> Einer spricht, die anderen hören mit, und der, der gemeint ist, merkt
> sich die Mitteilung.

Ja, ok, aber die anderen sollen ja nicht nur "mithören" sondern sollen 
dem Hauptchip auch Datenmitteilen, also ob was geschaltet ist oder nicht 
usw.

Frank K. schrieb:
> Googel nach der Appnote AVR341. Da stehts drin. Du brauchst 4 oder 5
> analoge Eingänge, je nach Typ. Beim Mega 8 und den modernen Nachfolgern
> Mega88/168/328 hast DU nur 6 analoge Eingänge, und wenn Du dann noch I2C
> benutzen willst, hast Du nur noch 4, und wenn Du dann noch zwei analoge
> Temperatursensoren (KTY, AD592 oder PTC) hast, dann hast Du ein Problem.
> Deswegen die Empfehlung, einen 40-poligen Chip wie den Mega644p zu
> nehmen.

Also die Temperatursensoren werden schon digitale sein. An die anderen 
Chips kommen sachen wie ein Lichtsensor, Regensensor, Windsensor etc. 
allerdings an verschiedenen stellen, also es kommt nicht wirklich auf 
die sek. genau an wann die Daten im Konotenchip eintreffen sondern das 
sie halt eintreffen.

Also die anderen Chip müssen Daten an den Knotenchip senden sowie 
enpfangen können.

von Jens A. (micro)


Lesenswert?

Hi,

Ich can die nur can Bus empfehlen.
Entweder via SPi mcp Chip dranhängen oder auf at90can umsteigen

von spess53 (Gast)


Lesenswert?

Hi

Die Frage nach der Entfernung steht immer noch im Raum.

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

Tobias N. schrieb:

>> Einer spricht, die anderen hören mit, und der, der gemeint ist, merkt
>> sich die Mitteilung.
>
> Ja, ok, aber die anderen sollen ja nicht nur "mithören" sondern sollen
> dem Hauptchip auch Datenmitteilen, also ob was geschaltet ist oder nicht
> usw.

Ein Rechnerverbund ist selten eine Demokratie.
Einer spricht und die anderen hören zu, ist wörtlich zu nehmen.

Der eine der spricht, kann ja seine Kumpanen reihum fragen:
Hast du was für mich?

Der eine in der Mitte ist der, der alles anleiert. Die anderen antworten 
nur, wenn sie gefragt werden. Das vermeidet das ganze Durcheinander, 
wenn alle zur gleichen Zeit 'reden'.

von Tobias N. (silberkristall)


Lesenswert?

spess53 schrieb:
> Hi
>
> Die Frage nach der Entfernung steht immer noch im Raum.
>
> MfG Spess

Also von 2/3 Meter bis 20/30 Meter ist da so ziemlich alles drinne.

von Frank K. (fchk)


Lesenswert?

Tobias N. schrieb:
> Frank K. schrieb:
>>> Wie sagt man dann "welchen" ATMega8 der "Haupt" ATMega8 ansprechen soll?
>>
>> Einer spricht, die anderen hören mit, und der, der gemeint ist, merkt
>> sich die Mitteilung.
>
> Ja, ok, aber die anderen sollen ja nicht nur "mithören" sondern sollen
> dem Hauptchip auch Datenmitteilen, also ob was geschaltet ist oder nicht
> usw.

Klar. Ich habe ja nicht gesagt, dass nur einer senden kann. Alle Knoten 
sind gleichberechtigt. Heißt: Senden kann jeder, aber nur einer zur 
Zeit. Die anderen müssen hören. Dafür musst Du programmtechnisch sorgen.
Lies den Artikel, dann weißt Du mehr.

Hier wurde auch die Empfehlung CAN-Bus gegeben. Diese Empfehlung hat 
auch ihre Vorteile, aber es gibt nur relativ große AVRs mit CAN, und 
keiner hat DIL oder SO-Gehäuse. Dagegen gibts es viele PIC18 und PIC24 
mit CAN im DIL-Gehäuse, oder Du musst einen extra CAN-Controller 
dazubauen, was nochmal extra Aufwand ist. Bei Microchip bekommst Du für 
nur wenig Geld mehr zum CAN-Controller noch einen Microcontroller im 
gleichen Gehäuse dazu (der in einem anderen Posting empfohlene 
Controllerchip MCP2515 ist praktisch der CAN-Controller, der in vielen 
PICs wie zB dem PIC18F26K80 eingebaut ist, und zwischen dem PIC18F26K80 
und dem MCP2515 liegt nicht mal ein Euro Preisunterschied; dazu kann der 
PIC schneller auf seinen internen Controller zugreifen als ein AVR auf 
den externen).

> Frank K. schrieb:
>> Googel nach der Appnote AVR341. Da stehts drin. Du brauchst 4 oder 5
>> analoge Eingänge, je nach Typ. Beim Mega 8 und den modernen Nachfolgern
>> Mega88/168/328 hast DU nur 6 analoge Eingänge, und wenn Du dann noch I2C
>> benutzen willst, hast Du nur noch 4, und wenn Du dann noch zwei analoge
>> Temperatursensoren (KTY, AD592 oder PTC) hast, dann hast Du ein Problem.
>> Deswegen die Empfehlung, einen 40-poligen Chip wie den Mega644p zu
>> nehmen.
>
> Also die Temperatursensoren werden schon digitale sein. An die anderen
> Chips kommen sachen wie ein Lichtsensor, Regensensor, Windsensor etc.
> allerdings an verschiedenen stellen, also es kommt nicht wirklich auf
> die sek. genau an wann die Daten im Konotenchip eintreffen sondern das
> sie halt eintreffen.
>
> Also die anderen Chip müssen Daten an den Knotenchip senden sowie
> enpfangen können.

Klar. Lies Dich schau und komm dann noch mal wieder. Und meine 
Chipempfehlungen stehen trotzdem.

fchk

von spess53 (Gast)


Lesenswert?

Hi

>Also von 2/3 Meter bis 20/30 Meter ist da so ziemlich alles drinne.

Dann wohl eher RS485. Geht aber auch mit CAN-Treiber (nicht 
CAN-Controller). Das ganze mit UART im Multi-processor Mode.

Damit ist das, was Karl-Heinz hier

Beitrag "Re: Wie mehrere ATMega( und LCD verbinden / kommunizieren"

beschrieben hat einfach realisierbar.

MfG spess

von Thorsten S. (thosch)


Lesenswert?

spess53 schrieb:
>>Also von 2/3 Meter bis 20/30 Meter ist da so ziemlich alles drinne.
>
> Dann wohl eher RS485. Geht aber auch mit CAN-Treiber (nicht
> CAN-Controller). Das ganze mit UART im Multi-processor Mode.

Oder RS422, wenn eine 5-Draht-Leitung zur Verfügung steht (2 
symmetrische Paare) + GND. Damit wäre Vollduplex möglich und man spart 
sich die Sende-/Empfangs-Umschaltung und braucht lediglich eine 
Slave-Adressierung um jeweils den sendeberechtigten Slave zu aktivieren.

Gruß,
Thorsten

von spess53 (Gast)


Lesenswert?

Hi

>Oder RS422, wenn eine 5-Draht-Leitung zur Verfügung steht (2
>symmetrische Paare) + GND. Damit wäre Vollduplex möglich und man spart
>sich die Sende-/Empfangs-Umschaltung und braucht lediglich eine
>Slave-Adressierung um jeweils den sendeberechtigten Slave zu aktivieren.

Wenn ein Controller den Master übernimmt braucht man kein fullduplex.

MfG Spess

von Jens A. (micro)


Lesenswert?

Hallo,

also bei diesen Anforderungen kann ich dir nur nochmal can bis 
empfehlen.
Ein At90can32 macht seine Sache wirklich gut und den kann man auch 
leicht selber löten das ist ein großes tqfp Gehäuse.

Vor allem der programmieraufwand ist durch can hält sehr gering da dass 
meiste
Wie cdc oder Bus abitrierung in der Hardware steckt

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
Noch kein Account? Hier anmelden.