mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Nach Reset macht das Display nicht was es soll


Autor: matze (Gast)
Datum:

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

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sind irgendwelche Datenleitungen des Displays gleichzeit auch 
Programmierpins ? MISO,MOSI,SCLK ... dann steck mal den Programmer aus.

Autor: Magnus Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Kommt dieses Problem jemandem bekannt vor?

Ich glaube ja.

Gruß,
Magnetus

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Kommt dieses Problem jemandem bekannt vor?

>Ich glaube ja.

Mindestens zwei Fragen pro Tag ;)

Autor: matze (Gast)
Datum:

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

Autor: holger (Gast)
Datum:

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

Autor: Analog (Gast)
Datum:

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

Autor: Marko Hörner (vitis01)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auch die initialisierung könnte fehlerhaft sein, schau mal dein
timing im oszi an.
was die hardware angeht kann man leider nix sagen ohne
schaltplan.

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht bist Du auch zu schnell oben mit Deinem Mega8, mach mal ein 
Delay - 10ms- an den Anfang Deiner Main-Routine.

Autor: holger (Gast)
Datum:

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

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tja holger (mal wieder). Wir jungen Leute brauchen halt nicht soviel 
Info wie die Alten um ein Problem zu lösen ...

Autor: Otto (Gast)
Datum:

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

Autor: Analog (Gast)
Datum:

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

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@holger

hab übrigens außer blöden Kommentaren von Dir noch nie in einem Beitag 
etwas hilfreiches gelesen.

Autor: matze (Gast)
Datum:

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

Autor: [Frank] (Gast)
Datum:

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

Autor: Bensch (Gast)
Datum:

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

Autor: Hans-jürgen Herbert (hjherbert) Benutzerseite
Datum:

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

Autor: matze (Gast)
Datum:
Angehängte Dateien:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, da fehlt der Software Reset. Sieht ungefähr so aus:

powerup:    rcall   wait5ms
            dec     r18
            brne    powerup            ; Power-Up Wartezyklus min 30 ms

            ldi     r16, 0b00110000         ; Software Reset
            out     PORTD, r16

            rcall   LCD_enable              ; Enable-Impuls
            rcall   wait50ms

            rcall   LCD_enable              ; Enable-Impuls
            rcall   wait5ms

            rcall   LCD_enable              ; Enable-Impuls
            rcall   wait5ms

            ; sende init 1
            ldi     r16, 0b00100000         ; 4 Bit Modus aktivieren
            out     PORTD, r16
            rcall   LCD_enable              ; Enable-Impuls
            rcall   wait5ms

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... sag ich doch.

Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wann ruf ich den powerup denn auf - als erstes?

Autor: matze (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hat sich erledigt

Autor: matze (Gast)
Datum:

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

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist meine Kontonummer:   ... nein, nur ein Scherz.

Autor: Alexander H. (ill_son)
Datum:

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

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.