static inline bool_t ins_configure( void ) { switch (ins_init_status) { case INS_VN100_SET_BAUD : last_send_packet.RegID = VN100_REG_SBAUD; spi_buffer_length = 4+VN100_REG_SBAUD_SIZE; ins_init_status++; break; case INS_VN100_SET_ADOR : last_send_packet.RegID = VN100_REG_ADOR; spi_buffer_length = 4+VN100_REG_ADOR_SIZE; ins_init_status++; break; case INS_VN100_SET_ADOF : last_send_packet.RegID = VN100_REG_ADOF; spi_buffer_length = 4+VN100_REG_ADOF_SIZE; ins_init_status++; break; case INS_VN100_READY : return TRUE; } last_send_packet.CmdID = VN100_CmdID_WriteRegister; spi_buffer_input = (uint8_t*)&last_received_packet; spi_buffer_output = (uint8_t*)&last_send_packet; SpiSelectSlave0(); SpiStart(); return FALSE; }
void baro_init( void ) { mcp355x_init(); SpiSelectSlave0(); // never unselect this slave (continious conversion mode) baro.status = BS_UNINITIALIZED; baro.absolute = 0; baro.differential = 0; /* not handled on this board */ #ifdef ROTORCRAFT_BARO_LED LED_OFF(ROTORCRAFT_BARO_LED); #endif startup_cnt = STARTUP_COUNTER; }
void ins_periodic_task( void ) { if (!SpiCheckAvailable()) { SpiOverRun(); return; } if (!ins_configure()) return; // Fill request for QMR last_send_packet.CmdID = VN100_CmdID_ReadRegister; last_send_packet.RegID = VN100_REG_YMR; spi_buffer_input = (uint8_t*)&last_received_packet; spi_buffer_output = (uint8_t*)&last_send_packet; spi_buffer_length = 4+VN100_REG_YMR_SIZE; SpiSelectSlave0(); SpiStart(); }