Forum: Mikrocontroller und Digitale Elektronik AT91SAM7S TWI mehr als 1 byte wmpfangen


von Jens D. (jens) Benutzerseite


Lesenswert?

Hallo,

ich habe ein Problem mit dem TWI bei dem SAM7S
1 Byte kann ich ohne Probleme empfanngen, nur wenn ich mehr als 1 Byte 
empfanngen will bekomme ich immer das alte zurück.
1
  if(*AT91C_TWI_SR & AT91C_TWI_NACK){
2
    *AT91C_TWI_CR = AT91C_TWI_STOP;
3
    return TWI_NACK;
4
  }
5
  *AT91C_AIC_ICCR = (1<<AT91C_ID_TWI);                //Clear TWI IRQ
6
  while(n_byte){                                      //Recive
7
    status = 0;
8
    while(!(*AT91C_TWI_SR & AT91C_TWI_RXRDY) && status>=1000000)status++;
9
    data[counter++] = *AT91C_TWI_RHR;
10
    n_byte--;
11
  }

Hat jemand ein Idee, wo der Hund begraben ist?
Der IRQ wird nicht ausgeloest, den frage ich nur im Polling ab nach dem 
senden der Startadresse wegen dem BUG, dass nach dem lesen vom SR das 
NACK Bit im TWI_SR nicht gesetzt wird.

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.