16 #ifdef __MSP430_HAS_DAC12_2__
21 bool DAC12_A_init(uint16_t baseAddress, DAC12_A_initParam *
param)
23 baseAddress +=
param->submoduleSelect;
25 HWREG16(baseAddress + OFS_DAC12_0CTL1) &= ~(DAC12OG + DAC12DFJ);
28 HWREG16(baseAddress + OFS_DAC12_0CTL0) =
param->outputSelect
29 +
param->positiveReferenceVoltage
30 +
param->amplifierSetting
31 +
param->conversionTriggerSelect;
33 if (DAC12_A_VREFx1 ==
param->outputVoltageMultiplier){
34 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= DAC12IR;
35 }
else if (DAC12_A_VREFx2 ==
param->outputVoltageMultiplier){
36 HWREG16(baseAddress + OFS_DAC12_0CTL1) |= DAC12OG;
42 }
void DAC12_A_setAmplifierSetting (uint16_t baseAddress,
43 uint8_t submoduleSelect,
44 uint8_t amplifierSetting)
47 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) &= ~(DAC12AMP_7);
48 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) |= amplifierSetting;
51 void DAC12_A_disable (uint16_t baseAddress,
52 uint8_t submoduleSelect)
55 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) &= ~(DAC12AMP_7);
58 void DAC12_A_enableGrouping (uint16_t baseAddress)
60 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= DAC12GRP;
63 void DAC12_A_disableGrouping (uint16_t baseAddress)
65 HWREG16(baseAddress + OFS_DAC12_0CTL0) &= ~(DAC12GRP);
68 void DAC12_A_enableInterrupt (uint16_t baseAddress,
69 uint8_t submoduleSelect)
71 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) |= DAC12IE;
74 void DAC12_A_disableInterrupt (uint16_t baseAddress,
75 uint8_t submoduleSelect)
77 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) &= ~(DAC12IE);
80 uint16_t DAC12_A_getInterruptStatus (uint16_t baseAddress,
81 uint8_t submoduleSelect)
83 return (
HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) & DAC12IFG);
86 void DAC12_A_clearInterrupt (uint16_t baseAddress,
87 uint8_t submoduleSelect)
89 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) &= ~(DAC12IFG);
92 void DAC12_A_calibrateOutput (uint16_t baseAddress,
93 uint8_t submoduleSelect)
96 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CALCTL) = DAC12PW;
99 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) |= DAC12CALON;
102 while (
HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) & DAC12CALON);
105 HWREG16(baseAddress + submoduleSelect +
106 OFS_DAC12_0CALCTL) = DAC12PW + DAC12LOCK;
109 uint16_t DAC12_A_getCalibrationData (uint16_t baseAddress,
110 uint8_t submoduleSelect)
112 return ((uint16_t)(
HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CALDAT))) ;
115 void DAC12_A_setCalibrationOffset (uint16_t baseAddress,
116 uint8_t submoduleSelect,
117 uint16_t calibrationOffsetValue)
120 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CALCTL) = DAC12PW;
123 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CALDAT) =
124 calibrationOffsetValue;
127 HWREG16(baseAddress + submoduleSelect +
128 OFS_DAC12_0CALCTL) = DAC12PW + DAC12LOCK;
131 void DAC12_A_enableConversions (uint16_t baseAddress,
132 uint8_t submoduleSelect)
134 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) |= DAC12ENC;
137 void DAC12_A_setData (uint16_t baseAddress,
138 uint8_t submoduleSelect,
141 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0DAT) = data;
144 void DAC12_A_disableConversions (uint16_t baseAddress,
145 uint8_t submoduleSelect)
147 HWREG16(baseAddress + submoduleSelect + OFS_DAC12_0CTL0) &= ~(DAC12ENC);
150 void DAC12_A_setResolution (uint16_t baseAddress,
151 uint8_t submoduleSelect,
152 uint16_t resolutionSelect)
155 uint16_t conversionsEnabledStatus =
156 (
HWREG16(baseAddress + OFS_DAC12_0CTL0) & (DAC12ENC) );
158 baseAddress += submoduleSelect;
161 if (DAC12_A_RESOLUTION_8BIT == resolutionSelect){
162 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= DAC12RES;
163 }
else if (DAC12_A_RESOLUTION_12BIT == resolutionSelect){
164 HWREG16(baseAddress + OFS_DAC12_0CTL0) &= ~(DAC12RES);
168 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= conversionsEnabledStatus;
171 void DAC12_A_setInputDataFormat (uint16_t baseAddress,
172 uint8_t submoduleSelect,
173 uint8_t inputJustification,
177 uint16_t conversionsEnabledStatus =
178 (
HWREG16(baseAddress + OFS_DAC12_0CTL0) & (DAC12ENC) );
180 baseAddress += submoduleSelect;
183 if (DAC12_A_JUSTIFICATION_LEFT == inputJustification){
184 HWREG16(baseAddress + OFS_DAC12_0CTL1) |= DAC12DFJ;
185 }
else if (DAC12_A_JUSTIFICATION_RIGHT == inputJustification){
186 HWREG16(baseAddress + OFS_DAC12_0CTL1) &= ~(DAC12DFJ);
189 if (DAC12_A_SIGNED_2SCOMPLEMENT == inputSign){
190 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= DAC12DF;
191 }
else if (DAC12_A_UNSIGNED_BINARY == inputSign){
192 HWREG16(baseAddress + OFS_DAC12_0CTL0) &= ~(DAC12DF);
196 HWREG16(baseAddress + OFS_DAC12_0CTL0) |= conversionsEnabledStatus;
199 uint32_t DAC12_A_getDataBufferMemoryAddressForDMA (uint16_t baseAddress,
200 uint8_t submoduleSelect)
202 return ( baseAddress + submoduleSelect + OFS_DAC12_0DAT );
MPU_initThreeSegmentsParam param