void task_application_imu_radio(uint16_t input) { counter++; P1OUT ^= 0x02; // toggle P1.1 for debug P4OUT ^= 0x20; // toggle P4.5 for debug P1OUT |= 0x04;P1OUT &= ~0x04; // pulse P1.2 for debug if (counter==0) { leds_circular_shift(); // circular shift LEDs for debug } //get RAM space for packet testImuRadiopacketToSend = openqueue_getFreePacketBuffer(); //l1 testImuRadiopacketToSend->l1_channel = DEFAULTCHANNEL; //payload packetfunctions_reserveHeaderSize(testImuRadiopacketToSend,8); gyro_get_measurement(&(testImuRadiopacketToSend->payload[0])); P1OUT |= 0x04;P1OUT &= ~0x04; // pulse P1.2 for debug packetfunctions_reserveHeaderSize(testImuRadiopacketToSend,6); large_range_accel_get_measurement(&(testImuRadiopacketToSend->payload[0])); P1OUT |= 0x04;P1OUT &= ~0x04; // pulse P1.2 for debug packetfunctions_reserveHeaderSize(testImuRadiopacketToSend,6); magnetometer_get_measurement(&(testImuRadiopacketToSend->payload[0])); P1OUT |= 0x04;P1OUT &= ~0x04; // pulse P1.2 for debug packetfunctions_reserveHeaderSize(testImuRadiopacketToSend,10); sensitive_accel_temperature_get_measurement(&(testImuRadiopacketToSend->payload[0])); P1OUT |= 0x04;P1OUT &= ~0x04; // pulse P1.2 for debug packetfunctions_reserveFooterSize(testImuRadiopacketToSend,2);//space for radio to fill in CRC //send packet radio_send(testImuRadiopacketToSend); }
void main(void) { WDTCTL = WDTPW + WDTHOLD; // disable watchdog timer BCSCTL1 = CALBC1_16MHZ; // MCLK at 16MHz DCOCTL = CALDCO_16MHZ; P1DIR |= 0x1E; // P1.1-4 as outputs (for debug) __enable_interrupt(); // global enable interrupts leds_init(); //configuring the large scale accelerometer //configuring the gyro if (*(&eui64+3)==0x09) { // this is a GINA board (not a basestation) i2c_init(); large_range_accel_init(); } //check configuration is right (break and use Watch window) large_range_accel_get_config(); //make continuous measurements while(1) { P1OUT ^= 0x02; // toggle P1.1 for debug large_range_accel_get_measurement(&(large_range_accel_data[0])); large_range_accel_x = (256*large_range_accel_data[0]+large_range_accel_data[1])>>3; large_range_accel_y = (256*large_range_accel_data[2]+large_range_accel_data[3])>>3; large_range_accel_z = (256*large_range_accel_data[4]+large_range_accel_data[5])>>3; leds_circular_shift(); __no_operation(); //useless, just for breakpoint } }