bool AP_InertialSensor_Oilpan::_init_sensor(void) { apm1_adc.Init(); switch (_imu.get_sample_rate()) { case AP_InertialSensor::RATE_50HZ: _sample_threshold = 20; break; case AP_InertialSensor::RATE_100HZ: _sample_threshold = 10; break; case AP_InertialSensor::RATE_200HZ: _sample_threshold = 5; break; default: // can't do this speed return false; } _gyro_instance = _imu.register_gyro(); _accel_instance = _imu.register_accel(); _product_id = AP_PRODUCT_ID_APM1_2560; return true; }
void setup() { hal.console->println("ArduPilot Mega ADC library test"); hal.scheduler->delay(1000); adc.Init(); // APM ADC initialization hal.scheduler->delay(1000); timer = AP_HAL::millis(); }
void Plane::init_ardupilot() { // initialise serial port serial_manager.init_console(); cliSerial->printf_P(PSTR("\n\nInit " FIRMWARE_STRING "\n\nFree RAM: %u\n"), hal.util->available_memory()); // // Check the EEPROM format version before loading any parameters from EEPROM // load_parameters(); if (g.hil_mode == 1) { // set sensors to HIL mode ins.set_hil_mode(); compass.set_hil_mode(); barometer.set_hil_mode(); } #if CONFIG_HAL_BOARD == HAL_BOARD_PX4 // this must be before BoardConfig.init() so if // BRD_SAFETYENABLE==0 then we don't have safety off yet for (uint8_t tries=0; tries<10; tries++) { if (setup_failsafe_mixing()) { break; } hal.scheduler->delay(10); } #endif BoardConfig.init(); // initialise serial ports serial_manager.init(); // allow servo set on all channels except first 4 ServoRelayEvents.set_channel_mask(0xFFF0); set_control_channels(); // keep a record of how many resets have happened. This can be // used to detect in-flight resets g.num_resets.set_and_save(g.num_resets+1); // init baro before we start the GCS, so that the CLI baro test works barometer.init(); // initialise rangefinder init_rangefinder(); // initialise battery monitoring battery.init(); // init the GCS gcs[0].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_Console, 0); // we start by assuming USB connected, as we initialed the serial // port with SERIAL0_BAUD. check_usb_mux() fixes this if need be. usb_connected = true; check_usb_mux(); // setup serial port for telem1 gcs[1].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 0); #if MAVLINK_COMM_NUM_BUFFERS > 2 // setup serial port for telem2 gcs[2].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 1); #endif #if MAVLINK_COMM_NUM_BUFFERS > 3 // setup serial port for fourth telemetry port (not used by default) gcs[3].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 2); #endif // setup frsky #if FRSKY_TELEM_ENABLED == ENABLED frsky_telemetry.init(serial_manager); #endif mavlink_system.sysid = g.sysid_this_mav; #if LOGGING_ENABLED == ENABLED log_init(); #endif #if CONFIG_HAL_BOARD == HAL_BOARD_APM1 apm1_adc.Init(); // APM ADC library initialization #endif // initialise airspeed sensor airspeed.init(); if (g.compass_enabled==true) { if (!compass.init() || !compass.read()) { cliSerial->println_P(PSTR("Compass initialisation failed!")); g.compass_enabled = false; } else { ahrs.set_compass(&compass); } } #if OPTFLOW == ENABLED // make optflow available to libraries ahrs.set_optflow(&optflow); #endif // Register mavlink_delay_cb, which will run anytime you have // more than 5ms remaining in your call to hal.scheduler->delay hal.scheduler->register_delay_callback(mavlink_delay_cb_static, 5); // give AHRS the airspeed sensor ahrs.set_airspeed(&airspeed); // GPS Initialization gps.init(&DataFlash, serial_manager); init_rc_in(); // sets up rc channels from radio init_rc_out(); // sets up the timer libs relay.init(); #if MOUNT == ENABLED // initialise camera mount camera_mount.init(serial_manager); #endif #if FENCE_TRIGGERED_PIN > 0 hal.gpio->pinMode(FENCE_TRIGGERED_PIN, HAL_GPIO_OUTPUT); hal.gpio->write(FENCE_TRIGGERED_PIN, 0); #endif /* * setup the 'main loop is dead' check. Note that this relies on * the RC library being initialised. */ hal.scheduler->register_timer_failsafe(failsafe_check_static, 1000); #if CLI_ENABLED == ENABLED if (g.cli_enabled == 1) { const prog_char_t *msg = PSTR("\nPress ENTER 3 times to start interactive setup\n"); cliSerial->println_P(msg); if (gcs[1].initialised && (gcs[1].get_uart() != NULL)) { gcs[1].get_uart()->println_P(msg); } if (num_gcs > 2 && gcs[2].initialised && (gcs[2].get_uart() != NULL)) { gcs[2].get_uart()->println_P(msg); } } #endif // CLI_ENABLED startup_ground(); Log_Write_Startup(TYPE_GROUNDSTART_MSG); // choose the nav controller set_nav_controller(); set_mode((FlightMode)g.initial_mode.get()); // set the correct flight mode // --------------------------- reset_control_switch(); // initialise sensor #if OPTFLOW == ENABLED optflow.init(); #endif }
void Rover::init_ardupilot() { // initialise console serial port serial_manager.init_console(); cliSerial->printf_P(PSTR("\n\nInit " FIRMWARE_STRING "\n\nFree RAM: %u\n"), hal.util->available_memory()); // // Check the EEPROM format version before loading any parameters from EEPROM. // load_parameters(); BoardConfig.init(); // initialise serial ports serial_manager.init(); ServoRelayEvents.set_channel_mask(0xFFF0); set_control_channels(); battery.init(); // keep a record of how many resets have happened. This can be // used to detect in-flight resets g.num_resets.set_and_save(g.num_resets+1); // init baro before we start the GCS, so that the CLI baro test works barometer.init(); // init the GCS gcs[0].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_Console, 0); // we start by assuming USB connected, as we initialed the serial // port with SERIAL0_BAUD. check_usb_mux() fixes this if need be. usb_connected = true; check_usb_mux(); // setup serial port for telem1 gcs[1].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 0); #if MAVLINK_COMM_NUM_BUFFERS > 2 // setup serial port for telem2 gcs[2].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 1); #endif #if MAVLINK_COMM_NUM_BUFFERS > 3 // setup serial port for fourth telemetry port (not used by default) gcs[3].setup_uart(serial_manager, AP_SerialManager::SerialProtocol_MAVLink, 2); #endif // setup frsky telemetry #if FRSKY_TELEM_ENABLED == ENABLED frsky_telemetry.init(serial_manager); #endif mavlink_system.sysid = g.sysid_this_mav; #if LOGGING_ENABLED == ENABLED log_init(); #endif // Register mavlink_delay_cb, which will run anytime you have // more than 5ms remaining in your call to hal.scheduler->delay hal.scheduler->register_delay_callback(mavlink_delay_cb_static, 5); #if CONFIG_HAL_BOARD == HAL_BOARD_APM1 apm1_adc.Init(); // APM ADC library initialization #endif if (g.compass_enabled==true) { if (!compass.init()|| !compass.read()) { cliSerial->println_P(PSTR("Compass initialisation failed!")); g.compass_enabled = false; } else { ahrs.set_compass(&compass); //compass.get_offsets(); // load offsets to account for airframe magnetic interference } } // initialise sonar init_sonar(); // and baro for EKF init_barometer(); // Do GPS init gps.init(&DataFlash, serial_manager); rc_override_active = hal.rcin->set_overrides(rc_override, 8); init_rc_in(); // sets up rc channels from radio init_rc_out(); // sets up the timer libs relay.init(); #if MOUNT == ENABLED // initialise camera mount camera_mount.init(serial_manager); #endif /* setup the 'main loop is dead' check. Note that this relies on the RC library being initialised. */ hal.scheduler->register_timer_failsafe(failsafe_check_static, 1000); #if CLI_ENABLED == ENABLED // If the switch is in 'menu' mode, run the main menu. // // Since we can't be sure that the setup or test mode won't leave // the system in an odd state, we don't let the user exit the top // menu; they must reset in order to fly. // if (g.cli_enabled == 1) { const prog_char_t *msg = PSTR("\nPress ENTER 3 times to start interactive setup\n"); cliSerial->println_P(msg); if (gcs[1].initialised && (gcs[1].get_uart() != NULL)) { gcs[1].get_uart()->println_P(msg); } if (num_gcs > 2 && gcs[2].initialised && (gcs[2].get_uart() != NULL)) { gcs[2].get_uart()->println_P(msg); } } #endif startup_ground(); Log_Write_Startup(TYPE_GROUNDSTART_MSG); set_mode((enum mode)g.initial_mode.get()); // set the correct flight mode // --------------------------- reset_control_switch(); }