LCD-Display auf ATmega8 zeigt nur weiße Balken

Gast #3868411
Lesenswert?

Guten Abend,

ich versuche momentan eine Schaltung mit Display zum Laufen zu bekommen, 
scheitere aber daran, dass mein Display nur weiße Balken in der oberen 
Zeile anzeigt und sonst nichts.
Ich verwende einen ATmega8 Mikrocontroller, ein Display vom Typ 1602A.
Alle Kontrasteinstellungen habe ich schon durchprobiert, daran kann es 
nicht liegen. Momentan verwende ich das angehängte Testprogramm um 
irgendein Ergebnis zu erzielen, allerdings bisher erfolglos.

Hat irgendeiner einen Rat für mich? Die SuFu hat bisher nichts gebracht 
was ich nicht schon ausprobiert hätte...

Vielen Dank!
Angehängte Dateien:
#3868423
Lesenswert?

Ich vermisse in deinem Code die ganzen Definitionen, über dir die 
Hardware konfiguriert wird.

Wo ist zb in deinem Code enthalten
1
           sbr   temp1, 1<<PIN_RS        ; entspricht 0b00010000

auf welchem Pin die RS Leitung liegt? Eigentlich sollte das überhaupt 
nicht assemblieren, weil der Assembler ja keine Ahnung davon hat, was 
'PIN_RS' sein soll. Hast du denn da keine Fehlermeldungen gekriegt?
#3868430
Lesenswert?

Karl Heinz schrieb:
> Ich vermisse in deinem Code die ganzen Definitionen, über dir die
> Hardware konfiguriert wird.
>
> Wo ist zb in deinem Code enthalten
>
1
>            sbr   temp1, 1<<PIN_RS        ; entspricht 0b00010000
2
>
>
> auf welchem Pin die RS Leitung liegt? Eigentlich sollte das überhaupt
> nicht assemblieren, weil der Assembler ja keine Ahnung davon hat, was
> 'PIN_RS' sein soll. Hast du denn da keine Fehlermeldungen gekriegt?

Und dein Mega läuft auch wirklich mit
1
.ifndef XTAL
2
.equ XTAL = 4000000
3
.endif
4Mhz?
Gast #3868432
Lesenswert?

Mein Projekt findet im Rahmen eines Seminars an meiner Schule statt. Wir 
verwenden alle die gleichen Dateien (Die Lcd_routines.asm die von dieser 
Website hier stammen). Bei einigen funktioniert es ohne Probleme, ohne 
weitere Definitionen wie PIN_RS, bei anderen (wie mir) wiederum nicht. 
AVR Studio hat jedes Programm bisher ohne Fehlermeldungen geschluckt...
#3868438
Lesenswert?

Albert schrieb:
> Mein Projekt findet im Rahmen eines Seminars an meiner Schule statt.

Das ist kein Grund, der dich vom Mitdenken entbindet.

> Website hier stammen). Bei einigen funktioniert es ohne Probleme, ohne
> weitere Definitionen wie PIN_RS,

Sorry. Das kann nicht sein.
Du erzählst Blödsinn. Eine nicht erfolgte Definition ist eine nicht 
erfolgte Definition. Die schmeisst dir der Assembler um die Ohren. Der 
kann sich ja die korrekten Werte nicht aus den Fingern saugen.
Gast #3868443
Lesenswert?

Danke! Der mega läuft tatsächlich nur mit 1Mhz, habe das mal umgestellt. 
Bringt aber dennoch keine Besserung...

Außerdem habe ich eben diese Definitionen nachgefügt:

EQU  LCD_PORT = PORTD
.EQU   LCD_DDR  = DDRD
.EQU   PIN_RS   = 4
.EQU   PIN_E    = 5
.EQU   XTAL    = 1000000

Tut mir Leid das ich das bisher nicht erwähnt habe, ist jetzt Teil des 
Programms.

Funktioniert trotzdem nicht...
#3868447
Lesenswert?

Albert schrieb:
> Danke! Der mega läuft tatsächlich nur mit 1Mhz, habe das mal umgestellt.
> Bringt aber dennoch keine Besserung...
>
> Außerdem habe ich eben diese Definitionen nachgefügt:
>
> EQU  LCD_PORT = PORTD
> .EQU   LCD_DDR  = DDRD
> .EQU   PIN_RS   = 4
> .EQU   PIN_E    = 5
> .EQU   XTAL    = 1000000
>

Das wäre aber schon ein seltsamer Zufall, wenn dein LCD exakt genau so 
angeschlossen ist, wie im Tutorial. Kann natürlich sein, möglich ist 
alles.

Also: Wie ist das LCD angeschlossen. An welchem Port und an welchen 
Pins?
Gast #3868450
Lesenswert?

Karl Heinz schrieb:
> Albert schrieb:
>
>>
>
> Ich denke, bei einigen in deinem Seminar ist es so, dass die nicht
> einfach nur den erst besten Code aus dem Tutorial abkopieren, sondern
> dass die sich auch die begleitenden Texte dazu durchlesen und sich dann
> die Version aus dem Tutorial kopieren, die die endgültige ist.


Ich habe mich heute über eine Stunde mit einem meiner Mitschüler 
auseinandergesetzt, bei denen das Programm auf Anhieb funktionierte, 
auch er fand keinen Fehler.

Schaltplan hab ich übrigens angefügt.
Angehängte Dateien:
#3868454
Lesenswert?

Es gibt im Grunde nur 3 mögliche Fehlerquellen
* das LCD ist nicht wirklich HD44780 kompatibel
* die Leitungen sind verkehrt an die Pins angeschlossen und stimmen 
nicht
  mit den Angaben im Programm überein
* dein LCD ist knapp mit dem Timing. D.h. die Wartezeiten sind etwas zu 
kurz.

Punkt 3 ist der häufigste Fall, aber auch die anderen beiden sind nicht 
ausser Acht zu lassen und kommen in der Praxis vor. Ist mir selbst auch 
schon passiert, dass ich ein LCD auf dem Steckbrett an die falschen Pins 
verkabelt habe und es nicht gleich gemerkt habe.
Gast #3868462
Lesenswert?

Karl Heinz schrieb:
> Es gibt im Grunde nur 3 mögliche Fehlerquellen
> * das LCD ist nicht wirklich HD44780 kompatibel
> * die Leitungen sind verkehrt an die Pins angeschlossen und stimmen
> nicht
>   mit den Angaben im Programm überein
> * dein LCD ist knapp mit dem Timing. D.h. die Wartezeiten sind etwas zu
> kurz.
>
> Punkt 3 ist der häufigste Fall, aber auch die anderen beiden sind nicht
> ausser Acht zu lassen und kommen in der Praxis vor. Ist mir selbst auch
> schon passiert, dass ich ein LCD auf dem Steckbrett an die falschen Pins
> verkabelt habe und es nicht gleich gemerkt habe.

Okay, dann werde ich das jetzt noch einmal komplett überprüfen, danke 
für die Antwort!
Gast #3868473
Lesenswert?

Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann bitte
ihn mal, statt seines Displays das von Dir an sein Steckbrett zu 
stecken.

Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.

MfG Paul
#3868474
Lesenswert?

Ach, da ist vieles nicht verschaltet.

Der zweite GND gehört angeschlossen.
AVcc gehört angeschlossen

An beiden Pärchen VCC/Gnd AVcc/Gnd gehören Stützkondensatoren.
Ein Reset-Widerstand (ca. 10k) nach Vcc hat noch nie geschadet.

Was auch immer recht gut kommt: eine simple LED an einem Pin, die man 
bei Programmstart einschaltet, dann eine kleine Wartezeit (vielleicht 1 
Sekunde) und wieder ausschaltet, kann viel beitragen. Denn: die darf 
nach dem Brennen des Programms bzw. nach dem Spannungsanlegen nur einmal 
für die eingestellte Zeitdauer aufleuchten. Tut sie das mehrmals, dann 
ist das ein Hinweis darauf, dass der µC ungewollte Resets macht. Was 
wiederrum oft ein Hinweis auf ein Hardwareproblem, wie zb fehlende 
Stützkondensatoren, ist. Leuchtet sie hingegen überhaupt nicht, dann ist 
beim Brennen des Programms was schief gelaufen. So gesehen erlaubt so 
eine simple LED auf ganz einfache Art und Weise schon ein paar Aussagen 
über den 'Status' des Prozessors.
Gast #3868476
Lesenswert?

holger schrieb:
> Vieleicht ist ja der Kontrast volle Kanne aufgedreht.
> Hintergrundbeleuchtung ohne Vorwiderstand anschliessen
> führt meist zum defekt der LEDs.

Habe an Pinnummer 15 des LCDs einen Vorwiderstand von 10kOhm 
angeschlossen und regele die Hintergrundbeleuchtung über das 
Potentiometer.
Gast #3868479
Lesenswert?

Paul Baumann schrieb:
> Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann
> bitte
> ihn mal, statt seines Displays das von Dir an sein Steckbrett zu
> stecken.
>
> Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
> bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.
>
> MfG Paul

Habe da der Abgabetermin der Arbeit näherkommt ein neues Display (exakt 
gleicher Typ) gekauft und dieses angeschlossen, mit dem gleichen 
Effekt...
#3868486
Lesenswert?

Albert schrieb:
> Paul Baumann schrieb:
>> Wenn der, bei dem es funktioniert, ein vernünftiger Kerl ist, dann
>> bitte
>> ihn mal, statt seines Displays das von Dir an sein Steckbrett zu
>> stecken.
>>
>> Damit hast Du die Gewähr, daß das Display in Ordnung ist und mußt dann
>> bei Dir weiter in Verdrahtung und Programm suchen, wo die Macke ist.
>>
>> MfG Paul
>
> Habe da der Abgabetermin der Arbeit näherkommt ein neues Display (exakt
> gleicher Typ) gekauft und dieses angeschlossen, mit dem gleichen
> Effekt...

Das ist nicht dasselbe.

Der UNterschied: Beim Kollegen funktioniert sein LCD nachweislich. Baust 
du dein LCD ein und es funktioniert ebenfalls, dann weißt(!) du, dass es 
irgendein Problem in deinem Aufbau geben muss.

Du willst Tests machen, die dir Wissen verschaffen. Und sei es nur das 
Wissen, dass dein LCD in Ordnung ist. Du kannst auch mal deinen 
Prozessor bei ihm einsetzen (mit seiner Verkabelung und seinem LCD). 
Dann WEISST du, dass es nicht an deinem Programm liegt. Und umgekehrt: 
Du kannst seinen Prozessor, mit seinem Programm und seinem LCD in deiner 
Schaltung einsetzen. Wenn es dann in deinem Aufbau läuft, dann weisst 
du, dass dein Aufbau nicht so schlecht sein kann.

Auf gut Deutsch: du benutzt seinen Komplettaufbau um 'Teilchen tauschen' 
Spielchen zu spielen und daraus die Schlüsse zu ziehen, was von deinem 
Aufbau wohl funktioniert und in welchem Bereich der Fehler liegen könnte 
bzw. was du als Ursache ausschliessen kannst.
#3868491
Lesenswert?

Albert schrieb:
> Georg G. schrieb:
>> Albert schrieb:
>>> Vorwiderstand von 10kOhm
>>
>> Ich bin ja ein gläubiger Mensch... aber das ist etwas zu viel gelogen.
>> Über 10kOhm bekommst du nicht genug Strom für die Beleuchtung.
>
> Ich kann ein Bild für dich machen wenn du möchtest?

Kannst du.
Dann wird irgendwer die Ringe auf dem Widerstand lesen und feststellen, 
dass das keine 10k sind.

Mit 10k leuchtet keine LED. Schon gar nicht die Hintergrundbeleuchtung.

Aber: Bild ist sowieso eine gute Idee.
Gast #3868492
Lesenswert?

Karl Heinz schrieb:

>
> Das ist nicht dasselbe.
>

>
> Auf gut Deutsch: du benutzt seinen Komplettaufbau um 'Teilchen tauschen'
> Spielchen zu spielen und daraus die Schlüsse zu ziehen, was von deinem
> Aufbau wohl funktioniert und in welchem Bereich der Fehler liegen könnte
> bzw. was du als Ursache ausschliessen kannst.

Okay, das macht Sinn. Ich werd mich an die Schritte hier halten und 
Rückmeldung geben falls es nicht funktioniert hat, oder (hoffentlich) 
dann doch irgendwann funktioniert.

Vielen Dank für die Hilfe und die schnellen Antworten!
Gast #3868494
Lesenswert?

Karl Heinz schrieb:
> Albert schrieb:
>> Georg G. schrieb:
>>> Albert schrieb:
>>>> Vorwiderstand von 10kOhm
>>>
>>> Ich bin ja ein gläubiger Mensch... aber das ist etwas zu viel gelogen.
>>> Über 10kOhm bekommst du nicht genug Strom für die Beleuchtung.
>>
>> Ich kann ein Bild für dich machen wenn du möchtest?
>
> Kannst du.
> Dann wird irgendwer die Ringe auf dem LCD lesen und feststellen, dass
> das keine 10k sind.
>
> Mit 10k leuchtet keine LED. Schon gar nicht die Hintergrundbeleuchtung.
>
> Aber: Bild ist sowieso eine gute Idee.

Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold, 
Licht hier ist schlecht).

Nach der universal Tabelle sollte das 10kOhm sein, kann aber sein das 
ich mich irre...
Gast #3868502
Lesenswert?

>Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold,
>Licht hier ist schlecht).

Das sind 75k.

>Nach der universal Tabelle sollte das 10kOhm sein, kann aber sein das
>ich mich irre...

10k = Braun Schwarz Orange silber/gold
Gast #3868503
Lesenswert?

Albert schrieb:
> Ich werd mich an die Schritte hier halten und
> Rückmeldung geben falls es nicht funktioniert hat, oder (hoffentlich)
> dann doch irgendwann funktioniert.

Ja, mache das so, denn PANIK ist ein schlechter Ratgeber bei der Suche
nach dem Fehler. Wenn man sich einmal eine bestimmte Reihenfolge bei
der Fehlersuche angewöhnt hat, dann kann man die Macke am Besten
festnageln.

FF
(Fiel Fergnügen)
MfG Paul
Gast #3868547
Lesenswert?

holger schrieb:
>>Der Widerstand hat den Farbcode: Lila Blau Orange Silber (oder Gold,
>>Licht hier ist schlecht).
>
> Das sind 75k.

Nur für Farbenblinde oder CRI Geschädigte.

Seit wann bedeutet Blau "5"? Das Blau muss höchstwahrscheinlich grün 
sein, weil es 76kΩ in den Widerstandsreihen bis einschließlich E24 nicht 
gibt.
http://de.wikipedia.org/wiki/Widerstand_%28Bauelement%29#Farbkodierung_auf_Widerst.C3.A4nden
http://de.wikipedia.org/wiki/E-Reihe
Beitrag #5068344 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren