www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD und attiny2313.seltsam


Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi@all


Ich habe das Wintek lcd(4*27) von Pollin über den 4 bit bus an den portd 
meines Attiny2313 angeschlossen. R/W ist dauerhaft auf low, weil ich das 
busyflag nicht auslesen will. Wenn ich jetzt den beiden strom gebe, 
initialisiert sich das Display anschienend nicht. Kann evtl. jemand von 
euch mal nachsehen, was an dem code nicht stimmt? Ich könnte mir 
vorstellen, das es an der Übertragung der Daten ab der Umschaltung in 
den 4bit mode liegt(das teste ich jetzt noch)oder aber an den timings.
GEstern hatte ich auf jeden Fall schonmal "Hello world" g. Jetzt sind 
es nur zwei Balken(Display bekommt Strom, initialisiert aber nicht..)



Danke
mit freundlichen Grüßen
Daniel

edit: initialisierung von: www.sprut.de/electronic/lcd/index.htm

Autor: Daniel Bauer (und3rt4ker)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier der code

Autor: Hannes Lux (hannes)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Daniel ***** wrote:
> hier der code

Hmmm...

Versuche mal den Code im Anhang zu verstehen und baue, falls 
erforderlich, das Busywait aus (durch Warteschleife ersetzen). Der Code 
werkelt seit April 2005 zuverlässig vor sich hin. Die Warteschleife 
wurde mal halbherzig geändert, da stimmen Labels und Kommentare nicht 
mehr überein.

Das im Anhang ist aber nur die LCD-Routinensammlung. Wie diese in ein 
Programm eingebunden werden kann, siehst Du z.B. hier:
Beitrag "Re: MENÜ-STEUERUNG"

Viel Erfolg...

...

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Hannes, jetzt weiß ich auch mal, das man das busyflag auch 
nibble-weise abfragen muss g.
Ich habe ein bischen am Timing rumgespielt, die initialisierung etwas 
umgeschrieben und schon gehts!

MfG Daniel

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAllo nochmal.

Um in die zweite Zeile zu kommen muss man doch 0b11000000 als Befehl 
ausgeben oder?
Bei mir funktioniert das nicht.


MfG
Daniel

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An_der_Theke_r wrote:
> HAllo nochmal.
>
> Um in die zweite Zeile zu kommen muss man doch 0b11000000 als Befehl
> ausgeben oder?

Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro 
"locate" ausgewählt werden. Dieses Macro wählt den zuständigen 
Controller aus und setzt die (der gewünschten Schreibposition) 
entsprechende DD-RAM-Adresse im LCD.

Die Befehle (zum LCD) dazu habe ich jetzt nicht im Kopf, um die hatte 
ich mich gekümmert, als ich vor Jahren die Routinen schrieb.

Bei neueren Projekten nutze ich übrigens eine andere Routine, da wird im 
SRAM des AVR ein Bildschirmspeicher verwaltet, der im Hintergrund an das 
LCD gesendet wird. Leider habe ich für das 4x27-LCD momentan keine 
"aufgeräumte" Routinensammlung parat, die letzten Projekte waren mit 
8x24-LCD.

> Bei mir funktioniert das nicht.
>
>
> MfG
> Daniel

;-)

...

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro
"locate" ausgewählt werden."

----ich glaube, es ist nicht ganz klar geworden, das _mein code jetzt 
geht. Deswegen frage ich mich, wie man mit dem Befehl, um den pointer im 
DD-Ram zu setzen, die zweite zeile erreicht, weil es mit dem befehl oben 
scheinbar nicht geht.
Sorry wegen dem Missverständniss

MFG
UNDERTHEKER*g*

Autor: interessent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Set DDRAM adress: 0b001A6A5A4A3A2A1A0

Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich 
weiss bei bzw. mit 40 an.

Autor: Daniel Bauer (und3rt4ker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
interessent wrote:
> Set DDRAM adress: 0b001A6A5A4A3A2A1A0
>
> Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich
> weiss bei bzw. mit 40 an.

a6-a0=7bit
+001
---------
10bit

Da kann doch was nicht stimmen...

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel ***** wrote:
> "Um in irgendeine der 4 Zeilen zu kommen, muss diese mit dem Macro
> "locate" ausgewählt werden."
>
> ----ich glaube, es ist nicht ganz klar geworden, das _mein code jetzt
> geht.

Nunja, ich ging davon aus, dass Du Dich von Deinem Code getrennt hast. 
Beim kurzun Überfliegen Deines Codes sah ich, dass Du sehr umständlich 
arbeitest, also Vieles separat erledigst, was zusammengefasst werden 
kann. Mein Code dagegen kümmert sich per Locate selbstständig um die 
Controllerwahl, denn die beiden Controller werden nicht (wie bei Dir) in 
getrennten Routinen behandelt, sondern in gemeinsamen Routinen und 
werden durch Variable (durch Locate voreingestellt) unterschieden.

> Deswegen frage ich mich, wie man mit dem Befehl, um den pointer im
> DD-Ram zu setzen, die zweite zeile erreicht, weil es mit dem befehl oben
> scheinbar nicht geht.

Die Ausgabeposition wird durch Senden von 0b1xxxxxxx über LCD_Command 
gesetzt (Set DD-RAM-Address), wobei "x" für die Adresse steht. Die erste 
Zeile beginnt an Adresse 0, die zweite an Adresse 64. Das Senden von $C0 
(0b11000000) ist also richtig. Aber vielleicht haperts ja noch irgendwo 
am Timing oder ganz woanders. Ich habe mir Dein Programm nicht bis ins 
letzte Detail angesehen, es ist mir einfach zu benutzerunfreundlich 
(Sorry).

> Sorry wegen dem Missverständniss
>
> MFG
> UNDERTHEKER*g*

Un(ter) der Theke?? - Ich dachte "An der Theke (stehende)r"?
Schlimmes Deutsch.
Na egal, dann eben Der, der die letzte Ruhestätte gräbt... g

Gruß,
Hannes

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel ***** wrote:
> interessent wrote:
>> Set DDRAM adress: 0b001A6A5A4A3A2A1A0
>>
>> Wobei A6 bis A0 die Adresse darstellen. Zweite Zeile fängt soweit ich
>> weiss bei bzw. mit 40 an.
>
> a6-a0=7bit
> +001
> ---------
> 10bit
>
> Da kann doch was nicht stimmen...

Nunja, der Interessent hat RS und R/W aus der Tabelle im Datenblatt mal 
schnell mit zu den Datenbits gezählt. ;-)

...

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.