Danke für den Tipp,
ich habe viele neue Erkenntnisse.
Habe dem Slave einen integer übergeben und dieser ist auch angekommen.
Überprüft durch
1 | *data =TWDR;
|
2 | if(data[0]==0x05)
|
3 | {
|
4 | PORTD |= (1<<PD4);
|
5 | }
|
Habe auch eine genauere Fehler Betrachtung durchgeführt. Ok bedeutet,
dass auf diesen Fall positiv getestet wurde
Beispielsweise:
1 | if((TWSR & 0xF8) == 0x28)
|
2 | {
|
3 | PORTD |= (1<<PD4);
|
4 | }
|
A START condition has been
transmitted
0x08 = ok
A repeated START condition
has been transmitted
0x10 = ok
SLA+W has been transmitted;
ACK has been received
0x18 = ok
SLA+W has been transmitted;
NOT ACK has been received
0x20 = ok
Data byte has been transmitted;
ACK has been received
0x28 = false
Data byte has been transmitted;
NOT ACK has been received
0x30 = ok
Arbitration lost in SLA+W or data
bytes
0x38 = false
Ich weiß immer noch nicht warum ich kein ACK bekomme, aber es verwundert
mich das bei SLA+W sowohl ein ACK als auch kein ACK ausgegeben wird.
Schöne Grüße