Wir (Kollege und Ich) haben ein Messgerät erstellt. Zuvor haben wir die Anzeige herkömmlich angesteuert. Um Ports einzusparen sind/wollen wir die Ansteuerung des Displays über den I2C Bus ausführen. Im Netz haben wir einige Beispiele hierzu gefunden. Leider bekommen wir unser Programm bzw. das Display nicht zum laufen. Sobald wir einer der folgenden Libraries im Programm Ablauf einfügen (haben wir natürlich in den LIB-Ordner kopiert) hängt das Programm $lib "Lcd_i2c.lib" $lib "YLcd_i2c.lib" $lib "YwRobot_Lcd_i2c.lib" Egal bei welcher. Sobald wir den Aufruf in Hochkomma setzten oder entfernen läuft das Programm wieder. LEDs leuchten und Relais ziehen an. Egal in welcher Zeile wir eines der o.g. "Lib-Aufrufe" einfügen startet das Programm nicht (ohne Fehlermeldung). Wenn wir z.B. eine andere Librarie (keine LCD) einfügen läuft das Programm ohne Probleme. Anbei ein einfaches Programm wobei die Platine bzw. das Programm schon hängt sobalt die Libray aus dem Hochkomma genommen wird. Für die Display Adressen haben wir ebenfalls schon andere Werte eingesetzt ohne Erfolg Wir hoffen Jemand kann uns helfen bzw. hat eine Idee woran es hier ggfs. hängt. Vielen Dank im voraus. $regfile = "m324pdef.dat" $crystal = 16000000 '$lib "Lcd_i2c.lib" '$lib "YLcd_i2c.lib" '$lib "YwRobot_Lcd_i2c.lib" $hwstack = 150 $swstack = 150 $framesize = 150 '******************* Deklarationen ************************ Const Pcf8574_lcd = 78 'Adresse des I2C-LCDs Dim Lcd_backlight As Byte '1 = an; 0 = aus. Wird erst durch einen LCD-Befehl umgesetzt! '****************** Initialisierung *********************** Ddrb = &B11111111 'Standardbelegung der DDRs Ddra = &B11111111 'NEU HINZUGEFÜGT Standardbelegung der DDRs Ddrc = &B11111111 'NEU HINZUGEFÜGT Standardbelegung der DDRs Ddrd = &B11110000 'PortA-Deffinition 1 = Ausgang / 0 = Eingang Portd = &B10001111 Porta.7 = 1 'NEU HINZUGEFÜGT, Schaltet die Betriebsspg. 5V auf das LCD und das I2C Modul Wait 1 Config Scl = Portc.0 'Konfigurieren von I2C Config Sda = Portc.1 Config Lcd = 16 * 2 Config I2cdelay = 1 Dim _lcd_e As Byte _lcd_e = 128 'LCD im 4-Bit Mode betreiben 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init: Waitms 300 Waitms 300 'warte bis Kondensator bei Ta0 geladen, auch für LCD-Init: '********************************************************** '******************** Hauptprogramm *********************** Cls Locate 1 , 1 Lcd "Hello world!" Wait 10 Do Portd.7 = 1 'Led1_higher' (Pin 21 / d7) Led 1 Relais 1 Waitms 1000 ' Portc.2 = 1 'Led2_high' (Pin 24 / c2) Led 2 Relais 2 ' Waitms 1000 ' Portb.0 = 1 'Led3_low' (Pin 01 / b0) Led 3 Relais 3 ' Waitms 1000 ' Portb.1 = 1 'Led4_lower' (Pin 02 / b1) Led 4 Relais 4 ' Waitms 1000 ' Portc.4 = 1 'Led5_betrieb' (Pin 26 / c4) Led 5 Betrieb ' Waitms 1000 ' Portc.3 = 1 'Led_ssm' (Pin 25 / c3) Led 6 SSM ' Waitms 1000 Wait 2 Loop End
Ich kenne mich zwar nicht mit Bascom aus, aber muss man nicht irgendwo ein LCD-Init machen? Sind an den I2C Leitungen Pull-Ups?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.