Hallo,
Eine Frage. Ich habe ein kleines Programm für den atmega8 in assembler
geschrieben. Dabei nutze ich ein Standart 16x2 Display für die
Textanzeige. Ich habe außerdem einen Resetknopf eingebaut. Nun tritt
folgendes Problem auf: wenn ich resete fumktioniert das Display nicht
mehr richtig. D.h. konkret nur die erste Zeile wird beschrieben und nur
in hohem Kontrast. Dieser Fehler ist auch beim Programmieren manchmal
aufgetreten, wenn das ich noch an der Displayinitialisierung
rumgebastelt hab oder ähnliches.
Das merkwürdige ist dabei: Ich dachte, dass beim Reset im Prinzip der
Controller einfach neu gestartet wird von Anfang an. Insofern müsste es
ja das gleiche sein wie wenn ich das ganze Gerät abschalte und wieder
anschalte. Dann tut das Display nämlich was es soll.
Kommt dieses Problem jemandem bekannt vor?
Gruß und vielen Dank
Matze
es ist kein programmer drin. das problem ist, dass ich eine eigene
platine erstellt habe, bei der dieses problem nun das erste mal
auftritt. bei einer modulplatine auf der ich die schaltung
zusammengesteckt hatte hatte das problem nicht. ich hab schon überprüft
ob ich den reset-taster vielleicht irgendwie falsch gelegt habe oder der
pull-up-widerstand falsch ist oder sonst was. nur irgendwie gehen mir
langsam die lösungen aus. ich hab auch die controller durchgetauscht um
zu sehen ob es an der software liegt aber irgendwie nicht.
gut wäre wenn ich einfach nen kleinen tip bekomme wo ich suchen könnte -
scheinbar liegt es ja an der hardware. wenn der reset-taster richtig
belegt ist bleibt ja nur noch die beschaltung. was kann ich da falsch
machen, welche pins sollte ich prüfen. ich verwende das LCD 162 DIP
(Artikelnummer Reichelt) mit dem Standartcontroller.
>scheinbar liegt es ja an der hardware.
Stimmt deine Tastatur gibt nur noch kleine Buchstaben aus.
By the way: Deine Hardware kennt hier leider keiner !
Prüf mal Dein Timing, Signalleitungen bei der alten Steckbrett-Variante
länger ? Mach mal Dein Protokoll für das Display entwas langsamer - paar
NOPs rein!
>Vielleicht bist Du auch zu schnell oben mit Deinem Mega8, mach mal ein>Delay - 10ms- an den Anfang Deiner Main-Routine.
Vieleicht schliesst er mal ein paar 100nF Kondensatoren
in seiner Schaltung an. Aber das ist nur geraten.
Schaltung: Unbekannt !
Software: Unbekannt !
Was soll man dazu noch sagen ?
Rate mal mit Rosental ?
vermutlich hängt es damit zusammen, dass das Display nicht "resettet"
wird und der Controller "mitten im Laufen" abgewürgt wird - unter
Umständen sendet er dabei auch "versehentlich" irgendwelche Kommandos.
Gruss Otto
@holger.
Hier geht es klar um ein Timing-Problem, da es mit einem anderen
(Schaltungstechnisch) gleichen Aufbau ja funktioniert. Außerdem brauchst
Du ja nix zu sagen
erst mal vielen dank, werde mir das timing mal genauer anschauen und ein
bisschen am programm rumbasteln.
aber mal im ernst - das ist schon ein merkwürdiges forum hier. bei
vielen anderen foren (ein gutes cad-forum das ich kenne z.b.) ist es so:
ich schreibe eine frage und ein paar leute äußern ihre ideen dazu und
geben vielleicht noch den hinweis welche informationen ihnen noch
weiterhelfen oder sie posten einen link der mit dem thema allgemein zu
tun hat. hier läuft es so ab: ich poste eeine fragt und bekomme dann
eine vielzahl von antworten und in jeder zweiten wird prinzipiell
erstmal rumgestänkert, kritisiert, vom thema abgewichen oder sonstwas.
das ist schade, denn einige hier scheinen sich echt um die frage kümmern
zu wollen.
z.b. "Analog": der schreibt einfach was ihm dazu einfällt. daraufhin
muss "magnus müller" erstmal einen beitrag schreiben der im prinzip
völlig überflüssig ist und nur den thread unnötig vergrößert - hast du
zu viel zeit? "holger" antwortet auch prmt darauf - was macht ihr
eigendlich den ganzen tag? "marco hörner" gibt dann einen weiteren guten
tip und bittet indirekt um mehr informationen - super! dann macht
"holger" schon sein drittes unnötiges posting an diesem tag in einem
thread innerhalb einer halben stunde - was für eins schwachsinn.
naja. vielen dank den paar sehr hilfreichen usern, denn jetzt habe ich
eine quelle an der ich suchen kann und hoffentlich zu einer lösung
kommen kann. den anderen kann man nur sagen: sucht euch nen job.
gruß
matze
@matze
das kenne ich auch. Die Ursache liegt meines Erachtens darin, das der E
Pin des Displaycontrolers (als einziger Eingang) keinen Pullup besitzt.
Während Reset hängt der Pin in der Luft. Ein 100K Widerstand nach Masse
hat das Problem gelöst.
Gruss
Frank
Der Beschreibung nach (wenn sie denn stimmt..) sieht es so aus, dass der
Displaycontroller beim Reset in einem Zustand hängt, in dem er sich
nicht richtig konfigurieren lässt. Nutze die Dinger seit Jahren nicht
mehr und bin auch zu faul zum suchen, aber meine mich zu erinnern, dass
man am Anfang der Initialisierung 3x das Reset-Kommando ausgibt, um ihn
in einen definierten Zustand zu versetzen. Delays nicht vergessen!
Wenn das Display mit 4 bit angesteuert wird, will es immer zweimal 4 bit
haben. Da gibt es keine Synchonisierung. Vom Reset des uC kriegt das
Display nichts mit. und hält dann das erste Byte der Initialisierung für
das 2 byte der vor dem Reset begonnenen Sequenz.
Vielleicht hilft es trotz 4 bit-Anschluß, während des Reset erst mal auf
8 Bit zu schalten, damit sich die Datenkopplunng zum Display
synchronisiert.
Etwa so:
Sende2nibblesvon( 0x22 ); // schalte auf 8-bit Betrieb
delay(1.65ms);
Sende2nibblesvon( 0x22 ); // schalte auf 8-Bit-Betrieb
delay(1.65ms);
Sende2nibblesvon( 0x28 ); // schalte auf 4-Bit Betrieb und Display ein
delay(1.65ms);
Mich wundert eh, wie lange die Datenübertragung im nichtabgesicherten
4-Bit plus 4-Bit Modus gut läuft. Braucht nur mal ein Takt nicht
angenommen werden, schon werden high und low Nibble auf immer
vertauscht.
Vielen Dank soweit.
Ich habe nun den 100k widerstand an Pin 6 (Enable) ausprobiert und ein
bisschen mit den Delay-Zeiten rumgespielt vor allem vor der
Initialisierung des Displays. hat aber alles nichts genützt.
Gibt es im Assembler-code einen Befehl, der quasi alles auf Null bringt?
also jede undefiniertheit oder vorherige Porgrammierung eliminiert? naja
eigendlich ist das ja der reset button.
hab die displayinitialisierung mal angehängt - vielleicht ist da ja
grundlegend etwas falsch.
noch jemand ne idee?
Super! das wars. Vielen Dank, ich stehe tief in deiner Schuld - das war
nämlich mein letzter Haken an meinem Projekt - Nun läuft die ganze
Schaltung endlich fehlerfrei!
Vielen Dank!
Matze
moin,
wollte mal mitteilen, dass dieser Threat soeben mein Problem mit der
Displaykommunikation nach einem Reset gelöst hat.
Hoch die Tassen ;-)
Danmke & Gruß, Alex