Hi,
danke für deinen Code, er hat mir einiges gebracht.
leider funktioniert das ganze immernoch nicht.
Ich habe mitlerweile den Bustakt auf 40khz (fast minimum) runtergedreht. und mehrere wait schleifen eingebaut, damit alles schön langsam ist.
Mein erfolg ist immerhin, dass meine Slave seine adresse erkennt, aber kein ACK zurücksendet.
Meine routine um ein ACK zu senden habe ich von dir übernommen:
Code:
sende_ACK:
cbi PORTB,0 ;prepare to send "0" on SDA
sbi DDRB,0 ;setup the SDA line as output
rcall Timer_1Bit ;timer für ACK zurückstellen
ret
Code:
Timer_1Bit:
ldi temp1,0xee
out USISR,temp1 ;timer für ACK zurückstellen und flags löschen
ret
Als master verwende ich eine Mega 168 mit hadware TWI, je 10k pullups an SDA und SCL.
Lesezeichen