Im Beispiel von Microchip (an dem ich mich orientiert hab) steht
folgendes:
1 | #ifdef _HAS_DMA_
|
2 | DMA0STAL = __builtin_dmaoffset(&BufferA);
|
3 | DMA0STAH = __builtin_dmapage(&BufferA);
|
4 |
|
5 | DMA0STBL = __builtin_dmaoffset(&BufferB);
|
6 | DMA0STBH = __builtin_dmapage(&BufferB);
|
7 | #else
|
8 | DMA0STAL = (unsigned int)&BufferA;
|
9 | DMA0STAH = (unsigned int)&BufferA;
|
10 |
|
11 | DMA0STBL = (unsigned int)&BufferB;
|
12 | DMA0STBH = (unsigned int)&BufferB;
|
13 | #endif
|
Da laut MPLAB X IDE bei mir kein HAS_DMA definiert ist, geh ich davon
aus.
Auserdem sind ja meine empfangenen Werte kein völliger Mist.
Aber danke für die Anregung.
Habe es momentan ohne DMA per Interrupt gelöst. DMA wäre natürlich
schöner.
MfG
Florian
PS:
Das nächste Problem ist, das in ADC1BUFF immer 0 drin steht, was aber
nicht stimmt. Alle anderen ADC1BUFx sind (vermutlich) korrekt.
Nutze:
Soll laut Datenblatt nach jedem 16 Sample/Conversion Vorgang einen
Interrupt auslösen. In diesem send ich dann den kompletten Puffer.