Der Code sieht gut aus - hast Du ihn mal getestet? Ggf. mal die Kontroll-Bytes checken.
Hinweis: Ist in Deinem Fall wohl nicht notwendig, aber ich schicke immer ein I2cinit dem Config hinterher.
Hallo zusammen,
ich möchte ein IC (SAA1064: 7-Segment-Multiplexer-Treiber) per I2C ansteuern. Im Attachment findet ihr den Auszug aus dem Datenblatt, wo drinsteht, wie man das Ding ansteuern muss. Da ich das noch nie gemacht habe, frage ich hier halt mal nach.
Hier ist mal mein Bascom-Codeauszug, wie ich das bewerkstelligen möchte:
Mit diesem Code soll auf den 4 Segmenten eine "1234" sichtbar werden. Das Control-Byte ist so gesetzt, dass er normal arbeitet. Das Instruction Byte so, dass das diesem Byte folgende Byte das Control-Byte ist. (Das Control-Byte könnte man weglassen und direkt die Daten schreiben)Code:$regfile = "m8def.dat" $crystal = 8000000 Config Sda = Portd.5 Config Scl = Portd.7 I2cstart ' Los gehts I2cwbyte &B01110000 ' Der Slave wird angesteuert I2cwbyte &B00000000 ' Das Instruktionsbyte I2cwbyte &B00000111 'Das Control-Byte, für Einstellungen am IC I2cwbyte &B00000001 'Data Digit 1 I2cwbyte &B00000010 ' Data Digit 2 I2cwbyte &B00000011 ' Data Digit 3 I2cwbyte &B00000100 ' Data Digit 4 I2cstop
Funktioniert diese Ansteuerung so? Ist das so einfach?
Muss ich die Pins vom TWI noch als Ausgang deklarieren oder macht das Bascom?
Herzlichen Gruss
Mario [/quote]
Der Code sieht gut aus - hast Du ihn mal getestet? Ggf. mal die Kontroll-Bytes checken.
Hinweis: Ist in Deinem Fall wohl nicht notwendig, aber ich schicke immer ein I2cinit dem Config hinterher.
Für die Software I2C Routinen ist der I2CInit durchaus notwendig, er setzt sonst die Ports nicht richtig.
Verwendet man die Hardware-Lösung, sollte man dafür die Geschwindigkeit definieren.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
So einfach ist das nicht, in den Bascom Samples fehlt oft das I2CInit.
In der Hilfe steht:By default the SCL and SDA pins are in the right state when you reset the chip. Both the PORT and the DDR bits are set to 0 in that case.
When you need to change the DDR and/or PORT bits you can use I2CINIT to bring the pins in the proper state again.
Ok, danke für die Hilfe!
Lesezeichen