Forum: Mikrocontroller und Digitale Elektronik Von Atmega zu Atmega mit UART


von Hannes (Gast)


Lesenswert?

Hallo liebes Tüftlerteam,

Ich will bei einer Steuerung auf einem Lcd im Standbymodus eine Uhr auf 
dem Lcd anzeigen lassen. Da der Hauptchip (Atmega8) durch die Steuerung 
schon so voll ist will ich nicht noch die Uhrsteuerung in ihn 
reinpacken. Ich hatte mir gedacht ein anderer Atmel Chip mit HW UART 
könnte die Uhr übernehmen und die Daten über den UART an den Hauptchip 
sendet und dieser zeigt die Uhr dann im Standby anzeigt.

Würde das gehen?

MfG Hannes

:
von xfr (Gast)


Lesenswert?

Hannes schrieb:
> Würde das gehen?

Geht sicher. Aber ob es sinnvoll ist, steht auf einem anderen Blatt. 
Nimm lieber einen uC mit mehr Speicher, wenn der jetzige zu voll ist.

von Thomas E. (thomase)


Lesenswert?

Hannes schrieb:
> Ich hatte mir gedacht ein anderer Atmel Chip mit HW UART
> könnte die Uhr übernehmen und die Daten über den UART an den Hauptchip
> sendet und dieser zeigt die Uhr dann im Standby anzeigt.

> Würde das gehen?
Sicher.

Aber meinst du wirklich, daß du damit etwas sparst?
Ich nehme an, einen Timer hast du sowieso. Dann packst du den 5-7-Zeiler 
"Uhr" damit rein. Das wird garantiert nicht länger als der Empfang und 
Aufbereitung über UART.

mfg.

von Hannes (Gast)


Lesenswert?

Naja wenn mir einer sagen kann ob man mit einem Atmega16 2Stk 16*2 Lcd 
ansteuernkann (gleichzeitig) dann würd ich das machen aber ich glaub das 
geht nicht. Wollte insgesamt ne Motorsteuerung bauen mit 2 Kanälen und 
im Standby soll die Zeit angezeigt werden nur ich will die Zeitsteuerung 
nicht noch extra mit in einen Chip hauen.

von Hannes (Gast)


Lesenswert?

Timer1 geht schon für mür die PWM weg

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Naja wenn mir einer sagen kann ob man mit einem Atmega16 2Stk 16*2 Lcd
> ansteuernkann (gleichzeitig)

Gibt es einen Grund, warum das nicht gehen soll?
(ausser, das du die Pins nicht mehr hast und ansonsten auf eine 
SChieberegister-Lösung angehen müsstest).

> dann würd ich das machen aber ich glaub das
> geht nicht. Wollte insgesamt ne Motorsteuerung bauen mit 2 Kanälen und
> im Standby soll die Zeit angezeigt werden

und was macht das 2.te LCD?

> nur ich will die Zeitsteuerung
> nicht noch extra mit in einen Chip hauen.

Eine Uhr ist trivial.

von Sam .. (sam1994)


Lesenswert?

Hannes schrieb:
> Timer1 geht schon für mür die PWM weg

Der ist nicht weg, der kann noch für viel mehr als nur PWM genutzt 
werden. Außerdem gibts noch 2 andere Timer.

Hannes schrieb:
> Atmega16 2Stk 16*2 Lcd

Natürlich geht das, warum soll es denn nicht gehen?

von Karl H. (kbuchegg)


Lesenswert?

Dein Hauptfehler:
Du denkst, die Dinge werden einfacher, wenn du mehr µC einsetzt.
Du könntest nicht falscher liegen! Die Dinge werden komplizierter, je 
mehr µC zusammenarbeiten müssen. Und das beginnt bereits bei 2 µC.
Sowas macht man nur, wenn die Not extrem groß ist. Und dann auch nur 
unter Protest.

von Thomas E. (thomase)


Lesenswert?

Hannes schrieb:
> Timer1 geht schon für mür die PWM weg
Aber zwei hast du dann ja noch.
Ich will dir das nicht ausreden mit dem zweiten Controller. Aber solange 
sich das vermeiden lässt, solltest du das auch vermeiden. Da kann man 
sich viel Stress mit einhandeln. Und ob du nun einen Timer mit ISR oder 
eine UART-ISR hast, die das Hauptprogramm irgendwie veranlassen etwas 
auf das Display zu schreiben, ist Jacke wie Hose.

mfg.

von Hannes (Gast)


Lesenswert?

Ok Danke schoneinmal

Also geplant war eigendlich auch insgesamt ein Atmega16 oder 32. Nur ich 
weiß nicht wie ich 2 LCDs gleichzeitig ansteuern kann deswegen wollte 
ich die beiten Kanäle einzeln aufbauen aber wenn das geht ist ja gut. 
Kann mir denn einer ein Beispiel oder ähnlich senden wo sowas 
erklärt/gezeigt wird?
(Ich benutze Bascom)

Danke schonmal

Hannes

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Ok Danke schoneinmal
>
> Also geplant war eigendlich auch insgesamt ein Atmega16 oder 32. Nur ich
> weiß nicht wie ich 2 LCDs gleichzeitig

"gleichzeitig" ist ein grßes Wort.

Mit einem Zeitversatz von ein paar Zehntel Millisekunden ist sicherlich 
immer noch ausreichend.
Für den Benutzer IST DAS GLEICHZEITIG. Für deinen µC ist das: erst das 
eine, dann eine Runde Karten spielen, kleines Nickerchen, dann das 
andere.

(Wir reden doch von Text-LCD. Oder?)


> (Ich benutze Bascom)
Nix gegen BASCOM. Aber wenn ich in vernünftiger Zeit von München nach 
Frankfurt fahren will, nehm ich auch nicht das Mountainbike - so toll es 
auch ist.

von Thomas E. (thomase)


Lesenswert?

Hannes schrieb:
> (Ich benutze Bascom)
Shit. Nein ist schon OK.
Was ist denn das für ein Display?
Wie wird das angesteuert?
Normalerweise kannst du 100 Displays an einen Controller hängen. Die 
werden dann alle der Reihe nach angesteuert, wobei jeweils nur eine 
Leitung geändert werden muß. Normalerweise.

mfg.

von Hannes (Gast)


Lesenswert?

Ja Text LCD 16 mal 2 Zeilen

von holger (Gast)


Lesenswert?

>> Atmega16 2Stk 16*2 Lcd
>
>Natürlich geht das, warum soll es denn nicht gehen?

Ich hatte zum Spass schon mal drei 2x40 an einem 8 Bit Port;)

>(Ich benutze Bascom)

Hmmm.

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Ja Text LCD 16 mal 2 Zeilen

Na, dann passt es doch.

PS: es gibt auch 16*4

von Hannes (Gast)


Lesenswert?

Ach das heist ich kann 2  16*2 LCd als 16*4 definieren. oder wie ? Nur 
wie schließe ich das jetzt an? Ich kann doch nicht einfach die 
Datenleitung von den LCDs zusammen klemm (Db0 von Lcd1 an Db0 Lcd2, 
usw...). Wie macht man das?

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Ach das heist ich kann 2  16*2 LCd als 16*4 definieren. oder wie ? Nur
> wie schließe ich das jetzt an? Ich kann doch nicht einfach die
> Datenleitung von den LCDs zusammen klemm (Db0 von Lcd1 an Db0 Lcd2,
> usw...).

Natürlich kann man.
Das LCD, dessen E-Leitung getoggelt wird, das reagiert.

> Wie macht man das?
Tja. das dürfte jetzt in BASCOM mit seiner vorgefertigten 1-LCD Lösung 
etwas knifflig werden. Das liegt aber nicht am µC, es liegt nicht am LCD 
sondern es liegt daran, dass man mit BASCOM da dann einfach nicht mehr 
die Kontrolle darüber hat. (Meines Wissens. Aber das heißt nicht viel. 
Ich benutze BASCOM nicht. Mit jeder anderen Programmiersprache ist das 
nämlich ein Kinderspiel. Sofern man die Sprache beherrscht, 
selbstverständlich)

von Hannes (Gast)


Lesenswert?

Nagut ok ich progge jetzt seit ich 12 bin mit Basic also seit 3 Jahren 
(C64) und fange grade erst mit C an deswegen. Kann mir zur eben schon 
gestellten Frage ein Bascomprofi helfen oder einer der auch mit Bascom 
zu tun hat?

MfG Hannes

von Karl H. (kbuchegg)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Hannes schrieb:
>> Ach das heist ich kann 2  16*2 LCd als 16*4 definieren. oder wie ? Nur
>> wie schließe ich das jetzt an? Ich kann doch nicht einfach die
>> Datenleitung von den LCDs zusammen klemm (Db0 von Lcd1 an Db0 Lcd2,
>> usw...).
>
> Natürlich kann man.
> Das LCD, dessen E-Leitung getoggelt wird, das reagiert.
>
>> Wie macht man das?
> Tja. das dürfte jetzt in BASCOM mit seiner vorgefertigten 1-LCD Lösung
> etwas knifflig werden. Das liegt aber nicht am µC, es liegt nicht am LCD
> sondern es liegt daran, dass man mit BASCOM da dann einfach nicht mehr
> die Kontrolle darüber hat. (Meines Wissens. Aber das heißt nicht viel.
> Ich benutze BASCOM nicht. Mit jeder anderen Programmiersprache ist das
> nämlich ein Kinderspiel. Sofern man die Sprache beherrscht,
> selbstverständlich)


Das behandelt den 2 Stück 16*2 Fall.
Ein 16*4 LCD ist meines Wissens auch in BASCOM kein Problem.

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Nagut ok ich progge jetzt seit ich 12 bin mit Basic also seit 3 Jahren
> (C64)

Dann mach dich auf was gefasst.
BASCOM hat nichts mit dem BASIC zu tun, das du kennst.

Wenn du denkst, deine C64-BASIC Vergangenheit hilft dir da in 
irgendeiner Art und Weise bei BASCOM weiter, dann hast du dich 
geschnitten.

von Hannes (Gast)


Lesenswert?

ach ja die hilft bzw half am Anfang schon gut nur jetzt bitte zur Frage 
zurück. Ich weiß das 16*4 geht in Bascom nur wie muss ich die LCDs 
verbinden wenn ich die im 4bit Modus betreiben will??

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:

> gestellten Frage ein Bascomprofi helfen oder einer der auch mit Bascom
> zu tun hat?

Schau halt mal in die Hilfe zu BASCOM
(Hast du auch auf deinem Rechner. In BASCOM einfach mal F1 drücken)

http://avrhelp.mcselec.com/

Unter 'Language Reference' den Abschnitt "CONFIG LCD"
1
LCDtype
2
The type of LCD display used. This can be :
3
 
4
40x4,16x1, 16x2, 16x4, 16x4, 20x2, 20x4, 16x1a or 20x4A.
5
Default 16x2 is assumed.

Wie kommt es eigentlich, dass immer die Nicht-BASCOM-Programmierer den 
BASCOM Programmierern die entsprechenden Abschnitte in der Hilfe 
raussuchen müssen?

von Hannes (Gast)


Lesenswert?

Nein Nein Nein, ich möchte wissen WIE ICH DIE LCDS JETZT MITEINANDER 
VERBINDE BZW ZUSAMMEN AN DEN µC ANSCHLIESSE wenn ich Config Lcd = 16*4 
nehme ??!!??

von Hannes (Gast)


Lesenswert?

Das mit der Hilfer ist mir auch klar

von Karl H. (kbuchegg)


Lesenswert?

Hannes schrieb:
> Nein Nein Nein, ich möchte wissen WIE ICH DIE LCDS JETZT MITEINANDER
> VERBINDE BZW ZUSAMMEN AN DEN µC ANSCHLIESSE wenn ich Config Lcd = 16*4
> nehme ??!!??


Du kaufst dir 1 Stück LCD mit 16*4 Zeichen und schliesst es ganz stink 
normal an!

von Eumel (Gast)


Lesenswert?

Hannes schrieb:
> Nein Nein Nein, ich möchte wissen WIE ICH DIE LCDS JETZT MITEINANDER
> VERBINDE BZW ZUSAMMEN AN DEN µC ANSCHLIESSE wenn ich Config Lcd = 16*4
> nehme ??!!??

Das geht nicht.
Ließ dir durch wie ein LCD angesteuert wird. Dann wirst du die Lösung 
für dein Problem finden.

von Hannes (Gast)


Lesenswert?

Mensch ... Ich will Doch nur 2 Stück 16*2 Lcds an einen Atmega16 
anschliessen und diese Gleichzeitig betreiben! Nur wie Shcließe ich die 
LCDs jetzt an sodass ich beide gleichzeitig mit Einem Atmega 16 
betreiben kann?

von Karl H. (kbuchegg)


Lesenswert?

Und ansonsten ist hier auch noch eine Lösung, mit der man wahrscheinlich 
2 getrennte LCD zum laufen kriegen könnte

http://www.rn-wissen.de/index.php/Bascom_und_LCD's#Sonderfall:_LCDs_mit_mehr_als_80_Zeichen

von Eumel (Gast)


Lesenswert?

Hannes schrieb:
> Mensch ... Ich will Doch nur 2 Stück 16*2 Lcds an einen Atmega16
> anschliessen und diese Gleichzeitig betreiben! Nur wie Shcließe ich die
> LCDs jetzt an sodass ich beide gleichzeitig mit Einem Atmega 16
> betreiben kann?

Ist oben doch schon erklärt. Lern lesen.

von Hannes (Gast)


Lesenswert?

Danke Für den Link und tschüss .. (PS Eumel: Lern mal nett zu sein! Ist 
eine höhere Gabe als nur unnötiges zeug in ein Formu zu schreiben du 
Troll)

von Eumel (Gast)


Lesenswert?

Hannes schrieb:
> Danke Für den Link und tschüss .. (PS Eumel: Lern mal nett zu sein! Ist
> eine höhere Gabe als nur unnötiges zeug in ein Formu zu schreiben du
> Troll)

Wieso? Ich habe recht, das reicht mir.

von Hannes (Gast)


Lesenswert?

wenn du meinst dann hast du Pech!

von Hans F. (hans_f83)


Lesenswert?

Leutz ich muss sagen, wenn ich mir so manchen Tread ansehe, hier ist zum
Teil ein recht unfreundliches Klima.

Ich weis das es nervt zum 793. mal das gleiche zu erklären.

Mir geht das manchmal auch so, man sucht sich nen Wolf, wird aber nicht
fündig, weil man nicht die richtigen Suchbegriffe formuliert.
Und dann fragt man halt.
Sicher kann und soll niemand eine fertige Lösung präsentieren, denken 
muss man selber, auch wenns zeitweise weh tut.

Aber ein Link, oder ein Hinweis wonach man suchen soll, ist oft 
hilfreich.

Ich hab von Bascom keine Ahnung, werde ich auch nie bekommen.
Ich bleibe lieber beim C und für zeitkritische Dinge wenns sein muss
auch mal Assembler. Somit kann ich zum Problem leider nichts beitragen.

Und mal ganz am Rande:
Seit froh das die Kids sich mit dem Kram beschäftigen und nicht kiffend 
und saufend auf der Straße rumhängen.
Ich find man muss das Interesse fördern, sonst verliert man schnell den
Spaß an der Sache.
Das wäre schade und geht sicher nicht mit Sprüchen wie "Lies erstmal".

Auch wenn das hier nicht zum Thema gehört, mir brannte es unter den
Nägeln dies mal kund zutun.

Also nix für ungut, aber vieleicht einfach mal drüber nachdenken.
Jeder hat mal klein angefangen!


In dem Sinne....immer ein Bit übrighalten!

Hans

von Blackbird (Gast)


Lesenswert?

So könnte es gehen (umständlich, aber BASCOM geschuldet):

A) Zwei 16x2 LCD können nicht so zusammen geschaltet werden, dass der 
Controller ein 16x4 LCD sieht.

B) Zwei 16x2 LCD können nur so zusammen betrieben werden, wenn mit 
Ausnahme der E(nable)-EingÄnge alle anderen Leitungen der LCDs parallel 
geschaltet werden.

C) Diese beiden E-Pins werden über einen 2-zu-1-Multiplexer an den 
Controller angeschlossen.

D) BASCOM kann jetzt normal auf ein 16x2 LCD zugreifen. Wenn es auf das 
andere LCD zugreifen will, muß vorher der Multiplexer das andere E-Pin 
an den Controller schalten.

Umständlich, aber mit "Hausmitteln" machbar.


Blackbird

von Karl H. (kbuchegg)


Lesenswert?

Blackbird schrieb:

> Umständlich, aber mit "Hausmitteln" machbar.

Und genau das macht die im RN-Link erwähnte LCD-Library.
Sie arbeitet mit 2 E-Leitungen.


> Das wäre schade und geht sicher nicht mit Sprüchen wie "Lies erstmal".

Sorry. Kommt immer drauf an.
Wenn die Antwort (zum Teil) in der Online-Hilfe steht und man im Grunde 
nur bei der Anweisung nachsehen muss, in der ein LCD konfiguriert wird, 
dann ist "Lies erstmal" angebracht.
Wir sind doch hier nicht im Kindergarten. Das Arbeiten mit der Hilfe 
(und die ist bei BASCOM nicht schlecht) gehört zur Arbeit eines 
Programmierers mit dazu. Wenns um irgendein esoterisches Statement geht, 
sag ich ja noch nichts. Aber ein LCD zu konfigurieren ist doch Standard 
in BASCOM. Dann sieht man halt mal in der Hilfe nach, welche 
Möglichkeiten es da gibt.

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.