tliebl00
18.02.2005, 19:03
Hallo,
ich habe eine C-Control und ein RN-Speak-Board miteinander verbunden. Ein Basic-Listing sollte das Board über die Adresse H52 (dez. 82) ansprechen, und ein Byte mit der Wertigkeit 1 übertragen. Aber das Board spricht leider nicht(oder nicht richtig). Der I2C-Bus hat da irgendwie danach einen undefinierten Zustand. Ich habe hier glaube ich einen Grundsatzfehler drin.
auf dem Board befinden sich die Zahlen von 1 bis 100 aufgesprochen. Der Erfolg sieht folgendermassen aus. Wenn die CC startet spricht das Board eine 1 und bleibt hängen.Ich werd auch nicht schlau, wo die getack-routine greifen soll! Ich bin leider noch nicht so fit und versuche mein möglichstes. Hat jemand vielleicht eine Idee oder kann mir helfen ??
' C-Control/BASIC tom002.BAS
' - Ansteuerung eines I2C-Bus Slaves Adresse H52
' - Ansteuerung eines rn-speak Board
'**************************************
define SDA port[8]
define SCL port[7]
define PCFDaten byte
define Zaehler byte
define N byte
SDA = ON
SCL = ON
for Zaehler = 1 to 10
gosub I2C_start
pcfdaten = 82 'Adresse rnspeak
gosub I2C_schreiben
pcfdaten = Zaehler
gosub I2C_schreiben
gosub I2C_stop
next
#I2C_start
SDA = OFF
SCL = OFF
return
#I2C_stop
SDA = OFF
SCL = ON
SDA = ON
return
#I2C_schreiben
for N = 1 to 8
SDA= OFF
if (pcfdaten AND 128) = 128 then SDA = ON
pulse SCL
pcfdaten = pcfdaten shl 1 '1 Bit nach links
next
pulse SCL ' 9. Impuls
'gosub getack
return
'#acknowlege
' SDA = 0
' pulse SCL
' return
'#getack
'SDA = 1
'deact SDA
'SCL = ON
'wait not SDA
'SCL = OFF
'return
'#NoAcknoledgement
' SDA = 1
' pulse SCL
' return
end
ich habe eine C-Control und ein RN-Speak-Board miteinander verbunden. Ein Basic-Listing sollte das Board über die Adresse H52 (dez. 82) ansprechen, und ein Byte mit der Wertigkeit 1 übertragen. Aber das Board spricht leider nicht(oder nicht richtig). Der I2C-Bus hat da irgendwie danach einen undefinierten Zustand. Ich habe hier glaube ich einen Grundsatzfehler drin.
auf dem Board befinden sich die Zahlen von 1 bis 100 aufgesprochen. Der Erfolg sieht folgendermassen aus. Wenn die CC startet spricht das Board eine 1 und bleibt hängen.Ich werd auch nicht schlau, wo die getack-routine greifen soll! Ich bin leider noch nicht so fit und versuche mein möglichstes. Hat jemand vielleicht eine Idee oder kann mir helfen ??
' C-Control/BASIC tom002.BAS
' - Ansteuerung eines I2C-Bus Slaves Adresse H52
' - Ansteuerung eines rn-speak Board
'**************************************
define SDA port[8]
define SCL port[7]
define PCFDaten byte
define Zaehler byte
define N byte
SDA = ON
SCL = ON
for Zaehler = 1 to 10
gosub I2C_start
pcfdaten = 82 'Adresse rnspeak
gosub I2C_schreiben
pcfdaten = Zaehler
gosub I2C_schreiben
gosub I2C_stop
next
#I2C_start
SDA = OFF
SCL = OFF
return
#I2C_stop
SDA = OFF
SCL = ON
SDA = ON
return
#I2C_schreiben
for N = 1 to 8
SDA= OFF
if (pcfdaten AND 128) = 128 then SDA = ON
pulse SCL
pcfdaten = pcfdaten shl 1 '1 Bit nach links
next
pulse SCL ' 9. Impuls
'gosub getack
return
'#acknowlege
' SDA = 0
' pulse SCL
' return
'#getack
'SDA = 1
'deact SDA
'SCL = ON
'wait not SDA
'SCL = OFF
'return
'#NoAcknoledgement
' SDA = 1
' pulse SCL
' return
end