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.