Hallo an alle,
Seit Tagen versuche ich meinem cc2510 MCU von TI zu überreden das Port1
per DMA in ein Array zu lesen. Leider funktioniert das nur mit mäßigen
Erfolg. Wenn ich das Port direkt auslese (Test = P1) klappt es
wunderbar. Wenn ich für das Gleiche die DMA benutze bekomme ich immer
nur das Reset Value vom Port zurück. Hat einer von euch eine Idee was
ich falsch mache???
Und ist das überhaupt möglich?
Hier die Funktion:
1 | #define DATA_AMOUNT 512
|
2 | static char copy[DATA_AMOUNT];
|
3 | static DMA_DESC dmaConfig0;
|
4 | void main(void){
|
5 | P1SEL = 0x00;
|
6 | P1DIR = 0x00;
|
7 | P1INP = 0x00;
|
8 | P2INP = 0x40;
|
9 | dmaConfig0.SRCADDRH = ((uint16)P1 >> 8) & 0x00FF; // I thought here should stand 0xDF90 ????
|
10 | dmaConfig0.SRCADDRL = (uint16)P1 & 0x00FF;
|
11 | dmaConfig0.DESTADDRH = ((uint16)copy >> 8) & 0x00FF;
|
12 | dmaConfig0.DESTADDRL = (uint16)copy & 0x00FF;
|
13 | dmaConfig0.VLEN = DMA_VLEN_USE_LEN;
|
14 | dmaConfig0.LENH = (DATA_AMOUNT >> 8) & 0x00FF;
|
15 | dmaConfig0.LENL = DATA_AMOUNT & 0x00FF;
|
16 | dmaConfig0.WORDSIZE = DMA_WORDSIZE_BYTE;
|
17 | dmaConfig0.TMODE = DMA_TMODE_BLOCK;
|
18 | dmaConfig0.TRIG = DMA_TRIG_NONE;
|
19 | dmaConfig0.SRCINC = DMA_SRCINC_0;
|
20 | dmaConfig0.DESTINC = DMA_DESTINC_1;
|
21 | dmaConfig0.IRQMASK = DMA_IRQMASK_DISABLE;
|
22 | dmaConfig0.M8 = DMA_M8_USE_8_BITS;
|
23 | dmaConfig0.PRIORITY = DMA_PRI_HIGH;
|
24 | DMA0CFGH = ((uint16)&dmaConfig0 >> 8) & 0x00FF;
|
25 | DMA0CFGL = (uint16)&dmaConfig0 & 0x00FF;
|
26 |
|
27 | DMAREQ |= DMAREQ0;
|
28 |
|
29 | while ( !(DMAIRQ & DMAIRQ_DMAIF0) );
|
30 |
|
31 | DMAIRQ &= ~DMAIRQ_DMAIF0;
|
32 | while(1);
|
33 | }
|
Danke schonmal im Voraus :D
Gruß
Roland