1 | // DMA Configurations
|
2 | typedef enum DMA_INIT_VALUES_enum {
|
3 | /***** DMA0 *****/
|
4 | DMA0_Config_Control = 0,
|
5 | DMA0_Config_Irq_Select = 0,
|
6 | DMA0_Config_Irq_Priority = 0,
|
7 | DMA0_Config_Irq_enable = 0,
|
8 | DMA0_Config_STA_Address = 0,
|
9 | DMA0_Config_STB_Address = 0,
|
10 | DMA0_Config_PAD_Address = 0,
|
11 | DMA0_Config_Count = 0,
|
12 |
|
13 | /***** DMA1 *****/
|
14 | DMA1_Config_Control = 0,
|
15 | DMA1_Config_Irq_Select = 0,
|
16 | DMA1_Config_Irq_Priority = 0,
|
17 | DMA1_Config_Irq_enable = 0,
|
18 | DMA1_Config_STA_Address = 0,
|
19 | DMA1_Config_STB_Address = 0,
|
20 | DMA1_Config_PAD_Address = 0,
|
21 | DMA1_Config_Count = 0,
|
22 |
|
23 |
|
24 | /***** DMA2 *****/
|
25 | DMA2_Config_Control = 0,
|
26 | DMA2_Config_Irq_Select = 0,
|
27 | DMA2_Config_Irq_Priority = 0,
|
28 | DMA2_Config_Irq_enable = 0,
|
29 | DMA2_Config_STA_Address = 0,
|
30 | DMA2_Config_STB_Address = 0,
|
31 | DMA2_Config_PAD_Address = 0,
|
32 | DMA2_Config_Count = 0,
|
33 |
|
34 |
|
35 | /***** DMA3 *****/
|
36 | DMA3_Config_Control = 0,
|
37 | DMA3_Config_Irq_Select = 0,
|
38 | DMA3_Config_Irq_Priority = 0,
|
39 | DMA3_Config_Irq_enable = 0,
|
40 | DMA3_Config_STA_Address = 0,
|
41 | DMA3_Config_STB_Address = 0,
|
42 | DMA3_Config_PAD_Address = 0,
|
43 | DMA3_Config_Count = 0,
|
44 |
|
45 |
|
46 | /***** DMA4 *****/
|
47 | DMA4_Config_Control = 0,
|
48 | DMA4_Config_Irq_Select = 0,
|
49 | DMA4_Config_Irq_Priority = 0,
|
50 | DMA4_Config_Irq_enable = 0,
|
51 | DMA4_Config_STA_Address = 0,
|
52 | DMA4_Config_STB_Address = 0,
|
53 | DMA4_Config_PAD_Address = 0,
|
54 | DMA4_Config_Count = 0,
|
55 |
|
56 |
|
57 | /***** DMA5 *****/
|
58 | DMA5_Config_Control = 0,
|
59 | DMA5_Config_Irq_Select = 0,
|
60 | DMA5_Config_Irq_Priority = 0,
|
61 | DMA5_Config_Irq_enable = 0,
|
62 | DMA5_Config_STA_Address = 0,
|
63 | DMA5_Config_STB_Address = 0,
|
64 | DMA5_Config_PAD_Address = 0,
|
65 | DMA5_Config_Count = 0,
|
66 |
|
67 | /***** DMA6 *****/
|
68 | DMA6_Config_Control = ((DMA_Control_CHEN_disabled << DMA_Control_CHEN_gp) |
|
69 | (DMA_Control_SIZE_word << DMA_Control_SIZE_gp) |
|
70 | (DMA_Control_DIR_read_peripheral << DMA_Control_DIR_gp) |
|
71 | (DMA_Control_HALF_init_irq_full << DMA_Control_HALF_gp) |
|
72 | (DMA_Control_NULLW_disabled << DMA_Control_NULLW_gp) |
|
73 | (DMA_Control_AMODE_reg_indirect_post << DMA_Control_AMODE_gp) |
|
74 | (DMA_Control_MODE_continuous << DMA_Control_MODE_gp)),
|
75 | DMA6_Config_Irq_Select = DMA_Irq_IRQSEL_UART2RX,
|
76 | DMA6_Config_Irq_Priority = DMA_INT_PRI_1,
|
77 | DMA6_Config_Irq_enable = TRUE,
|
78 | DMA6_Config_STA_Address = (void*)(DMA_BufferA[DMA6]),
|
79 | DMA6_Config_STB_Address = (int*)(DMA_BufferB[DMA6]),
|
80 | DMA6_Config_PAD_Address = (&U2RXREG),
|
81 | DMA6_Config_Count = 1,
|
82 |
|
83 | /***** DMA7 *****/
|
84 | DMA7_Config_Control = ((DMA_Control_CHEN_disabled << DMA_Control_CHEN_gp) |
|
85 | (DMA_Control_SIZE_word << DMA_Control_SIZE_gp) |
|
86 | (DMA_Control_DIR_read_peripheral << DMA_Control_DIR_gp) |
|
87 | (DMA_Control_HALF_init_irq_full << DMA_Control_HALF_gp) |
|
88 | (DMA_Control_NULLW_disabled << DMA_Control_NULLW_gp) |
|
89 | (DMA_Control_AMODE_reg_indirect_post << DMA_Control_AMODE_gp) |
|
90 | (DMA_Control_MODE_continuous << DMA_Control_MODE_gp)),
|
91 | DMA7_Config_Irq_Select = DMA_Irq_IRQSEL_UART2TX,
|
92 | DMA7_Config_Irq_Priority = DMA_INT_PRI_1,
|
93 | DMA7_Config_Irq_enable = TRUE,
|
94 | DMA7_Config_STA_Address = (int)(DMA_BufferA[DMA7]),
|
95 | DMA7_Config_STB_Address = (int)(DMA_BufferB[DMA7]),
|
96 | DMA7_Config_PAD_Address = (&U2TXREG),
|
97 | DMA7_Config_Count = 1
|
98 | }DMA_Init_Values;
|
99 |
|
100 | void hw_Open_DMA6 (void)
|
101 | {
|
102 | IEC4bits.DMA6IE = 0; // Disable DMA Interrupt
|
103 |
|
104 | DMA6CON = DMA6_Config_Control;
|
105 | DMA6REQ = DMA6_Config_Irq_Select;
|
106 | DMA6STA = (unsigned int) Sta_Address - (unsigned int)&_DMA_BASE;
|
107 | DMA6STB = (unsigned int) Stb_Address - (unsigned int)&_DMA_BASE;
|
108 | DMA6PAD = Pad_Address;
|
109 | DMA6CNT = DMA6_Config_Count-1;
|
110 |
|
111 | IPC17bits.DMA6IP = DMA6_Config_Irq_Priority; // Set DMA Interrupt Priority
|
112 | IFS4bits.DMA6IF = 0; // Clear DMA Interrupt Flag
|
113 | IEC4bits.DMA6IE = DMA6_Config_Irq_enable; // Enable / Disable DMA Interrupt
|
114 | DMA6CONbits.CHEN = 1; // Enable DMA Channel
|
115 | }
|