21 #define UNJ(X) ((X>>4)&0xFFF)
23 static const uint8_t chTyLut[] = {
31 static uint16_t _xadcGetMeas(XadcChan ch, XadcType ty)
33 unsigned int lu = (ch << 2) | ty;
38 return (
XADC->MAXTEMP);
40 return (
XADC->MINTEMP);
49 return (
XADC->MAXVCCINT);
51 return (
XADC->MINVCCINT);
53 return (
XADC->VCCINT);
60 return (
XADC->MAXVCCAUX);
62 return (
XADC->MINVCCAUX);
64 return (
XADC->VCCAUX);
71 return (
XADC->MAXVCCBRAM);
73 return (
XADC->MINVCCBRAM);
75 return (
XADC->VCCBRAM);
83 uint16_t xadcGetMeas(XadcChan ch, XadcType ty)
85 return UNJ(_xadcGetMeas(ch, ty));
88 bool xadcGetAlarm(XadcChan ch)
93 bitshift = XADC_CMD_ALM_TEMP_BIT;
96 bitshift = XADC_CMD_ALM_VCCINT_BIT;
99 bitshift = XADC_CMD_ALM_VCCAUX_BIT;
101 case xadcChanVccBRAM:
102 bitshift = XADC_CMD_ALM_VCCBRAM_BIT;
105 bitshift = XADC_CMD_ALM_OT_BIT;
108 return ( (
XADC->FLAG & (0x1<<bitshift))== 0x0 ?
false :
true);
112 void xadcSetAveraging(XadcAvg av)
114 unsigned short int _avg;
118 _avg = XADC_CMD_AVERAGE_MODE_NO;
121 _avg = XADC_CMD_AVERAGE_MODE_16;
124 _avg = XADC_CMD_AVERAGE_MODE_64;
127 _avg = XADC_CMD_AVERAGE_MODE_256;
132 XADC->CONFREG[0] = (
XADC->CONFREG[0] & ~XADC_CMD_AVERAGE_MASK) | (_avg << XADC_CMD_AVERAGE_SHIFT);
135 XadcAvg xadcGetAveraging()
137 unsigned short int _avg;
138 _avg = (
XADC->CONFREG[0] & XADC_CMD_AVERAGE_MASK) >> XADC_CMD_AVERAGE_SHIFT;
141 case XADC_CMD_AVERAGE_MODE_NO:
143 case XADC_CMD_AVERAGE_MODE_16:
145 case XADC_CMD_AVERAGE_MODE_64:
147 case XADC_CMD_AVERAGE_MODE_256:
153 void xadcEnaAlarm(XadcChan ch,
bool enable)
158 bitshift = XADC_CMD_ALM_ENA_TEMP_BIT;
161 bitshift = XADC_CMD_ALM_ENA_VCCINT_BIT;
164 bitshift = XADC_CMD_ALM_ENA_VCCAUX_BIT;
166 case xadcChanVccBRAM:
167 bitshift = XADC_CMD_ALM_ENA_VCCBRAM_BIT;
170 bitshift = XADC_CMD_ALM_ENA_OT_BIT;
175 XADC->CONFREG[1] &= ~(0x1 << bitshift);
178 XADC->CONFREG[1] |= (0x1 << bitshift);
182 void xadcPowerDown(XadcPowerState ps){
186 case xadcPowerStateUp:
189 case xadcPowerStateDown:
192 case xadcPowerStateBDown:
201 XADC->CONFREG[2] = (((
XADC->CONFREG[2]) & (~XADC_CMD_PWD_MASK)) | (pwd<<XADC_CMD_PWD_SHIFT));
208 bool xadcSetAlarmValue(XadcChan ch, XadcType ty, uint16_t val){
210 if(ty == xadcTypeCur)
return false;
212 val = ((val << 4) & 0xFFF0);
219 XADC->ALARMREG[0] = val;
222 XADC->ALARMREG[4] = val;
234 XADC->ALARMREG[1] = val;
237 XADC->ALARMREG[5] = val;
249 XADC->ALARMREG[2] = val;
252 XADC->ALARMREG[6] = val;
261 case xadcChanVccBRAM:
264 XADC->ALARMREG[8] = val;
267 XADC->ALARMREG[12] = val;
279 XADC->ALARMREG[3] = val;
282 XADC->ALARMREG[7] = val;
329 void xadcSetMode(XadcMode mo)
331 if(mo == xadcModeDefault){
332 XADC->CONFREG[1] = (
XADC->CONFREG[1] & ~XADC_CMD_SEQ_MASK) | (XADC_CMD_SEQ_DEFAULT << XADC_CMD_SEQ_SHIFT);
333 XADC->SEQUENCEREG[0] = 0;
335 else if(mo == xadcModeAutoSequence){
336 XADC->CONFREG[1] = (
XADC->CONFREG[1] & ~XADC_CMD_SEQ_MASK) | (XADC_CMD_SEQ_CONT << XADC_CMD_SEQ_SHIFT);
337 XADC->SEQUENCEREG[0] = XADC_CMD_ONCHIP_CHAN_SEL;
Manages the global system error.
This module is responsible for distributing error codes.