Wie mehrere Bytes mit dem TWI Slave auslesen?

Gast #2512542
Lesenswert?

Einen wunderschönen Samstag Vormittag wünsche ich euch,

hab da gerade noch ein kleines Verständnissproblem beim TWI. Nach 
folgendem Schema von Peter Fleury übertrage ich bisher meine Daten vom 
Master zum Slave:
1
// übertrage Motorgeschwindigkeit
2
i2c_start_wait(Motor_1 + I2C_WRITE); // set device address and write mode
3
i2c_write(Motor_Speed); // write address = 5
4
i2c_write(0x75);
5
i2c_stop(); // set stop conditon = release bus

Wie kann ich diese Daten nun mit meinem Slave auslesen? Hier der Code in 
dem ich auslese:
1
ISR (TWI_vect)  //Wird ausgelöst wenn der Master etwas senden will.
2
//############################################################################
3
{  
4
  switch (TWSR & 0xF8) //TW_STATUS 
5
  {  
6
    //Adresse empfangen
7
    case TW_SR_SLA_ACK:      /*TW_SR_SLA_ACK = SLA+W received, ACK returned.
8
                    Also "MT-Kommando SLA+W" wurde empfangen und 
9
                    es wurde mit Acknowledge geantwortet*/
10
      TWCR |= (1<<TWINT);    /*Löschen des für die TWI Übertragung nötigen
11
                    Interruptflags.*/
12
      return;          //Interrupt verlassen
13
      
14
    //Daten empfangen
15
    case TW_SR_DATA_ACK:    /*TW_SR_DATA_ACK = data received, ACK returned.
16
                    Vom Master gesendete Daten wurden empfangen
17
                    und es wurde mit Acknowledge geantwortet*/
18

19
      Motor_Speed = TWDR;      /*Übertragen der Daten*/
20

21

22
      TWCR |= (1<<TWINT);    /*Löschen des für die TWI Übertragung nötigen
23
                    Interruptflags.*/
24

25
      i2c_timeout = 0;    /*Variable "i2c_timeout" wird auf "0" gesetzt.
26
                    Also zurückgesetzt.*/
27

28
      return;          //Interrupt verlassen

Momentan überschreibt er den zuvor übermittelten Wert? Wie also mehere 
Bytes nacheinander empfangen?

Sorry falls ich mich grad ein bissel dämlich anstelle, aber ich seh da 
grad echt nicht durch.

Gruß Andi

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