Ich hab gerade meine neue Systemplatine fertig und teste die Einzelkomponenten.
Beim XMega-TWI hab ich da aber ein kleines Problem.
Ich verwende die folgende Funktion um nach TWI-Slaves zu suchen.
TWIPrescE=TWI_BR100;
Die Funktion liefert mir für alle möglichen Werte zwichen 00h und ffh urück, dass ein gerät gefunden wurde, obwolh dem nicht so sein kann.
Da der Xmega 3,3V am POrt hat habe ich einen Levelshifter eingesetzt wie er HIER beschrieben ist. Momentan habe ich einen DS1307 (5V) und einen Hca-Baro Luftdrucksensor (5V) dran hängen. Mit dem Oszi schaut alles normal aus. Die Signale liegen auf 5V und pulsen beim Zugriff auf Low.
Warum liefert TWIstatE immer True zurück?
Beim XMega-TWI hab ich da aber ein kleines Problem.
Ich verwende die folgende Funktion um nach TWI-Slaves zu suchen.
Code
procedure checkI2C;
var i: Byte;
begin
for i:= 0 to $ff do
if TWIstatE(i) then
writeln(seroutC1, '... I2C item found :' + bytetohex(i)+'h');
endif;
mdelay(20);
endfor;
end;
var i: Byte;
begin
for i:= 0 to $ff do
if TWIstatE(i) then
writeln(seroutC1, '... I2C item found :' + bytetohex(i)+'h');
endif;
mdelay(20);
endfor;
end;
TWIPrescE=TWI_BR100;
Die Funktion liefert mir für alle möglichen Werte zwichen 00h und ffh urück, dass ein gerät gefunden wurde, obwolh dem nicht so sein kann.
Da der Xmega 3,3V am POrt hat habe ich einen Levelshifter eingesetzt wie er HIER beschrieben ist. Momentan habe ich einen DS1307 (5V) und einen Hca-Baro Luftdrucksensor (5V) dran hängen. Mit dem Oszi schaut alles normal aus. Die Signale liegen auf 5V und pulsen beim Zugriff auf Low.
Warum liefert TWIstatE immer True zurück?