-
Hallo Robert,
Toll! hab deinen Code gleich ausprobiert.
Bascom mault aber in der Zeile:
Code:
*BASIC: i2cwbyte _temp1 ; val register 2
Invalid datatype[[0011]0], inFile blablabla
Variable not dimensioned [0->], in File
Wenn ich die Zeile auskommentiere werden keine Fehler mehr angezeigt.
Der Datentyp von _temp1 stimmt doch????
-
Selber schuld!
Kommentare in Basiczeilen natürlich mit ' und nicht mit ;
Läuft aber immer noch nicht. Bin am testen...
-
Entschuldige, das mit dem Semikolon war wohl ich
Wenn's möglich ist, wär natürlich ein Test nur der I2c-übermittlung alleine hilfreich. Denn ob das LCD was zeigt, kann verschiedene Ursachen haben.
Mach ein einfaches Bascom testprogramm
Code:
DIM toggle AS BYTE
i2cstart
i2cwbyte pcf8574_LCD
i2cwbyte &H06 ;command (write register 6)
i2cwbyte &H00 ; val register 6 00 -> all Output
i2cwbyte &HE8 ; val register 7 E8 -> 0, 1, 2 Output 3,4,5,6,7 input
i2cstop
;------------------------------------------------------------------------
DO
i2cstart
i2cwbyte pcf8574_LCD
i2cwbyte &H02
i2cwbyte toggle
i2cstop
toggle = toggle XOR &HFF
Waitms 1000
LOOP
Jetzt sollten alle P0.0 - P0.7 im Sekundentakt zwischen 0 u. 5V hin un herpendeln. Das kann man auch mit Digtal-Multimeter messen
Geschieht das nicht, haben wir einen anderen Hund drinnen
-
Hallo Robert,
ganz so einfach ists nicht.
Die Initialisierung des PCA passt.
Aber dann muß das Display initialisiert werden.
Damit das Display überhaupt Daten annimmt muß der Anschluß Enable ein und ausgeschaltet werden
Laut Datasheet vom Display:
Code:
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H03
I2cwbyte &H01
I2cstop
Waitms 2
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H02
I2cwbyte &H3C
I2cwbyte &H00
I2cstop
Waitms 2
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H03
I2cwbyte &H01
I2cstop
Waitms 2
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H02
I2cwbyte &H0F
I2cwbyte &H00
I2cstop
Waitms 2
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H03
I2cwbyte &H01
I2cstop
Waitms 2
I2cstart
I2cwbyte Pcf8574_lcd
I2cwbyte &H02
I2cwbyte &H01
I2cwbyte &H00
I2cstop
so. jetzt blinkt der Cursor links oben. Soweit sogut.
-
verstehe, ist auch logo. Kann man auch einbauen.
Das gleiche Problem sollte ja aber auch die dzt. LIB haben, muß mal schauen, wie der sich das so vorgestellt hat.
-
Hallo Robert,
die Ansteuerung des Displays läuft jetzt:
Code:
'###############################################################################
'# #
'# I2C-Display mit PCA 9555D #
'# #
'# (c) Günter Gerold #
'# #
'# Zum Pin sparen kann ein LCD-Display auch an einen I2C-Bus gehängt werden #
'# Die eingebauten Bascom-Befehle gehen (noch) nicht #
'# Der Zeilenumbruch erfolgt automatisch #
'###############################################################################
$regfile = "m8def.dat"
$crystal = 8000000
Config Scl = Portc.5 'Configure i2c SCL
Config Sda = Portc.4
Const Pca9555_lcd = &H40 'Addresse des ICs
Declare Sub Config_To_lcd(byval Configbyte As Byte)
Declare Sub Data_to_lcd(byval Databyte As Byte)
Dim I As Byte
Dim Puffer As Byte
Dim Text As String * 16
Dim Textarr(16) As Byte At Text Overlay
I2cstart 'Hier werden die Ausgänge des ICs gesetzt
I2cwbyte Pca9555_lcd
I2cwbyte &H06
I2cwbyte &H00
I2cwbyte &HE8
I2cstop
Call Config_to_lcd(&H3c) 'Function Set
Call Config_to_lcd(&H0f) 'Display on/off
Call Config_to_lcd(&H01) 'clear Display
Call Config_to_lcd(&H06) 'Entry Mode Set
Text = "Hallo Robert "
For I = 1 To 16
Puffer = Textarr(i)
If I = 9 Then 'Das Display hat 2*8 Zeichen
Call Config_to_lcd(&Hc0) 'Beim 9. Zeichen wird auf die untere Zeile geschaltet
End If
Call Data_to_lcd(puffer)
Next
Do
Loop
Sub Config_to_lcd(configbyte)
I2cstart
I2cwbyte Pca9555_lcd
I2cwbyte &H02
I2cwbyte Configbyte
I2cwbyte &H01
I2cstop
Waitms 2
I2cstart
I2cwbyte Pca9555_lcd
I2cwbyte &H03
I2cwbyte &H00
I2cstop
End Sub
Sub Data_to_lcd(databyte)
I2cstart
I2cwbyte Pca9555_lcd
I2cwbyte &H02
I2cwbyte Databyte
I2cwbyte &H05
I2cstop
I2cstart
I2cwbyte Pca9555_lcd
I2cwbyte &H03
I2cwbyte &H04
I2cstop
End Sub
jetzt müssen wir in den Bascomkeller hinuntersteigen und die "Anschlüsse" suchen. Gibts da nicht nen Hausmeister?
-
*hehe*
man kann das mal in die Lib einbinden und gucken, wenn's so geht, soll's recht sein
-
Hallo Robert,
den Hausmeister hab ich zwar nicht gefunden, aber jemanden der ihn kennt!
https://www.roboternetz.de/wissen/in...scom_Libraries
-
:mrgreen: schöner Artikel. Der Mann muss mächtig ahnung haben :mrgreen:
-
Hallo Robert,
wenn ich das richtig verstanden habe, muß ich mir den passenden Aufruf in den Libs raussuchen:
CLS = _CLS hab ich gefunden.
Leider finde ich z.B. Upperline und Lowerline nicht. Gibts da ne Liste?