Forum: Mikrocontroller und Digitale Elektronik LCD an ATmega128 Port E


von Matze N. (hupe123)


Lesenswert?

Hi, ich habe da ein kleines Problem:

Ich hatte am PortC meines ATmega128 ein LCD und das lief. Alles war gut. 
Dann habe ich in Eagle ein Schaltplan erstellt und habe mich 
entschieden, das LCD von PortC auf PortE zu verlegen.
Ich habe das natürlich erst auf meiner Testplatine aufgebaut und muß nun 
Feststellen, daß mein LCD nicht mehr so will, wie ich.
Ich habe natürlich die Software dahingehend umgestellt aber jetzt 
würfelt das LCD nur noch die Anzeige. D.h. daß manche Zeichen 
(vielleicht 3 - 5 Stk.) nicht mehr den orginales Text anzeigen. Wenn ich 
den µC resette erscheinen andere Zeichen kryptisch.
Ich habe zwar zwei Timer am Laufen, ich lasse mir über die dazugehörigen 
Ports keine Signale ausgeben. Kann es dennoch daran liegen?

Hardware:
ATmage128
LCD = Displaytech 204A (an 4-Leitungsbus)
    LCD D4 = Port E Pin 2
    LCD D5 = Port E Pin 3
    LCD D6 = Port E Pin 4
    LCD D7 = Port E Pin 5
    LCD E  = Port E Pin 6
    LCD RS = Port E Pin 7
    LCD RW = GND
    alle anderen LCD Pins sind frei, init. läuft.

Danke

von Michael U. (amiga)


Lesenswert?

Hallo,

damit ein LCD geht, muß es richtig angeschlossen sein und richtig 
angesteuert werden.

Ob Du es so angeschlossen hast, wie Deine Liste sagt, muß Du selbst 
kontrollieren, wir haben die Schaltung nicht.
Ob es richtig angesteuert wird, muß Du auch selbst rausfinden, wir 
kennen ja Deine Software nicht...

Gruß aus Berlin
Michael

von Matze N. (hupe123)


Lesenswert?

doch doch, da passt alles. mir geht es bloß darum, daß mir evtl. die 
zwei timer mit den OC3X Ports, die ich ja fürs LCD benutze, ein strich 
durch die rechnung machen können. oder ob ich die als ganz normale Pins 
behandeln darf. (ich habe die noch nie benutzt, wisst ihr...)

Gruß

von spess53 (Gast)


Lesenswert?

Hi

> mir geht es bloß darum, daß mir evtl. die zwei timer mit den OC3X Ports, >die 
ich ja fürs LCD benutze,

Ist das jetzt ein Quiz, wer am besten raten kann, wie dein Programm 
aussieht?

MfG Spess

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

Hier nun der Quelltext.

Gruß

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

Die main.h

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

die lcd-routines.c

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

die lcd-routines.h

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

die tasten.c

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

die watchdog.c

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Es gibt übrigens in vielen Betriebsystemen (z.B. WinXp) auch eine 
eingebaute Packfunktion!

von Matze N. (hupe123)


Angehängte Dateien:

Lesenswert?

und hier für alle als rar archiv

von Michael U. (amiga)


Lesenswert?

Hallo,

ich halte mich im Moment mal vornehm zurück, der Source ist mir zu 
chaotisch...

Da sind Definitionen der LCD-Sachen in der main.h, da werden .c Files in 
Headerfiles includiert usw.
Das ist mir bei 30 Grad jetzt echt zu mühsam, da überhaupt 
zusammengehörige Komponenten zu finden.

Gruß aus Berlin
Michael

von Matze N. (hupe123)


Lesenswert?

is doch ganz einfach :)

alle definitionen, pin-belegungen, "dateiverwaltung", etc. sind in der 
main.h
der feste programmablauf ist in der main.c
alle funktionen der LCD-routine ist in der lcd-routines.c
alle funktionen der tasten in der tasten.c
alle funktionen des watchdogs in der watchdog.c

.
.
.

aber kann auch sein, daß der der es schreibt, sich darin am besten 
auskennt.

ich denke, ich habe den fehler evtl. schon eingegrenzt. meine 
LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht 
geschirmt ist (schäm)
könnte ich mit meiner vermutung richtig liegen?!

gruß

von holger (Gast)


Lesenswert?

>ich denke, ich habe den fehler evtl. schon eingegrenzt. meine
>LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht
>geschirmt ist (schäm)
>könnte ich mit meiner vermutung richtig liegen?!

Damit bringst du wenn überhaupt den Quarz ein bißchen
aus dem Takt. Ich denke eher nicht daß das groß stört.
Verdrahtungsfehler ist viel wahrscheinlicher.

von Thomas R. (tinman) Benutzerseite


Lesenswert?

Matze Niemand schrieb:

>
> ich denke, ich habe den fehler evtl. schon eingegrenzt. meine
> LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht
> geschirmt ist (schäm)
> könnte ich mit meiner vermutung richtig liegen?!
>
> gruß

naja, wenn dein qurz geöffnet ist udn an einen quanten 3 phasen 
beschleuniger der auf lcd zielt dann hast du recht.

> ATmega128 Port E

an welche stelle wird dein port initialiesiert ? Ich finde nur A, C und 
F.
Ich denke das wird es sein.

von Michael U. (amiga)


Lesenswert?

Hallo,

Matze Niemand schrieb:
> is doch ganz einfach :)
>
> alle definitionen, pin-belegungen, "dateiverwaltung", etc. sind in der
> main.h
> der feste programmablauf ist in der main.c
> alle funktionen der LCD-routine ist in der lcd-routines.c
> alle funktionen der tasten in der tasten.c
> alle funktionen des watchdogs in der watchdog.c

Naja, da werden die Meinungen wohl strak auseinander gehen...
Die Definitionen, die zu einem Programmteil gehören, gehören in das 
zugehörige .h File, das zur Übersucht auch genauso heißen sollte.
Also alle Definitionen der lcd-routines.c, die nach außen sichtbar sein 
sollen, in die lcd-routines.h usw.

Jedes Programmteil wird (und muß) vom Compiler für sich allein 
übersetzbar sein. Includet werden nur die jeweilig benötigten .h Files, 
damit der Compiler weiß, wie Funktionen und Variablen benutzt werden 
müssen, die in anderen .c Files existieren.
.c Files werden garnicht per include eingebunden, die werden dem 
Compiler nur bekannt gemacht (bei WinAVR z.B. hinzufühen existierender 
Source.

Wenn man dann ein anderes Projekt macht und z.B. die LCD-Routinen da 
benutzen will, muß man nur lcd...c und lcd...h ins neue 
Projektverzeichnis kopieren, die .c und .h im Menü hinzufügen und da, wo 
benutzt, die .h Datei includen.
Dann solle der Build durchlaufen und man ist fertig.
Das wird Dir bei Deinem Aufbau nicht gelingen...

> aber kann auch sein, daß der der es schreibt, sich darin am besten
> auskennt.

Das sowieso, das liegt in der Natur der Sache.
Allerdings kann ich sonst, wenn ich Sourcen von anderen für mich ändern 
will und z.B. deren lcd-Routinen nutzen will, so wie oben verfahren und 
habe meist in kurzer Zeit verbleibende Fehlermeldungen und Warnungen des 
Compilers begradigt.
Oder auf den Source verzichtet... ;-)

> ich denke, ich habe den fehler evtl. schon eingegrenzt. meine
> LCD-leitungen laufen direkt über die bahnen des quarzes, der nicht
> geschirmt ist (schäm)
Naja, da Quarz und seine Kondensatiren ja mit so kurzen Verbindungen wie 
möglich an den AVR sollen, frage ich moch eher, wie man da kreuzen kann.
Möglich ist es zwar schon, allerdungs eher unwahrscheinlich, weil sich 
eher der Quarz von den LCD-Signalen gestört fühlen dürfte als umgekehrt.

Ergibt sich natürlich die Frage nach anderen Problemstellen: 100n dicht 
an allen Spannungsanschlüssen des Mega128?
Ungünstige GND /Vcc-Führung usw. usw.

Gruß aus Berlin
Michael

von Michael U. (amiga)


Lesenswert?

Hallo,

Thomas R. schrieb:
>> ATmega128 Port E
>
> an welche stelle wird dein port initialiesiert ? Ich finde nur A, C und
> F.
> Ich denke das wird es sein.

In seiner Port-Init in main.c einzeln nach dem setzen der Richtung der 
anderen Ports.

Gruß aus Berlin
Michael

von Gast (Gast)


Lesenswert?

Warum schmeisst du nicht einfach ALLES bis auf eine minimale 
LCD-Ansteuerung raus?
Das ist doch nur ein wildes Gestochere.

von Matze N. (hupe123)


Lesenswert?

die tipps, die defines in die namensgleichen .h files aufzuteilen nehme 
ich mir zu herzen. deine argumentation finde ich besser als meine 
eigenen.

ein falscher anschluss der leitungen kann ausgeschlossen werden, da ja 
der großteil der zeichen richtig angezeigt wird. wäre etwas falsch 
angeschossen würde das LCD ja gar nicht richtig initiallisiert werden...
die kondensatoren zwischen vcc und gnd sind vorhanden und auch richtig 
eingelötet. es ging ja vorher auch.

das problem trat wirklich erst nach dem "umzug" auf und die 
zeichenfehler sind nicht reproduzierbar.
geändert wurde sonst auch nichts!

gruß

von Michael U. (amiga)


Lesenswert?

Hallo,

etws hilflos drein schauend im Moment...

Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die 
ISP-Pins, Programmieradapter dran? Stört der?

Gruß aus Berlin
Michael

von holger (Gast)


Lesenswert?

>Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die
>ISP-Pins, Programmieradapter dran? Stört der?

Warum sollte er wenn PE2..7 benutzt werden?

von Michael U. (amiga)


Lesenswert?

Hallo,

holger schrieb:
>>Was mir evtl. noch einfällt: an PE0 und PE1 liegen ja beim mega128 die
>>ISP-Pins, Programmieradapter dran? Stört der?
>
> Warum sollte er wenn PE2..7 benutzt werden?

stimmt, vergiss es einfach... hatte nur noch PortE un 128er im Kopf...

Gruß aus Berlin
Michael

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.