PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LCD 162 4bit an ATmega 8 / 16



delaware
02.02.2010, 11:51
Moin, habe hier ein LCD162 (Reichelt KS0070 standart) als 4bit angeschlossen.

Trotz diverser Versuche mit fertigen C Programmen schaffe ich es nicht auch nur irgendwas auf dem Display anzuzeigen.
Also es kommt ein Balken wenn ich das Kontrast Poti hochdrehe.
(ist über 10pol Pfostenstecker am STK500 angeschlossen).


Vielleicht kann mir ja jemand eine Projekt Datei für das AVR Studio (am liebsten in C) senden die ich hier in den uPC schreiben kann und ich somit Hardware Fehler ausschließen kann.

Die Dateien von "Peter Zerlauth" hier aus dem Forum melden bei mit Fehler.

Hubert.G
03.02.2010, 11:58
Wie sieht es mit der Lib von Peter Fleury aus?
Schau mal hier im Forum, ich kann sie dir nicht anhängen, da mein Upload-Volumen überschritten ist.
die funktioniert bei mir bestens.
Die Einstellung für KS0073 und mit oder ohne R/W nicht vergessen.

delaware
03.02.2010, 14:16
Die benutze ich hänge ich mal dran. Angeschlossen habe ich das Display (162 Reichelt) an PORTD eines MEGA8 nach folgendem Schema :

Interface using the 4-bit Mode

http://homepage.hispeed.ch/peterfleury/starterkit-lcd-4bit.gif[/url]

Nach dem Übertragen passiert auf dem Display einfach nichts.
Es wird immer wieder jtag erwähnt jedoch habe ich noch nicht gefunden wo ich dies beim AVR Studio aktivieren/deaktivieren kann.

oberallgeier
03.02.2010, 15:41
Hi,

auch bei mir läuft die Fleury-lib bestens. Da muss ich (für mich sagen): never change a running code.


... Es wird immer wieder jtag erwähnt jedoch habe ich noch nicht gefunden wo ich dies beim AVR Studio aktivieren/deaktivieren kann.Ich finde jtag beim AVRStudio auch nicht - wohl deswegen, weil das eine Kommunikationsmöglichkeit mit dem Controller ist *ggg*, durch die z.B beim mega16 vier Pinne des Ports C für "normale" Aufgaben nicht mehr verwendbar sind. Aber JTAG gibt es nicht beim mega8 - da sollte der Code laufen. Beim mega16 werden die JTAG-Aktivitäten der Pinne PC2 bis PC5 durch das JTAG-enable-Fuse ein- oder ausgeschaltet, sprich: wenn Du beim mega16 diese Pinne für Dein LC D benutzt, musst Du JTAG disabeln.

delaware
03.02.2010, 15:43
Also irgendwie sind da keine Anhänge hängen geblieben also hier noch mal.

delaware
03.02.2010, 15:46
Moin, bei DIR läuft der code - schön bei mir nicht. Benutzt Du das AVR Studio ?? welches Display ??
Wenn Du das AVR Studio benutzt kannst Du mir ja vielleicht mal einen Projekt Ordner senden . Wäre nett.

JTAG !!! wo disabel ich den denn ?.

Hubert.G
03.02.2010, 15:52
Mal abgesehen das du in der lcd.h den KS0073 Kontroller definieren solltest, funktioniert diese Lib ausgezeichnet.
Eventuell auch noch auf die Quarzfrequenz achten.
JTAG wird wie "oberallgeier" schon erwähnt hat, in den Fuses abgeschaltet.

delaware
03.02.2010, 16:04
Das 162 LCD von Reichelt ist laut Datenblatt ein KS0070

http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDEX=0;FILENAME=A500%252FL CD162C%2523DIS.pdf;SID=29RUe@rawQAR0AADUacz06d5883 1d9ddcc9eecb774623acb48e87

Jaecko
03.02.2010, 16:08
Ob KS0070 oder ...73 ist egal.
Hauptsache der Unterschied zwischen KS007x und HD44780 wird der Lib mitgeteilt.

delaware
03.02.2010, 16:22
Na das werde ich morgen versuchen.

In der lcd.h steht :

#define LCD_CONTROLLER_KS0073 0 /**< Use 0 for HD44780 controller, 1 for KS0073 controller */

Und da laut Reichelt (siehe Anlage) mein Display ein HD44780 ist, habe ich die 0 eingetragen.

oberallgeier
03.02.2010, 16:23
Hier gibts einen Fuserechner. (http://www.engbedded.com/fusecalc/) Der hilft Dir, die passenden Fuses zu finden. EINE MÖGLICHKEIT (es gibt sicher mehrere) wäre es, beim m16 alles Häkchen außer dem SPIEN wegzumachen . . . .

Jaecko
03.02.2010, 16:40
Und da laut Reichelt (siehe Anlage) mein Display ein HD44780 ist,

Falsch! Der Controller ist KEIN HD44780.
Es ist nur Kompatibel zum HD44780. Der Controller ist ein KS007x.
(Steht doch auch so in der Beschreibung drin)

Sobald die LCDs einmal initialisiert sind, können beide die gleichen Befehle verwenden (= Kompatibel). Das Problem ist aber eben die Initialisierung, da der KS007x noch etwas mehr haben will als der HD44780. Und dieses etwas mehr lässt sich mit der 1 statt 0 in der .h-Datei einschalten.

delaware
04.02.2010, 05:39
Auch mit der 1 für den LCD_CONTROLLER_KS0073 zeigt sich nichts :-?

delaware
04.02.2010, 06:35
Wenn ich den Kontrast auf Maximum stelle, ist auch nur die erste (obere) Zeile schwarz - liegt wahrscheinlich daran das das LCD erst initialisiert werden muß damit es weiß das es zwei Zeilen hat ?!?

Zum Verständnis ich schiebe die lch.h in die Header Files, die lcd.c und die testlcd.c in die Source Files und die testlcd.c (alles von Fleury) und Compaliere. (mit AVR GCC und AVRStudio 4).

Das HEX File ist auch nur 3kB groß -

Fluxcompensator habe ich nicht aktivert !

oberallgeier
04.02.2010, 08:22
... Zum Verständnis ich schiebe die lch.h in die Header Files, die lcd.c und die testlcd.c in die Source Files und die testlcd.c (alles von Fleury) und Compaliere. (mit AVR GCC und AVRStudio 4) ...Du heiliger Programmirius - ich versteh da nix vor lauter Schieberei. Sorry, diese Beschreibung ist für mich total unverständlich.


... Vielleicht kann mir ja jemand eine Projekt Datei für das AVR Studio (am liebsten in C) senden die ich hier in den uPC schreiben kann und ich somit Hardware Fehler ausschließen kann ...AVRStudio ist für die Software zuständig. Mit einer reinkopierten Projektdatei kannst Du keine Hardwarefehler ausschliessen.

Wenn ich ein neues Projekt eröffne, klicke ich im AVRStudio auf [Projekt] - [New Projekt] - im neuen Fenster dann z.B. [AVR GCC], trage in [Projekt name] den Namen ein, z.B. LCD_01 und wähle in [Location] die directory aus, in dem die Subdirectory mit dem Projekt stehen soll. Mit [next] kann ich noch das Target auswählen, den Controller, für den compiliert werden soll. Sinn macht es auch in [Project] unter [Configruation Options] den Prozessortakt einzutragen, der wird dann im Quellcode normalerweise nicht mehr erwähnt. AVRStudio erstellt jetzt einen File LCD_01.c - das nutze ich normalerweise als main, evtl. noch für "Sonstiges" - z.B. Versionsprotokoll etc..

DANN werden alle erforderlichen Dateien in die jetzt neu erstellte Subdirectory reinkopiert. Und den Rest macht AVRStudio sozusagen "von selbst" - bis auf korrektes Programmieren, das muss man halt noch selber tun. BTW, kann es sein, dass Du vor lauter Hin- und Herschieben und reinkopieren unterlassen hast, Deine Bibliotheken im main zu includen? Beispiel:
#include "lcd_2x24.h" // Fleurys LCD-Library, adaptiert für 2x24
#include "lcd_2x24.c" //

So. Zum Anhang
LCD_TEST1.rar, Beschreibung: meine Dateien von Peter Fleury hoffentlich pasend angepasst !?!Nein, sind sie nicht.

1. steht da

#define LCD_CONTROLLER_KS0073 0 /**< Use 0 for HD44780 controller, 1 for KS0073 controller */da muss ne 1 hin, ist hier auch schon deutlich gesagt worden.
2. steht da

#define LCD_LINE_LENGTH 0x40 /**< */Hast Du wirklich ein Display mit 40 Zeichen Zeilenlänge? Schau doch mal in die Unterlagen von DEINEM Display *ggg*. 162 !
3. steht da

#define LCD_PORT PORTD /**< port for the LCD lines */... und in Deinem Schaltplan hast Du das Display komplett am Port A angeschlossen. Was ist nun richtig? Abgesehen davon, dass Du Dir garnicht die Mühe gemacht hattest einen Schaltplan zu zeichnen, sondern für Deine Mega8/16 (das sind zwei total unterschiedliche Pinouts!!) uns den Schaltplan für einen völlig anderen Controller von irgendwoher reinkopiert hast. Wenn Du schon fertige Bibliotheken verwendest, solltest Du auch die darin stehenden Verwendungshinweise lesen. Fleurys Bibliothek ist SEHR präzise aufgebaut und beschrieben, da steht z.B.

* Change LCD_PORT if you want to use a different port for the LCD pins.

... Fluxcompensator habe ich nicht aktivert ...Das merkt man - bei 14 Postings geht da nix flux. Übrigens nach Deinem Schaltplan fehlen auch so elementare Dinge wie z.B. Abblockkondensatoren am Controller. Und warum merkt man dass ich ziemlich unwirsch bin? Wenn Du uns nirgendwo genau erzählst was Du machst, stochern wir dauernd im Nebel Deiner Beschreibungen und können Dir nicht wirklich präzise helfen.

delaware
04.02.2010, 12:38
Moin, ich habe das Display jetzt an eine extra Platine mit einem Mega 8 angeschlossen (mit 8Mhz Quarz) und jetzt habe ich Buchstaben.