-
-
LCD über I²C an ATmega 32: Dringend Hilfe benötigt!!!
Hi. Ich versuche ein 16*2 LC Display über den I²C Anschluss meines RN-controls zu betreiben. Der Aufbau erfolgt gemäß AN_118 von der MCS electronics Seite mit dem Porterweiterungsbaustein PCF8574P.Die Library ist auch in Bascom eingefügt. Zunächst einmal habe ich versucht das demoprogramm auf von der Seite ablaufen zu lassen. Leider tut sich nix. Das einzige was auf dem Display zu sehen ist, dass zuerst die erste und die Hälfte der zweiten Zeile dunkel werden und danach der Cursor (scheinbar) wahrlos auf dem Dislpay herumspringt.
Ich habe die Schaltung schon mehrmals neu aufgebaut um eventuelle Fehler auszuschließen.Sogar einmal auf dem Steckbrett. Schaltung über ein anderes Controllerboard betrieben. Display ist auch nicht defekt, da es funktioniert, wenn ich es normal mit 6 Leitungen vom Controller betreibe.
Ich werde wahnsinnig
Brauche dringend Hilfe
-
Erfahrener Benutzer
Robotik Einstein
Ich gehe mal davon aus das du das Display vorher mal "normal" angeschlossen hast und es in Ordnung ist.
Dann bleiben eigentlich nur zwei Möglichkeiten.
Entweder Verdrahtungsfehler, Nicht abgeschlossener I2C Bus oder Software wie zb. fehlende Initialisierung bzw. zuwenig speicher für Umgebung.
An der Lib liegt es jedenfalls nicht, die Nutze ich seit einigen jahren.
Überprüf nochmal in Ruhe alles.
-
verdrahtungsfehler ist auszuschließen, da ich die schlatung sehr oft^^über prüft und sogar komlett neu aufgebaut habe.
aber ich glaube mit deinem tipp komme ich der lösung schon etwas näher.
was bedeutet fehlende initialisierung? ich dachte die wird sozusagen automatisch vorgenommen wenn ich die .lib verwende?
was könnte ich an einem gegebenen speicherproblem machen?
lg vielen dank
-
Erfahrener Benutzer
Robotik Visionär
Es gibt normalerweise gibt es einen oder mehrere Befehle, mit dem man das LCD initialisiert. Was das für ein Befehl ist müsstest du in der Dokumentation nachlesen.
-
laut Autor der lcd_i2c.lib genügt es folgendes zusäzlich am angang eines programmes zu schreiben:
$lib "Lcd_i2c.lib"
Const Pcf8574_lcd = &H40
Config Scl = Portd.6
Config Sda = Portd.7
Dim _lcd_e As Byte
_lcd_e = 128
ist natürlich angepasst auf atmega32.
das display zeigt nichts (bzw. nichts sinnvolles^^)
-
Erfahrener Benutzer
Robotik Einstein
Da fehlt noch was
Config I2cdelay = 9
...um den bustakt anzupassen
(Wert anpassen)
Config Lcd = 20 * 4
...um anzugeben welches Display man hat.
(Wer anpassen)
Dann noch CLS zum Initialisieren.
Danach kannst du deine ausgaben starten
-
so hab ich hinzugefügt.ich hab i2cdelay variiert. --lcd funkioniert immer noch nicht
ich schreib mal meinen Bascom code. vielleicht findet jemand den fehler:
$regfile = "m32def.dat"
$hwstack = 32
$framesize = 32
$swstack = 32
$crystal = 16000000
$baud = 9600
$lib "lcd_i2c.lib"
Config I2cdelay = 4
Const Pcf8574_lcd = &H40
Config Scl = Portc.0
Config Sda = Portc.1
Enable Interrupts
Dim _lcd_e As Byte
_lcd_e = 128
Config Lcd = 16 * 2
Waitms 700
Cls
Locate 1 , 1
Lcd "Hello world."
ich verwende übrigens ein Display von Conrad mit einem KS0066 Controller. liebe grüße
-
Erfahrener Benutzer
Robotik Einstein
Hmmm...seltsam.
ab und an gibt es LCDs die etwas länger für den Init brauchen.
Füge hinterm CLS noch ein Waitms 300 ein und schau obs klappt
Den i2cdelay sehe ich jetzt nicht aber ich denke den hast du schon drinne ja ?
einfach mal auf 15 (Je höher desto langsamer) stellen um sicher zu gehen.
Config Lcd mit drinn ?
Edit:
Hab grad erst gelesen welchen Controller dein display hat.
Bascom sollte mit dem klar kommen.
Ich hatte oben mal gefragt ob du das LCD "normal" getestet hast.
Hast du ?
-
klappt leider immer noch nicht.i2c delay ist auch mit drin.config lcd auch.
ich hab auch schon gedacht das vielleicht das display oder der controller davon kaputt ist, da hab ichs "normal" gestestet; also normal 4 bit ansteuerung mit insgesamt 6 portleitungen. hat einwandfrei geklappt. ich versteh es mittlerweile auch nicht mehr.
-
Erfahrener Benutzer
Robotik Einstein
Wenn es "Normal" geht dann liegt es nicht am Display.
Bleiben also nur software oder ein Verdrahtungsfehler.
die Pullups am I2C sind drann ja ?
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen