-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDAC.c
39 lines (33 loc) · 1001 Bytes
/
DAC.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <xc.h>
#include "DAC.h"
void initDAC(void)
{
DISABLE_DAC;
// Set up Auxillary clock
AUX_CLK_SRC = AOSC;
AUX_CLK_INPUT = PLL_OUTPUT;
AUX_OSC_MODE = INTERNAL_PLL;
AUX_CLK_OUTPUT = AUX_IN_DIVIDE_BY_1;
// F_AUX = Fvco = 147.456 MHz
// Set up DAC module
ENABLE_RIGHT_DAC_CHANNEL;
DAC_DEFAULT_DATA = 0x8000;
DAC_CLK = AUX_OUT_DIV_BY_12;
// F_DACCLK = F_AUX / 12 = 147.456 / 12 = 12.288 MHz
// F_DAC sampling = F_DACCLK / 256 = 12.288 MHz / 256 = 48,000 Hz
DAC_DATA_FORMAT = DAC_SIGNED_INT;
DAC_OUTPUT_AMPLIFIER = DAC_DISABLE_WHILE_SLEEP;
// Disable DAC interrupts - let DMA take care of it
CLEAR_DAC_RIGHT_CH_INTERRUPT_FLAG;
CLEAR_DAC_LEFT_CH_INTERRUPT_FLAG;
DISABLE_DAC_RIGHT_CH_INTERRUPT;
DISABLE_DAC_LEFT_CH_INTERRUPT;
DAC_RIGHT_INTERRUPT_TYPE = FIFO_EMPTY;
DAC_LEFT_INTERRUPT_TYPE = FIFO_EMPTY;
// Turn DAC on
ENABLE_DAC;
}
void __attribute__((interrupt, no_auto_psv)) _DAC1RInterrupt(void)
{
CLEAR_DAC_RIGHT_CH_INTERRUPT_FLAG;
}