Grüß dich Painfabric,
erst einmal: Willkommen im Forum.
Hier hast du aber ein blödes Problem losgetreten.
Du schreibst:Bezieht sich die Angabe, dass "Balken erscheinen" auf diesen Test ohne PCF8574P?Die Hardware scheint ok, habe alles durchgemessen und das Display ohne PCF8574P direkt am AVR getestet.
Beim anlegen der Spannung am Steckboard erscheinen Balken am Display.
Wenn ja, ist das ja noch nicht getestet. Hattest du bei diesem Test schon einmal Text ausgeben können?
Zu den "Balken" noch ein Wort. (Nicht schimpfen, wenn du das kennst. Aber ich weiss ja nicht was du schon alles weisst.)
Normalerweise soll man die einzelnen 'Kästen' für die Buchstaben nicht sehen. Also sollen die 'Kästen' auch nicht als Balken sichtbar sein.
Wenn das aber doch so ist, dann ist meistens eine falsche Kontrasteinstellung am Display daran Schuld und erzeugt nur "Schwarzen Text auf schwarzem Grund". Klar, das kann man auch nicht lesen .
Hast du mal an den Potis der Anzeigeplatine geregelt?
Hier bei Pollin ist der Schaltplan http://www.pollin.de/shop/downloads/D810145B.PDF zu finden und dort sind die beiden Potis RT1 und RT2 ja für Kontrast und Beleuchtung zuständig.
Und dann ist da noch deine Angabe zur Kontrollergeschwindigkeit.
Du schreibst, dass du den AT-Mega mit 1000000 HZ betreibst.
In deiner main() hast du mit
#ifndef F_CPU
#define F_CPU 1000000
#endif
einen Wert gesetzt.
Bist du sicher, dass keine Angabe zur Frequenz im Makefile ist?
Nutze doch mal nur
#define F_CPU 1000000
ohne das #ifndef darum.
Dann gibt es in der Datei i2clcd.h noch:
#define LCD_I2C_DEVICE 0x40
Hast du die Jumper am Display auf 64 eingestellt? (64 Dezimal = 40 Hexadezimal)
Und zum Schluss sind noch folgende Einstellungen zu prüfen:
#define LCD_D4_PIN 0
...
#define LCD_E_PIN 7
Dazu benötigt man aber noch die Doku zum Display um zu sehen, ob Pollin das Display auch so am PCF8574P angeschlossen hat. Ansonsten müssen auch diese Defines angepasst werden.
Dann gibt es in deiner Datei main.c noch ein Problem:
while (true){} //- Endless loop
Das ist KEINE Endless loop.
Richtig ist:
while (true) //- Endless loop
;
Viel Erfolg
Gruß Sternthaler
Lesezeichen