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 ??
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 12 = 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
Hallo,
Ich hab die Lösung gefunden. Der RN-Speak braucht meiner Erkenntnis nach kein ack-Signal, da er die gesendeten Werte zwischenspeichert. Es funktioniert mittlerweile so halbwegs.
Lesezeichen