www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD an ATmega128 Port E


Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier nun der Quelltext.

Gruß

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Die main.h

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die lcd-routines.c

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die lcd-routines.h

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die tasten.c

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die watchdog.c

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

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

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
und hier für alle als rar archiv

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas R. (tinman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gast (Gast)
Datum:

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

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.