Forum: Mikrocontroller und Digitale Elektronik xMEGA LCD-Lib funktioniert nicht


von Martin F. (martin_f70)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich htte mir für meine atMEGA's die LCD-Lib die hier auf µC.net zu 
finden ist.
Diese habe ich nun optimiert für xMEGA's.

Anscheinend habe ich jedoch etwas fehlerhaft verarbeitet, denn das 
Display bleibt leer.

Im Anhang ist meine Lib, vielleicht findet ihr einen Fehler.

Danke, Martin

von D. V. (mazze69)


Lesenswert?

Martin Fischer schrieb:
> Ich htte mir für meine atMEGA's die LCD-Lib die hier auf µC.net zu
> finden ist.

Vielleicht hast du das 'a' vergessen.
Kontrolliere noch mal deinen Code.

von Martin F. (martin_f70)


Lesenswert?

'a' ?

von Martin F. (martin_f70)


Lesenswert?

ICh finde den Fehler leider nicht, kannst du mir auf die Sprünge helfen?

von Demian M. (Gast)


Lesenswert?

Ich bin alles nochmals durchgegangen, ich beschäftige mich noch net 
solange mit xMegas's, ich finde einfach nichts.

von Martin F. (martin_f70)


Lesenswert?

Demian M. schrieb:
> Ich bin alles nochmals durchgegangen, ich beschäftige mich noch net
> solange mit xMegas's, ich finde einfach nichts.

Das war vom PC meines Kollegen, das habe ich geschrieben ^^

von Gerhard G. (g_g)


Lesenswert?

Hallo,


So funktioniert es bei mir!

#define LCD_PORT      PORTE
#define LCD_DB        0
#define LCD_RS        4
#define LCD_EN        5


AVRSTUDIO 6 meldet hier:


#define LCD_PORT      PORTE
#define LCD_DB        PIN0_bm
#define LCD_RS        PIN4_bm
#define LCD_EN        PIN5_bm

Warning   left shift count >= width of type [enabled by default]

Gruß G.G.

von Martin F. (martin_f70)


Lesenswert?

Kannst du die Lösung erklären?
Kenne mich mit xMEGA net so aus

von Marcel (Gast)


Lesenswert?

Martin Fischer schrieb:
> Kenne mich mit xMEGA net so aus

Dann solltest du ein Blick ins Datenblatt oder zumindest ein Tutorial 
werfen, sonst wirst du die selben Fehler immer wieder machen.

http://www.stromflo.de/dokuwiki/doku.php?id=xmega-c-tutorial hat die 
Lösung für dein Problem. Das _bm ist dein Stichwort.

von Martin F. (martin_f70)


Lesenswert?

damit spreche ich einzelne bits an?

von spess53 (Gast)


Lesenswert?

Hi

>Dann solltest du ein Blick ins Datenblatt oder zumindest ein Tutorial
>werfen, ...

Datenblatt nutzt nicht viel. Da stehen nur typenbezogene Sachen drin. 
Aber zu jeder ATXMega-Familie gibt es ein Manual das ausführlich auf die 
Hardware eingeht. Z.B. für ATxmegaxyzAn

http://www.atmel.com/Images/doc8077.pdf

MfG Spess

von San L. (zwillingsfreunde)


Lesenswert?

Martin Fischer schrieb:
> damit spreche ich einzelne bits an?

Klick den Link an, dann hättest du die Lösung...

Da steht doch klar und deutlich:

2.1 _bm (Bitmaske)

Mit _bm können einzelne Bits des jeweiligen Registers gesetzt oder 
gelöscht werden. Das folgende Beispiel setzt das CLKSEL1 Bit für den 
Timer um einen Vorteiler von 2 einzustellen.

Link öffnen, Ctrl + F, nach _bm suchen... ne sache von 10 Sek undd ie 
Frage hättest du dir damit gesparrt.

von spess53 (Gast)


Lesenswert?

Hi

>Dann solltest du ein Blick ins Datenblatt oder zumindest ein Tutorial
>werfen, ...

Datenblatt nutzt nicht viel. Da stehen nur typenbezogene Sachen drin. 
Aber zu jeder ATXMega-Familie (A/AU/B/C/D/E) gibt es ein Manual das 
ausführlich auf die Hardware eingeht. Z.B. für ATxmegaxyzAn

http://www.atmel.com/Images/doc8077.pdf

MfG Spess

von Marcel (Gast)


Lesenswert?

Martin Fischer schrieb:
> damit spreche ich einzelne bits an?

Du willst bei deinem momentanten vorgehen einzelne Bits ansrpechen und 
zurechtrücken, aber arbeitest mit Bitmasken.

spess53 schrieb:
> Datenblatt nutzt nicht viel. Da stehen nur typenbezogene Sachen drin.

Dann in die Appnot AVR1000 -
Getting Started Writing C Code for Atmel XMEGA oder wie man das nennt. 
Diese ganzen Dokumente laufen für mich unter dem Begriff Datasheet.

von Martin F. (martin_f70)


Angehängte Dateien:

Lesenswert?

ICh habe jetzt die Lib so wie du gesagt hast editiert, klappt trotzdem 
noch net, hier nochmal der aktuelle code.

von Gerhard G. (g_g)


Lesenswert?

Hallo,

was für ein Display verwendest du genau?
Bist du dir sicher, dass dein Display mit 3,3 Volt funktioniert?
Ich habe deinen Code am PORTE mit einen Logikanalysator getestet.
Die gesendeten Daten sind ordentlich angekommen. Code und Funktionalität 
deines Displays konnte ich natürlich nicht überprüfen.


Gruß G.G.

von Martin F. (martin_f70)


Lesenswert?

Das Display ist korrekt. Hitachi HD78..... ich hatte es bisher immer mit 
5V betrieben, dachte 3 machen es auch...

von Marcel (Gast)


Lesenswert?

Die meisten HD44780 laufen nur mit 5V, aber je nach Hersteller auch 
schon ab 3V. Auch wenn die Logik vom Display mit 3V läuft kann es sein, 
dass deine Kontrastspannung mit 3V zu niedrig ist. Da nochmal extra 
drauf achten.

Ansonsten kann es noch an der Verkabelung liegen.

von Martin F. (martin_f70)


Lesenswert?

Kann ich einfach eine externe 5V Quelle da dranhängen? Wenn ja, wie 
genau?

von Gerhard G. (g_g)


Lesenswert?

Hallo,

keine 5 Volt in Verbindung mit einem ATXMEGA!!

Kannst du  mal die genaue Pin-Belegung Atxmega -> Display aufzeigen
(Datenbus, Steuerung).

Gruß G.G.

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

Das Display bleibt an den 3,3V. Aber du brauchst eine negative 
Hilfsspannung. Am einfachsten zwei 1,5V Batterien in Reihe schalten und 
mit dem positiven Pol an Masse anschließen. Das Kontrastpoti dann statt 
an Masse am negativen Pol der Batterien anschließen.

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Also:

+#######-+########- ---> LCD_PIN3

???

von spess53 (Gast)


Angehängte Dateien:

Lesenswert?

HI

>Also:
>+#######-+########- ---> LCD_PIN3
>???

So wie im Anhang.

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Ich nutze kein Poti^^

von spess53 (Gast)


Lesenswert?

Hi

>Ich nutze kein Poti^^

Warum nicht? Bei den wenigsten Displays ist VEE an GND eine optimale 
Lösung. Und in dem Fall brauchst du eins. Die Spannung zwischen VEE und 
VCC muss auf 4,5...5V eingestellt werden. Oder sagt das Datenblatt 
deines Displays zu

Supply Voltage For LCD

oder so ähnlich etwas anderes?

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Hä? Was genau meinst du?

von spess53 (Gast)


Lesenswert?

Hi

>Hä? Was genau meinst du?

Was genau verstehst du nicht? Hast du schon mal in das Datenblatt deines 
Displays gesehen?

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Jap. Da steht bei PIN3 0....0,5V

von Martin F. (martin_f70)


Lesenswert?

-> Also kann ich direkt 0 anschließen?

von spess53 (Gast)


Lesenswert?

Hi

>-> Also kann ich direkt 0 anschließen?

Nein. Die LCD-Spannung wird zwischen VEE und VCC gemessen. Dann 
entsprechen die 0... 0,5V zwischen GND und VEE 4,5...5V zwischen VEE und 
VCC. Und die 4,5...5V musst du jetzt mit dem Poti erzeugen. 3,3V(VCC)- 
4,5...5V macht -1,2...-1,7 an VEE (gegen Masse). Also kannst du VEE 
nicht an Masse anschließen.

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Ok. Ich teste das mit den BAtterien mal

von Martin F. (martin_f70)


Lesenswert?

Kommen keine 4,5V raus..ist doch aber klar bei 2x1,5V??

EDIT: Am PIN3 kommen jetzt -2,7V an, und es wird etwas angezeigt

: Bearbeitet durch User
von spess53 (Gast)


Lesenswert?

Hi

>... und es wird etwas angezeigt

Was?

MfG Spess

von Martin F. (martin_f70)


Lesenswert?

Na jettz wird text auf dem Display angezeigt, aber es kommen bei 
Kontrast-PIN -2,7V an, egal.
Wie kann ich das ohne Batterien lösen?

von spess53 (Gast)


Lesenswert?

Hi

>aber es kommen bei Kontrast-PIN -2,7V an, egal.

Zum Einstellen der Spannung ist das Poti da.

>Wie kann ich das ohne Batterien lösen?

Z.B. mit einem 7660:

http://www.intersil.com/content/dam/Intersil/documents/icl7/icl7660.pdf

MfG Spess

von spess53 (Gast)


Lesenswert?

Hi

Hier

Beitrag "Re: ICL 7660 Spannungsinverterschaltung"

sind noch ein paar andere Schaltungen.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.