- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Probleme mit I2C Display

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.09.2012
    Beiträge
    9

    Frage Probleme mit I2C Display

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo liebes Forum,

    als Anfänger und nach langem Suchen hier im Forum habe ich mich entschieden euch um Hilfe zu fragen.

    Hier mein aufbau:

    Controller: ATMEGA16 (1000000 HZ)
    I²C Chip: PCF8574P (LCD-I2C Modul von Pollin BestNR: 810 145 mit entsprechendem HD44780 kompatiblen Display)

    Code:


    i2clcd.h
    i2cmaster.h
    main.c
    twimaster.c



    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.


    Und hier mein Problem:

    keine Befehle scheinen zu funktionieren.
    Weder Initialisierung, Lcd_Enable oder ein String ausgeben.

    Ich weis einfach nicht wo ich noch schauen soll.

    Im Voraus schonmal danke für die Hilfe !
    Angehängte Dateien Angehängte Dateien
    • Dateityp: c i.c (6,8 KB, 84x aufgerufen)
    Geändert von Painfabric (17.09.2012 um 18:06 Uhr) Grund: falsche Datei im Anhang

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Grüß dich Painfabric,

    erst einmal: Willkommen im Forum.

    Hier hast du aber ein blödes Problem losgetreten.

    Du schreibst:
    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.
    Bezieht sich die Angabe, dass "Balken erscheinen" auf diesen Test ohne PCF8574P?
    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
    Geändert von Sternthaler (17.09.2012 um 22:18 Uhr) Grund: Weiteres Problem gefunden
    Lieber Asuro programieren als arbeiten gehen.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.09.2012
    Beiträge
    9
    Hallo und danke für die Antwort !

    Bezieht sich die Angabe, dass "Balken erscheinen" auf diesen Test ohne PCF8574P?
    Wenn ja, ist das ja noch nicht getestet. Hattest du bei diesem Test schon einmal Text ausgeben können?
    Ich habe das Display an meiner anderen ATMEGA16 Schaltung ohne PCF8574P getestet.
    Text wurde einwandfrei im 4 Bit Modus angezeigt

    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.
    Hab ich bereits gemacht, wollte mit Balken nur sagen das das Display auf Spannung reagiert.

    Nutze doch mal nur
    #define F_CPU 1000000
    ohne das #ifndef darum.
    Danke, wurde geändert.

    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)
    Jumper sind wie im Datenblatt angegeben auf 64 eingestellt

    Und zum Schluss sind noch folgende Einstellungen zu prüfen:
    #define LCD_D4_PIN 0
    ...
    #define LCD_E_PIN 7
    Pins habe ich auch mit Datenblatt überprüft, keine Fehler gefunden

    ann gibt es in deiner Datei main.c noch ein Problem:
    while (true){} //- Endless loop
    Das ist KEINE Endless loop.
    UPS... wurde sofort durch "while(1){}", ich schieb das mal auf nen Autofiller



    und nun zum Ergebniss:

    nix

    hast du / habt ihr noch ne Idee ?


    mit leider keinem Erfolg

    Gruß Painfabric
    Geändert von Painfabric (18.09.2012 um 02:36 Uhr) Grund: Rechtschreibfehler

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    29.05.2005
    Beiträge
    1.018
    Grüß dich Painfabric,

    ich habe mir jetzt mal die Datenblätter der beiden im Bausatz angegeben LCDs angesehen.

    - 120420 (2x7polig und 2x1polig,X2 und BLA, BLK)
    http://www.pollin.de/shop/downloads/D120420D.PDF
    - 120421 (1x16 polig, X1)
    http://www.pollin.de/shop/downloads/D120421D.PDF

    In Beiden ist die Funktion der Pins identisch. (Also kein Unterschied beim Programmieren.)

    Ich bin mir relativ sicher, dass doch ein Problem über die Defines aus deiner angegeben i2clcd.h kommt.
    Im Schaltplan sind verbunden:

    CPU - LCD
    P0 -> Pin 11(D4) -> OK; #define LCD_D4_PIN 0
    P1 -> Pin 12(D5) -> OK; #define LCD_D4_PIN 1
    P2 -> Pin 13(D6) -> OK; #define LCD_D4_PIN 2
    P3 -> Pin 14(D7) -> OK; #define LCD_D4_PIN 3
    P4 -> Pin 4(RS) -> OK; #define LCD_RS_PIN 4
    P5 -> Pin 5(R/W) -> OK; #define LCD_RW_PIN 5
    P6 -> Pin 6(E) ===> PROBLEM; #define LCD_EMPTY_PIN 6
    P7 -> Pin 15(A) (LED über Transistor) ===> PROBLEM; #define LCD_E_PIN 7

    In der Pollin-Schaltung ist meiner Meinung nach die Pin 6(E)-Leitung NICHT über Port LCD_E_PIN (also 7) erreichbar.

    Du solltest mal die Portnummern hinter den Defines so anpassen:
    #define LCD_EMPTY_PIN 7
    #define LCD_E_PIN 6

    Gruß Sternthaler


    P.S.: Der Port-Pin 7 in der Pollin-Schaltung, über den Transistor am LCD angeschlosen, deutet darauf hin, dass mit dem Port-Pin das LCD an- bzw. ausgeschaltet werden kann.
    Da der Define den Namen LCD_EMPTY_PIN hat, glaube ich nicht, dass mit dem Code die LCD-Beleuchtung gesteuert werden kann.
    Deshalb solltest du diesen Pin immer mit '1' ansteuern, oder eine eigene Funktion dafür machen.

    P.P.S.: Hier noch die Stellen die diesen E-Pin-Define nutzen:
    Aus i2clcd.h:
    #define LCD_E (1 << LCD_E_PIN) /**< E-bit in 1st and 2nd higher nibble */

    Aus i.c:
    void lcd_write(unsigned char value)
    {
    lcd_write_i2c(value | LCD_E); //- Set enable to high
    lcd_write_i2c(value | LCD_E); //- Send data, keep enable high
    lcd_write_i2c(value & (!LCD_E)); //- Set enable to low
    }
    Geändert von Sternthaler (24.09.2012 um 21:27 Uhr) Grund: Codestelle in i.c die den E-Define nutzt
    Lieber Asuro programieren als arbeiten gehen.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.09.2012
    Beiträge
    9
    #define LCD_EMPTY_PIN 7
    #define LCD_E_PIN 6
    das wars

    Vielen Dank für die Hilfe !

    Ab jetzt kommt die Erfahrung durch Anwenden


    Liebe Grüße

    Painfabric
    c:\>If you're happy and you know it, Syntax Error !
    Syntax error

Ähnliche Themen

  1. Display 16*1 probleme
    Von Carlos31 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 15.11.2009, 20:47
  2. Probleme mit 4*20 LCD Display
    Von LDMaster im Forum AVR Hardwarethemen
    Antworten: 12
    Letzter Beitrag: 14.09.2009, 18:12
  3. Display Probleme
    Von patti16 im Forum AVR Hardwarethemen
    Antworten: 6
    Letzter Beitrag: 11.09.2007, 20:48
  4. display probleme!!!
    Von Robotz im Forum Mechanik
    Antworten: 0
    Letzter Beitrag: 07.03.2007, 14:43
  5. Display Probleme
    Von skywalker1979 im Forum PIC Controller
    Antworten: 10
    Letzter Beitrag: 15.02.2007, 11:37

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen