mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik GrafikDisplay mit LC7981; Darstellungsprobleme


Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe hier eins der Grafik-Displays von Pollin mit einem LC7981 
drauf, habe aber einige Probleme, ein korrektes Bild zu bekommen.
Ich habe einiges versucht und nutze im Moment die Library von folgender 
Seite: 
http://www.frozeneskimo.com/electronics/2007/03/30...
(das Display dort sieht fast genauso aus, wie das von Pollin, ebenfalls 
oben mit einem Glasträge und 4 Kontakten; ich vermute mal Touch-Pad :-))

Ich bekomme jetzt ein Bild, aber leider mit Fehlern (flascher 
Inhalt/doppelte Zeilen). Wenn ich am "Duty-Cyle" spiele verschiebt sich 
der Bildinhalt bzw. werden Zeilenblöcke doppelt dar gestellt. Kann mir 
das jemand erklären oder hinweise zur korrekten Wahl geben?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach mal das Delay in der Busy Funktion größer.

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Benedikt!

Danke für den Hinweis, aber daran liegt es nicht. Das mit dem Duty-Cycle 
hat sich auch geklärt, steht ganz am Ende des Datenblatts ;-)

Aber es läuft immer noch nicht richtig. Es sieht so aus, als ob entweder 
die Koordinaten-Berechnung falsch ist oder das Display intern mit 
anderen Werten rechnet bzw. die Initalisierung falsch ist.
Ich versuche ein Schachbrett-Muster darzustellen. Dabei sind die 
Y-Linien eigentlich korrekt. Die X-Linien sind aber nicht ganz richtig. 
Es gibt möglicherweise einen Versatz  oder die (RAM-Zeile) ist länger 
als ich denke.
Jedenfalls seltsam und noch genug zu tun.

Gruß, Michael

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir läuft das Display wunderbar, ich habe auch den Code verglichen. 
Abgesehen von den zu kurzen Delays und einer falsch eingestellten 
Zeilenzahl passt da alles.

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh, Display läuft. Ich hatte einen Dreher bei DB6<>DB7 :-/

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt

Würdest du deinen Source veröffentlichen?

Gruß Sascha

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den kompletten Code kann/darf ich leider nicht veröffentlichen, aber 
wenigstens den wichtigsten Teil der Initialisierung, und die 2 
wichtigsten Funktionen.

Init:
lcd_writecom(0x01);      // character pitch
lcd_writedat(0x77);      // 8x8 chars

lcd_writecom(0x02);      // characters per line
lcd_writedat(19);        // 20
   
lcd_writecom(0x03);      // set duty
lcd_writedat(79);        // 1/80

lcd_writecom(0x08);      // startadress low
lcd_writedat(0x00);      // 0

lcd_writecom(0x09);      // startadress high
lcd_writedat(0x00);      // 0

lcd_writecom(0x00);      // mode con
lcd_writedat(0x32);      // display on

Adresspointer setzen (x=8Pixel Raster):
void lcd_setadress(unsigned char x, unsigned char y)
{  unsigned short adress;
  adress=y*20+x;
  lcd_writecom(0x0A);        // writeadress low
  lcd_writedat(adress&255);
  lcd_writecom(0x0B);        // writeadress high
  lcd_writedat(adress/256);
}

Ein Datenbyte wird so geschrieben:
lcd_writecom(0x0C);
lcd_writedat(data);

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Benedikt

Danke, das hilft schon mal weiter. Ist dies für ein 160*80 Pixel 
Display?
Nutzt du den internen Font oder externen?

Versuche das Pollin LCD am PIC24HJ128 am laufen zu bekommen.

Gruß Sascha

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist speziell für das 160x80 LCD. Ich nutze nur den externen Font, da 
der Controller nur Text oder Grafik kann, aber nicht beides 
gleichzeitig.

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe jetzt meinen Code lauffähig, d.h. das Display läuft. Mein 
größtes Problem war ein gedrehtes Kabel und eine leicht falsche 
Initalisierung.
Im Moment läuft Text- und Grafik-Modus. Bei der Grafik-Ausgabe muss ich 
noch eine Font/Bitmap-Funktion einbauen, dann sollte alles komplett 
sein. Ich werde den kompletten Source dann in die Code-Sammlung stellen.

BTW, kennt jemand eine Quelle für freie 8x8-Bitmap-Fonts?

Autor: Früher™ (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> BTW, kennt jemand eine Quelle für freie 8x8-Bitmap-Fonts?

Früher™ hat man die einfach aus seiner VGA-Karte ausgelesen :-)

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, aber dann sind die Fonts immer noch nicht frei©

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

im Textmodus läuft es jetzt. Habe dann angefangen, den Source von
http://www.frozeneskimo.com/electronics/2007/03/30...

für einen PIC18F4550 umzuschreiben. Leider werden nicht alle Zeichen 
korrekt dargestellt. Vor allem kleine Zeichen werden nicht dargestellt.

Gruß Sascha

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

anbei mal ein Bild, was das Display ausgibt.
In der ersten Zeile sollte stehen:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
In der zweiten Zeile sollte stehen:
abcdefghijklmnopqrstuvwxyz

Gruß Sascha

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es sieht so aus, als ob Du 25 Zeichen pro Zeile darstellen willst. Das 
hat bei mir auch nicht bzw. nur mit Pixel-Fehlern funktioniert. Versuche 
mal mit
"HorizPitch8" und "20 Zeichen" pro Zeile zu initialisieren. Damit 
funktioniert es bei mir.

Gruß, Michael

P.S.: ich habe noch nicht mit der Hintergrundbeleuchtung rumgespielt. 
Bauche ich da eigentlich noch einen Inverter?

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> P.S.: ich habe noch nicht mit der Hintergrundbeleuchtung rumgespielt.
> Bauche ich da eigentlich noch einen Inverter?

Nö, ist eine LED Hintergrundbeleuchtung. Deinen Tip werde ich mal 
versuchen.

Gruß Sascha

Autor: Michael Potthoff (mipo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das oben gesagt gilt natürlich nur, wenn Du den TextMode des Displays 
benutzt. Oder hast Du den Grafik-Modus und gibst den Text analog zum 
Beispiel von der Internet-Seite aus? Dabei sollt man beachten, dass der 
font.h nicht den kompletten ASCII-Satz abdeckt!

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Potthoff wrote:
> Das oben gesagt gilt natürlich nur, wenn Du den TextMode des Displays
> benutzt. Oder hast Du den Grafik-Modus und gibst den Text analog zum
> Beispiel von der Internet-Seite aus? Dabei sollt man beachten, dass der
> font.h nicht den kompletten ASCII-Satz abdeckt!

Ja ich nutze es im Grafik-Modus. Aber kleine Buchstaben und auch die 
großen sollte der Font können. Kleine werden aber gar nicht angezeigt.
Die großen sind ab dem R fehlerhaft.

Gruß Sascha

PS. Text-Modus funktioniert ja......

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Keine Ahnung wie das bei den PICs ist, aber kann es sein, dass die 
Tabelle zu groß ist für das Flash/RAM und dass daher irgendwas 
durcheinander kommt? Es sieht ja stark nach einem Überlauf irgendwo aus, 
denn er fängt nach dem R wieder vorne in der Zeichentabelle an.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde sagen dein Compiler hält sich nicht an die ANSI C Normen und 
rechnet nur mit 8 statt 16bit, daher gibts hier:
if (Font5x7[FONT_WIDTH*fontIndex+i] & (1<<j))
einen Überlauf. R müsste der 51. Buchstabe sein wenn ich mich nicht 
verzählt habe. 51 Zeichen * 5 Bytes/Zeichen -> 255 Bytes. Danach kommt 
Mist raus.
Wenn
if (Font5x7[(unsigned int)FONT_WIDTH*fontIndex+i] & (1<<j))
funktioniert, dann würde ich den Compiler wechseln. Nichts ist nerviger 
als ein Compiler der sich nicht an die elementarsten C Standards hält.

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Benedikt K. wrote:
> if (Font5x7[(unsigned int)FONT_WIDTH*fontIndex+i] & (1<<j))

Du bist mein heutiger Held :)

Jetz funktioniert es. Nutze den C18 von Microchip.

Gruß Sascha

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hat denn jemand das Touch Panel benutzt?

Gruß Sascha

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jain. Die sind zu >90% kaputt. Mess mal den Widerstand zwischen jeweils 
den äußeren beiden Anschlüssen. Wenn du da keine 300 bzw. 700 Ohm misst, 
Pech gehabt. Bei 1 von 15 Displays war der Touchscreen OK.
Das Problem liegt vermutlich am Kleber mit dem das Folienkabel am Glas 
befestigt ist. Nachdem ich das Kabel entfernt hatte, konnte ich am Glas 
die Widerstände messen.

Autor: Sascha Focus (sascha_focus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jep, beide defekt. Erklärt, warum in der Beschreibung nichts vom 
TouchPanel drin stand :(

Gruß Sascha

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das Programm, welches unter
http://www.frozeneskimo.com/electronics/2007/03/30... steht,
für einen MSP430 nachempfunden und es läuft soweit problemlos.
Toller Pinguin !
Benedikt schreibt:
>Ich nutze nur den externen Font, da der Controller nur Text oder Grafik kann,
> aber nicht beides gleichzeitig.
Dazu einige Fragen:
Auf der letzten Seite des Datenblattes ist die Tabelle des 
Zeichengenerators zu sehen.
Mit welchen Befehlen (bevorzugt in C) bekomme ich diese Zeichen auf eine 
festzulegende Stelle auf die Anzeige?
Oder ist das zu einfach, sodass niemand dazu was sagt?
Ziel soll sein,  Messwerte  evtl. auch Gleitkommazahlen, und auch Text
(z. B. Fehlermeldungen) auszugeben. (Programmierung mit mspgcc)

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss den Beitrag mal auf die vorderen Plätze rücken, um nicht vergessen 
zu werden

Autor: Tobias L. (morslucis)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
Ich häng mich mal hier ran, weil ich auch Darstellungsprobleme mit 
besagtem Display habe.

Und zwar folgendes:
Das Display gibt mir die erste Zeile, die ich reinschreibe auch aus, mit 
der korrekten Startposition und allem.
Das Problem ist nur, dass es alle weiteren Zeilen ignoriert (egal, was 
ich mit dem Cursor anstelle), und das Display komplett mit der ersten 
Zeile auffüllt. Und obwohl ich eine Zeichengröße von 8x10 eingestellt 
habe, produziert es lauter 8x5er Zeichen, bzw Zeilen mit einer Höhe von 
5, sodass sich die Zeichen überlappen.
Ich habe den Code mal angehängt, vieleicht findet ja wer den Fehler.


Die Fehlerbeschreibung war jetzt vielleicht etwas ungenau, daher bin ich 
offen für Rückfragen.

Autor: Tobias L. (morslucis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, ich habe den Fahler gefunden...
Es lag am DisplayDuty, und der Kontrastspannung...
Ich hatte V0 einfach an 5V geklemmt, und den DisplayDuty auf 1/4...
Jetzt funktioniert alles

Autor: Tobias L. (morslucis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wolfgang-G schrieb:

> Dazu einige Fragen:
> Auf der letzten Seite des Datenblattes ist die Tabelle des
> Zeichengenerators zu sehen.
> Mit welchen Befehlen (bevorzugt in C) bekomme ich diese Zeichen auf eine
> festzulegende Stelle auf die Anzeige?
> Oder ist das zu einfach, sodass niemand dazu was sagt?
> Ziel soll sein,  Messwerte  evtl. auch Gleitkommazahlen, und auch Text
> (z. B. Fehlermeldungen) auszugeben. (Programmierung mit mspgcc)

Nötige Cursoradresse ausrechnen, diese ans Display weitergeben, und dann 
die Zeichen nachschicken.
Immer wenn du aktualisiert wieder an die richtige Cursoradresse denken.
Sollten die Zahlen mal kürzer und mal länger werden, musst du halt ein 
paar Blanks vorschicken.

Cursor Low: 0x0A
Cursor High:0x0B
Daten:      0x0C
Das sind die Befehle, die jeweils vorgeschickt werden, um den Controller 
vorzuwarenen, welche Art Daten als nächstes kommt. Aber das steht ja 
auch alles im Datenblatt...

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt funktioniert auch bei mir der Textmodus. Es lag an der Einstellung 
der Zeichenfeldgröße. (Angabe für vertikale Ausdehnung fehlte, so dass 
nur eine horizontale Zeile angezeigt wurde)

Noch eine Frage:
Was bedeutet die untenstehende Einstellung? (bitte keine wörtliche 
Übersetzung).

4. Set Number of Time Divisions (Inverse of Display Duty Ratio):
Nx indicates the number of time divisions in multiplex display.
1/Nx is the display duty ratio.
A value of 1 to 128 (decimal) can be set to Nx.

MfG

Autor: Tobias L. (morslucis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist die Zeilenzahl deines Displays. Also nicht Textzeilen, sondern 
Pixelzeilen.
Da lag bei mir auch der Hund begraben, ich hielt das für sowas wie ne 
Kontrasteinstellung...

Autor: Wolfgang-G (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aha, passt gut.
Nun muss ich mal versuchen, wie ich den engl. Text dazu passend 
übersetzen kann.

Autor: Mario G. (rodenberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
lese gerade sehr gespannt diesen Artikel, da ich auch gerade versuche 
das Grafik-Displays von Pollin mit dem KS0108 zum laufen zu kriegen.

Es soll eigentlich erst mal nur ein Test sein ob es auch funktioniert.
Nun habe ich allerding nur einen PIC18F2620 hier und nutze als Datenport 
PortB und für den Rest PortA (RA0-RA5).
Mein Problem ist aber auch, das ich mit Assembler (C18) so gut wie noch 
nichts gemacht habe (Nur Pic 16F in Assembler).

Mein größtes Problem ist aber folgender Fehler.
Beim einschaltet tut sich erst mal nichts.
Der Quarz schwingt auch nicht. Habe in MPLAB schon verschiedenes 
probiert (XT / HS) und auch einfach mal andere Quarze genommen, geht 
nicht.
Dann bin ich mit den Fingern auf die Datenleitungen gekommen und der 
Quarz meldet sich gelegentlich mal und am Display habe ich dann eine 
grobe Anzeige von dem was es anzeigen soll.
Der Quarz schwingt auch ohne das Display nicht(richtig).
Solche Probs hatte ich mit den 16F nicht.

Bin ich hier in eine typische Anfänger/Umsteigerfalle getreten???

Ich hoffe ich habe nichts übersehen (ANALOG/DIGITAL IO) an PortA.
Denn im Code finde ich gar nichts dazu kopfkratz

Vielen Dank für jeden Hinweis!

Gruß Mario

Autor: Mario G. (rodenberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
schade, kann meinen Beitrag nicht löschen.
Das Problem mit dem Quarz ist behoben.
LVP war enable und RB5 offen. Das passiert einem hoffentlich auch nur 
einmal.
Das Display funktioniert dann auch.

Gruß Mario

Autor: Tobias P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte jemand vielleicht den kompletten C Code reinstellen um das Ding 
zum laufen zu kriegen?

Wenn ich den Quellcode von 
http://www.frozeneskimo.com/electronics/2007/03/30... 
nehme compiliert er zwar alles, aber wenn ich dann den ATmega32 
beschreiben will kommt folgende Fehlermeldung:

make.exe: *** No rule to make target `program'.  Stop.


Kann mir da jemand helfen? Wäre sehr nett. Danke schonmal.

Autor: ewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
make install ;)

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

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Habe folgendes Darstellungsproblem auf nem POllin GL16080 (LC7981):
Im GraphicMode läuft alles Top.
Nur Im Textmode ist in Spalte 14 "der Wurm drin".
Habt Ihr das auch?

Danke

Autor: Tobias Toifl (Firma: codes4web) (roverfreak)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hey Leute ich habe ein kleines Problem!

Wenn ich einen Pixel setze, dann setzt das Display (beim Setzen eines
zweiten Pixel) 8px neben das erste auch wieder einen Pixel. Das liefert
mir einen unangenehmen "Schatten ^^" ...

Ich verwende LCD7981_Simple von Benedikt K., trotzdem anbei das
vermutlich verantwortliche C-File!

Danke
Lg
Tobias

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kann mir eventuell einer einen Tipp geben was ich falsch mache?

Wenn ich mein Display anschließe wird es komplett gefüllt und ich 
bekomme keine Zeichen drauf.

Kann mir eventuell auch einer sagen wie ich es richtig anschließen muss?
Was kommt an Pin3 (V0) ich habe diesen Pin mit Pin 18 Verbunden und das 
ding wird schwarz.

Autor: Mario (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann es sein dass einfach dein Kontrast zu hoch ist!?

Autor: Thomas Forster (igel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pin 18?
Meinst du evtl. Pin 17: Negative Voltage out?

An Pin 17 kommt ein Poti. Die andere "Seite" des Potis kommt an Masse. 
Der Mittenabgriff des Potis kommt dann an Pin 3.

Ich habe am Pin 3 eine Spannung von -8,3 V gegen Masse.

Thomas

Autor: Ingo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Hilfe..

Wie schnell sind eure AVR's? Wenn ich das Display mit 8 MHz ansteuer 
(über nen Port Expander (I2C)) wird das Bild nicht wirklich schnell 
aufgebaut.

Oder mach ich was falsch?

Danke & Gruß

Ingo

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ingo schrieb:
> Oder mach ich was falsch?

Ja:
> über nen Port Expander (I2C)

Überleg mal, wie lang dein Expander braucht um auch nur ein Bit wackeln 
zu lassen.

Autor: Riccardo Salzer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute

habe auch ein LC7981 Display mit 240x128 pixel, habe mir schon code 
besorgt
jedoch habe ich ein Problem das das Display nicht richtig auf die 
240x128pixel initialisiert und es Vertikal nur 100 pixel genommen 
werden, danach wird einfach alles wieder geschrieben (siehe Bild)

Leider finde ich bei der initialisierung den fehler nicht, bzw. kann nur 
bei initialisierung liegen oder??

code liegt dabei!

wäre sehr dankbar wenn wer einen tipp hätte für mich!

LG Richi!

Autor: Riccardo Salzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe jetzt den code angesehn


also die initialisierung sieht jetzt so aus

<code>
  LCD_DATA     = 0;
  LCD_CTRL     = 0;
  LCD_CRTL_DDR |= (1 << LCD_RS) | (1 << LCD_RW) | (1 << LCD_EN) | 
(1<<LCD_CS) | (1<<LCD_RESET);
  _delay_us(100);
  LCD_CTRL     |= (1<<LCD_RESET);
  _delay_ms(100);


  lcd_en_passive();
  lcd_rs_data();
  lcd_rw_write();
  LCD_DIR_WRITE();




  lcd_mode = LCD_GRAPHIC_MODE;

    lcd_write_command(0x00,0x32);
    lcd_write_command(0x01,0x07);
    lcd_write_command(0x02,0xF0); // LCD Graph Widht --> 240/8 -1 set 
240!
    lcd_write_command(0x03,0x80); // LCD_GRaph- high --> war 80 set 128!
    lcd_write_command(0x08,0x00);
    lcd_write_command(0x09,0x00);
    lcd_write_command(0x0A,0x00);
    lcd_write_command(0x0B,0x00);


</code>


passt das so??

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hänge mich mal an den Thread an.

Ich habe das Display (Samsung LJ41-00192A_R2 Chassis) an einem 
16MHz-Controller hängen. Ich möchte das Display jetzt auslesen.

Die Prozedur läuft so ab:
1. Cursor an die Leseposition setzen. (Funktioniert auch)
2.
bic.b  #R_W, Control_Port
bis.b  #R_S+Enable, Control_Port
mov.b  #c_rd_data, Data_Out ; Kommando für Lesen schreiben
bic.b  #Enable, Control_Port ; Daten Lesen gesendet

3.
read_data_first_busy_check
call    #check_busy
bit.b   #0x80, R12        ; Busy?
jnz     read_data_first_busy_check

4.
bis.b  #Enable, Control_Port
bic.b  #R_S, Control_Port
bic.b   #Data_Pins, Data_Dir  ; Datenport auf Eingang
bis.b   #R_W, Control_Port
bic.b  #Enable, Control_Port
clr.b   Data_Out
mov.b   Data_In, R12
bic.b   #R_W, Control_Port    ; Display wieder auf Empfang
bis.b   #Data_Pins, Data_Dir  ; Datenport auf senden

Bis 3. funktioniert auch alles brav. Das Busy ist sauber auswertbar. 
Aber bei jedem Lesevorgang (4.) bekomme ich als Antwort nur 0x7f 
angeboten...

Zwischen Display DB0..7 und dem MSP sitzt ein 74HVC245/8, der auch 
korrekt umgeschaltet wird, wenn die R/W-Leitung des Displays auf "lesen" 
geht.

Hatte das schon mal jemand? Wie kritisch reagiert das Display auf 
Timings?

Autor: Roland (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S: Ja, auch bei weiteren Lesevorgängen ohne die Schritte 0..3 kommt 
immer 0x7f zurück...

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.