mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Busy-Flag des LCDs lesen


Autor: Markus Wittmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hoi zäme
ich habe das avr-tutorial von mikrocontroller gelesen und möchte mal
selbst versuchen, ein lcd anzusteuern. mir ist aber nicht klar, wie ich
das busy-flag des lcd's auslesen kann. wenn ich RW auf 1 setzte
- an welchem pin des displays kann ich dann das busy-flag lesen und
- wie kann ich das busy-flag lesen, wenn ich zuvor bei meinem atmel die
pins als ausgänge festgelegt habe, welche die pins RW, RS, E und DB0 bis
DB7 des displays ansteuern? auf denen kann ich dann doch nicht lesen,
sonst wäre die definition im datenrichtungsfeld doch überflüssig!!!
markus

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hoi

1)Wenn ich RW auf 1 setzte
- an welchem pin des displays kann ich dann das busy-flag lesen und

http://www.geocities.com/dinceraydin/lcd/commands.htm
DB7 = busyflag

2)wie kann ich das busy-flag lesen, wenn ich zuvor bei meinem atmel
die
pins als ausgänge festgelegt habe, welche die pins RW, RS, E und DB0
bis
DB7 des displays ansteuern? auf denen kann ich dann doch nicht lesen,
sonst wäre die definition im datenrichtungsfeld doch überflüssig!!!

Die Definition ist nicht überflüssig, du musst bloss die pins auf
eingang schalten, wenn du das busyflag lesen möchtest.

fröhlichi feschtteg(bin au schwiizer:P)

nik

tschuldigung wegen meiner Rechtschreibung, ist schon spät;-)

Autor: Nik Bamert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ah ja ich hab einfach mal angenommen, du sprichst von einem lcd mit
einem hd44780 oder kompatiblen controller...

Autor: jornbyte (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Anschluss vom Busy-Flag-Pin wird im DB genannt, meist Pin6 oder
Pin7. Um das Lesen zu können musste den Ausgang des Ports natürlich auf
Eingang schalten und danach (wenn gelesen) wieder zurück auf Ausgang.
Die paar Befehle sollten doch noch ins Proggi reinpassen.

Autor: hans dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es kann aber sein, dass das busy-flag bei nach einigen Kommandos nicht
zur verfügung steht (init z.B.)

Autor: pumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
beim 'init' wirds noch nicht gebraucht, aber anschliessend solltest du
es immer abfragen, bevor du die nächsten daten schickst.
habe auch schon so'n display gehabt, welches beim timing langsamer war
als andere versuchskaninchen - damals 'nen wolf gesucht, mit busy-flag
wars dann aber erledigt.

... und gleichfalls schöne weihnachtsgrüsse, an alle hier

Autor: Markus Wittmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielen dank an alle... (c:

Autor: Markus Wittmer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab nun doch noch eine frage dazu. auf der oben verlinkten seite steht:
>   1.  Set R/W Pin of the LCD HIGH(read from the LCD)
>   2. Select the instruction register by setting RS pin LOW
>   3. Enable the LCD by Setting the enable pin HIGH
>   4. The most significant bit of the LCD data bus is the state of the
busy flag(1=Busy,0=ready to accept instructions/data).The other bits
hold the current value of the address counter.
>
>*This is a 1-micro-second instruction.

muss ich nun 1 us warten, bis das busyflag anliegt? hab nämlich im
datenblatt von "LCD 162C" gelesen, dass die "Execution Time" bei
diesem display bei 0 mikrosek. liegt um das busy-flag zu lesen. ich
stelle mir vor, um trotzdem auf der sicheren seite zu stehen in
folgender art zu programmieren. ich nehme an, dass ich punkt 1, 2 und 3
alle gleichzeitig ausführen kann, oder?

   ldi tmp, 0b110xxxxx  ;  es gilt: RS (PB5)=0; RW (PB6)=1; E (PB7)=1
   out DDRB, tmp        ;

muss ich nun hier 1 mikrosekunde warten, (und bei gewissen displays,
z.B beim "LCD 162C" gar nicht) bis das busyflag am display anliegt?
wie mach ich das bei einem uC mit 1 MHz, einfach mit einer "nop"
anweisung? (und wenn das programm auf einen schnelleren nC übertragen
wird, könnte hier ein fehler entstehen, weil das busyflag noch gar
nicht anlag???)

Autor: pumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... nicht gleichzeitig rs, r/w und enable mit 'out ddrx, register'
ausgeben - funktioniert bei den meisten lcds nicht. beim hd44780 werden
die anliegenden daten mit fallender flanke von enable übernommen, so wie
beim folgendem codeschnipsel:
busy_flag:
  ldi  temp,0b00000000          ;port a ist eingang
  out  ddra,temp

        cbi  portd,rs    ;befehl wird gesendet
        sbi  portd,rw    ;setze lcd in lesemodus
        sbi  portd,e      ;spreche lcd an

    nop
    nop
    nop

        sbic    pina,bf            ;lcd bereit?
        rjmp    busy_flag             ;nein, wiederhole

  cbi  portd,e      ;disable lcd

  ret                             ;lcd bereit

halte dich da auch mit an das datenblatt des lcd-controllers, hilft dir
da bestimmt auch weiter (der vom lcd ist eventuell etwas spärlich
ausgefallen).

... und frage das busy-flag trotzdem ab, denn wenn du mal das display
wechselst hast du vielleicht probleme

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.