@PicNick:
Ich würde auf jeden Fall mal
"I2c_twi.lib" VOR der
"lcd_i2c.lib" angeben.
"I2c_twi.lib" und "lcd_i2c.lib" vertauschen ist sinnlos, das ist nur eine Anweisung für den Compiler diese einzubinden.
@Bammel:
NeroII hat richtig getippt, der Fehler passiert beim Initialisieren des LCD's, dazu wird ganz zu Anfang, noch bevor eigentlicher Bascom Code ausgeführt wird, die Init LCD Routine unter Verwendung des HW I2C Interfaces aufgerufen.
In diesem Moment ist aber die I2C HW noch nicht konfiguriert, das bedeutet die I2C Hardware des µC läuft mit 1MHz Takt und die internen Pullups sind noch nicht gesetzt.
Du könntest das wie folgt lösen:
- Soft I2C verwenden
- versuchen externe Pullups anzuschließen und hoffen, daß die ersten Takte des I2C Interface mit 1MHz bis zum Config Twi = 400000 korrekt durchlaufen.
- Du kannst die Lib verändern, so daß dieses Problem behoben ist, probier' mal Folgendes:
Such die Stelle in der lcd_i2c Lib:
Code:
[_Init_LCD]
_Init_LCD:
Ersetze sie durch:
Code:
[_Init_LCD]
_Init_LCD:
Ret
_Init_m_LCD:
Der geänderte Bascom Code dafür:
Code:
'Microcontroller
'================
$regfile = "m16def.dat"
$crystal = 16000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
$lib "Lcd_i2c.lib"
$lib "i2c_twi.lib"
Config Twi = 400000
I2cinit
Twcr = &B00000100
Config Lcd = 16 * 2
'I2C Pins
'==========
Config Scl = Portc.0
Config Sda = Portc.1
'I2C LCD-Display
'================
Declare Sub Lcdausgabe
Const Pcf8574_lcd = &H40
Dim _lcd_e As Byte
_lcd_e = 128
!Call _Init_m_LCD
Waitms 200
Cls
Lesezeichen