Furtion
30.08.2010, 17:05
Hi,
ich habe einen Aufbau aus 2 Chips die per TWI verbunden sind, der Slave
hat die Aufgabe wenn man ihm per Schreibbefehl einen Befehl übergibt, im
anschließenden Lesemodus, je nach Befehl zu antworten. Der Master
sendet also zunächst den Befehl schließt die Schreibeübertragung per
Stop ab und ließt in einem Lesevorgang dann die Bytes ein. Dabei sollte
es möglich sein kein Delay zwischen einem Schreib/Lesevorgang zu
benötigen. Der Slave ist in C, der Master in Basic programmiert.
Das Problem was sich nun auftut ist, dass das ganze per Software TWI gut
funktioniert, sobald ich aber den Master auf Hardware TWI einstelle brauche
ich ein Delay zwischen den Vorgängen. Das ganze funktioniert selbst bei
500Hz Takt nicht, dies drückt sich dadurch aus, dass der Slave SDA/SCL
low zieht (war. ACK). Das kurioste an der ganzen Sache ist, wenn ich nun
die Busgeschwindigkeit erhöhe (auf 400kHz) dann läuft das ganze per
HW-TWI wieder stabil (ohne Delay).
Hat vill. jemand schon einmal ein solches Problem gehabt oder vill
eine Idee was man noch ausprobieren könnte?
ich habe einen Aufbau aus 2 Chips die per TWI verbunden sind, der Slave
hat die Aufgabe wenn man ihm per Schreibbefehl einen Befehl übergibt, im
anschließenden Lesemodus, je nach Befehl zu antworten. Der Master
sendet also zunächst den Befehl schließt die Schreibeübertragung per
Stop ab und ließt in einem Lesevorgang dann die Bytes ein. Dabei sollte
es möglich sein kein Delay zwischen einem Schreib/Lesevorgang zu
benötigen. Der Slave ist in C, der Master in Basic programmiert.
Das Problem was sich nun auftut ist, dass das ganze per Software TWI gut
funktioniert, sobald ich aber den Master auf Hardware TWI einstelle brauche
ich ein Delay zwischen den Vorgängen. Das ganze funktioniert selbst bei
500Hz Takt nicht, dies drückt sich dadurch aus, dass der Slave SDA/SCL
low zieht (war. ACK). Das kurioste an der ganzen Sache ist, wenn ich nun
die Busgeschwindigkeit erhöhe (auf 400kHz) dann läuft das ganze per
HW-TWI wieder stabil (ohne Delay).
Hat vill. jemand schon einmal ein solches Problem gehabt oder vill
eine Idee was man noch ausprobieren könnte?