Hallo Gemeinde,
ich wundere mich gerade über Probleme mit internen Modulen im XMega an
meheren Baustellen die ich mit einem ATXMEGA256A3U habe. Vielleicht
kennt ja jemand von euch dieses Verhalten.
Wenn ich eine Datenkommunikation nach außen durchführen möchte, sei es
per I2C, SPI oder UART funktioniert immer nur die erste Datenübertragung
korrekt. Bei der zweiten stimmen die Datenraten nicht mehr. Dieses
Problem kann ich lösen, indem ich ein Delay nach!!! dem aussenden des
Datenpacketes einbaue. Sieht dann zum Beispiel so aus
1 | TWI_MasterWriteRead(&twiDSP, TWI_SLAVE_DSP_W, &volume[0], 5,0);
|
2 |
|
3 | while(twiLCD.status != TWIM_STATUS_READY) //wait until last package was correctly send (wait for Ack from dsp)
|
4 | {
|
5 |
|
6 | }
|
7 |
|
8 | _delay_ms(1);
|
9 |
|
10 | Der Rest der I2C Programmierung entstammt der Atmel Referenz Implementierung
|
der XMEGA läuft mit der internen PLL auf 2x mit einem externen 16 MHz
als Quelle. Also stabiler Systemtakt mit 32 MHz.
Gruß Chris