Forum: Mikrocontroller und Digitale Elektronik Master Receiver Mode TWI


von Niko (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.