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);
static bool start(void)
Start measurement.
static void input(void)
Process a received 6lowpan packet.