mikrocontroller.net

Forum: Compiler & IDEs LCD Display an Mega32


Autor: Jürgen Sachs (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

nachdem ich mein Problem mit Port C nun im Griff habe, kommt auch gleich 
das nächste. Das Problem verfolgt mich schon seit Stunden oder besser 
Tagen.

Ich habe an Port C alle 8 Datenbits des LCD, die Steuerleitungen hängen 
an Port D (siehe Header File).

Mein Problem ist nun, das das Auslesen des Busy Bits des LCD nicht 
klappt. Ich lese immer eine "0". Ich hänge in der Busy Loop fest.
Kommentiere ich das "Busy Wait" aus und mache einen entsprechend langen 
Delay, funktioniert alles wie erwartet, nur viel zu langsamm.

Nur komme ich nicht dahinter was ich falsch mache.
Vielleicht kann ja einer nen Blick auf den Code werfen und mir sagen 
woran es liegt ?!

Erwähnen sollte ich noch, das ich mit dem Oszi das gleiche Messe. sobald 
"E" High wird, wird Bit 7 "0" :-( Eventuell ist es ja was im Init.

Es ist ein 2*40 Zeichen Display.

Danke
Juergen

PS: Ich willo den 8 Bit Modus nutzen, da später ein Display ran soll, 
das nur 8 Bit kann....

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Vielleicht kann ja einer nen Blick auf den Code werfen und mir sagen
woran es liegt ?!

Wo ist der Code?

Autor: Jürgen Sachs (jsachs)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hmm,

kann es sein, das wenn man die Beitrags Vorschau betätigt Anhänge 
rausfallen....
Egal, hier kommt der Code...

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So auf den ersten Blick...

etwas was mir auch immer wieder passiert
c = PORTC;
 in
c = PINC;
 ändern.

Werde mal weiterforschen ...

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorschlag zum Testen. Mach ein lcdWaitBusy draus.
uint8_t lcdWaitBusy(void)
{
    uint8_t c;
    uint8_t timeout = 255;
  
    do {
  RS_LOW;
  RW_HIGH;
  E_LOW;    
  // minimum 140ns verzögern (aus Datenblatt des Original 44780), 
        // da sollten die beiden Befehle bei 4MHz reichen
  LCD_DDR = 0x00;
  LCD_PORT = 0xff;  // Pullups an
    
  E_HIGH;
   // jetzt minimum 450ns warten
  lcd_e_delay(); 
  c = PINC & _BV(7);

  E_LOW;
  RW_LOW;
        if(c) lcd_e_delay(); // nach lesen min 400ns warten
    } while(c && --timeout);
    LCD_DDR = 0xFF;   // zurück auf output
    return (c);
}

  

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Upps! in der Vorschau war's anders formatiert :-(

Autor: Jürgen Sachs (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Busy Wait kann ich in meiner App leider nicht nutzen.
Mehr wie "LCD hat Zeit, Ok nextes Zeichen ausgeben, Nein, also weiter im 
Text" kann ich nicht verwenden....

Danke für den Wink mit dem "PINC", das dürfte mein Problem sein !!

So was hatte ich schon vermutet, aber nach einer gewissen Zeit sieht man 
den Wald vor lauter Bäumen nicht mehr.


Grosses DAnke !!

Juergen

Autor: Franz-Rainer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Anbei Code für das Busy-Flag testen

Autor: Jürgen Sachs (jsachs)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Code.
Aber wie gesagt ein Busy Wait kann ich nicht verwenden.
Aber nach Ersetzen des PORTC durch PINC ging alles. Naja bei den Tastern 
usw. überall darauf geachtet, nur hier eben nicht. Manchmal ist man eben 
Betriebsblind :-)

Danke für die Hilfe
Juergen

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.