40 #include "lib/sensors.h"
42 #define ADC12MCTL_NO(adcno) ((unsigned char *) ADC12MCTL0_)[adcno]
44 static uint16_t adc_on;
45 static uint16_t ready;
59 ADC12CTL0 = REF2_5V + SHT0_6 + SHT1_6 + MSC + REFON;
61 ADC12CTL1 = SHP + CONSEQ_3;
64 for(c = 0; c < 16; c++) {
66 ADC12MCTL_NO(c) &= ~EOS;
67 if(adc_on & (1 << c)) {
70 ADC12CTL1 |= (c * CSTARTADD_1);
77 ADC12MCTL_NO(last) |= EOS;
91 ADC12CTL1 &= ~CONSEQ_3;
94 while(ADC12CTL1 & ADC12BUSY);
101 sky_sensors_status(uint16_t input,
int type)
103 if(type == SENSORS_ACTIVE) {
104 return (adc_on & input) == input;
106 if(type == SENSORS_READY) {
107 ready |= ADC12IFG & adc_on & input;
108 return (ready & adc_on & input) == input;
114 sky_sensors_configure(uint16_t input, uint8_t ref,
int type,
int value)
118 if(type == SENSORS_ACTIVE) {
123 P6SEL |= input & 0xff;
126 for(c = 0; c < 16; c++) {
127 if(input & (1 << c)) {
128 ADC12MCTL_NO(c) = (c * INCH_1) | ref;
135 P6SEL &= ~(input & 0xff);