Hallo,
ich steh gerade vor einem Problem, und zwar hänge ich dran ein Master im
Receiver Mode zu betreiben.
Hier hab ich ihn im MT Modus das klappt.
1 | TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA); /* Start*/
|
2 |
|
3 | while (!(TWCR & (1<<TWINT)) ); /* auf ACK warten*/
|
4 |
|
5 | TWDR = (0b11111110);
|
6 | TWCR = (1<<TWINT) | (1<<TWEN);
|
7 |
|
8 | while (!(TWCR & (1<<TWINT)));
|
9 |
|
10 |
|
11 | TWDR = DATA;
|
12 | TWCR = (1<<TWINT) | (1<<TWEN);
|
13 |
|
14 | while (!(TWCR & (1<<TWINT)));
|
15 |
|
16 | TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
|
17 |
|
18 | DATA++;
|
hab dann versucht Analog den Daten wert wieder zurück zulesen aber
sobald ich da was mache geht nix mehr.
1 | TWCR = (1<<TWINT) | (1<<TWEN) | (1<<TWSTA); /* Start*/
|
2 |
|
3 | while (!(TWCR & (1<<TWINT)) ); /* auf ACK warten*/
|
4 |
|
5 | TWDR = (0b11111111);
|
6 | TWCR = (1<<TWINT) | (1<<TWEN);
|
7 |
|
8 | while (!(TWCR & (1<<TWINT)));
|
9 |
|
10 |
|
11 | DATA2 = TWDR;
|
12 | TWCR = (1<<TWINT) | (1<<TWEN);
|
13 |
|
14 | while (!(TWCR & (1<<TWINT)));
|
15 |
|
16 | TWCR = (1<<TWINT) | (1<<TWSTO) | (1<<TWEN);
|
wenn ich es richtig verstanden habe, muss ich nach dem ich die
Slaveadresse + R gesendet habe auf ein ACK warten und warten bis die
Daten im TWDR stehen. Diese dann in DATA2 Speichern und mit einen NACK
antworten und ein Stop ausführen. Doch ich habe bis jetzt keine Ahnung
wie das aussehen soll. Vielleicht kann mir ja wer helfen.