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!
Albert schrieb:> Die Lcd-Routines.asm also? Da verwende ich die Standardversion, ich hab> sie trotzdem mal angehängt.
Das ist bestimmt nicht der Standard. Ist aber sehr nett von dir, dass du
sie trotzdem angehängt hast.
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?
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
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...
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.
Albert schrieb:> Bei einigen funktioniert es ohne Probleme,
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.
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...
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?
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.
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.
Albert schrieb:> Schaltplan hab ich übrigens angefügt.
Das ist kein (vollständiger) Schaltplan. Es fehlen Verbindungen und jede
Menge Bezeichnungen.
Du solltest auch das vollständiges Programm posten. So wie es durch das
AVR-Studio übersetzt wurde.
Albert schrieb:> Schaltplan hab ich übrigens angefügt.
OK.
Jetzt stellt sich noch die Frage, ob das in der Realität auch
tatsächlich so gesteckt wurde und/oder ob es zb einen Wackelkontakt
gibt.
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!
Georg G. schrieb:> Wo sind ein oder zwei Stützkondensatoren am Display und am ATMega?
Wofür benötige ich die Stützkondensatoren? Sorry für die
Anfänger-Fragen..
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
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.
holger schrieb:> Hintergrundbeleuchtung ohne Vorwiderstand
In der letzten Lieferung aus China hatte der Hersteller ganz heimlich
Vorwiderstände eingebaut. Und die LEDs waren deutlich besser als früher,
wesentlich heller bei weniger Strom.
Es gibt also durchaus positive Überraschungen.
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.
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...
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.
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.
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?
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.
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!
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...
>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
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
Albert schrieb:> dass mein Display nur weiße Balken in der oberen> Zeile anzeigt und sonst nichts.
also hast du schonmal alles richtig angeschlossen!
vermute den fehler also in der software.
georg schrieb:> Albert schrieb:>> dass mein Display nur weiße Balken in der oberen>> Zeile anzeigt und sonst nichts.>> also hast du schonmal alles richtig angeschlossen!
Sagen wir mal:
Die Spannungsversorgung ist richtig angeschlossen. Das sind 2 von 10
>Sagen wir mal:>Die Spannungsversorgung ist richtig angeschlossen. Das sind 2 von 10
Sagen wir 2 1/2 von 10. Die Kontrastspannung ist auch vorhanden.
Evtl. zu hoch, aber das ist ja egal;)