Master Receiver Mode TWI

Gast #4780781
Lesenswert?
• ▲
▼
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren