PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein IC per I2C ansteuern ==> Das erste Mal.



Murus
05.05.2006, 14:28
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:


$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


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)

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]

-tomas-
05.05.2006, 18:06
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.

PicNick
05.05.2006, 18:14
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.

-tomas-
05.05.2006, 22:28
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.

Murus
06.05.2006, 18:01
Ok, danke für die Hilfe!