Ejemplo n.º 1
0
STATIC_INLINE void handle_periodic_tasks( void ) {
  if (sys_time_check_and_ack_timer(main_periodic_tid))
    main_periodic();
  if (sys_time_check_and_ack_timer(modules_tid))
    modules_periodic_task();
  if (sys_time_check_and_ack_timer(radio_control_tid))
    radio_control_periodic_task();
  if (sys_time_check_and_ack_timer(failsafe_tid))
    failsafe_check();
  if (sys_time_check_and_ack_timer(electrical_tid))
    electrical_periodic();
  if (sys_time_check_and_ack_timer(baro_tid))
    baro_periodic();
  if (sys_time_check_and_ack_timer(telemetry_tid))
    telemetry_periodic();
}
Ejemplo n.º 2
0
void nps_autopilot_run_step(double time __attribute__ ((unused))) {

  if (nps_radio_control_available(time)) {
    radio_control_feed();
    main_event();
  }

  if (nps_sensors_gyro_available()) {
    imu_feed_gyro_accel();
    main_event();
  }

  if (nps_sensors_mag_available()) {
    imu_feed_mag();
    main_event();
 }

  if (nps_sensors_baro_available()) {
    baro_feed_value(sensors.baro.value);
    main_event();
  }

  if (nps_sensors_gps_available()) {
    booz_gps_feed_value();
    main_event();
  }

  if (nps_bypass_ahrs) {
    sim_overwrite_ahrs();
  }

  main_periodic();

  if (time < 8) { /* start with a little bit of hovering */
    int32_t init_cmd[4];
    init_cmd[COMMAND_THRUST] = 0.253*SUPERVISION_MAX_MOTOR;
    init_cmd[COMMAND_ROLL]   = 0;
    init_cmd[COMMAND_PITCH]  = 0;
    init_cmd[COMMAND_YAW]    = 0;
    supervision_run(TRUE, FALSE, init_cmd);
  }
  for (uint8_t i=0; i<ACTUATORS_MKK_NB; i++)
    autopilot.commands[i] = (double)supervision.commands[i] / SUPERVISION_MAX_MOTOR;

}
Ejemplo n.º 3
0
STATIC_INLINE void handle_periodic_tasks(void)
{
  if (sys_time_check_and_ack_timer(main_periodic_tid)) {
    main_periodic();
  }
  if (sys_time_check_and_ack_timer(modules_tid)) {
    modules_periodic_task();
  }
  if (sys_time_check_and_ack_timer(radio_control_tid)) {
    radio_control_periodic_task();
  }
  if (sys_time_check_and_ack_timer(electrical_tid)) {
    electrical_periodic();
  }
  if (sys_time_check_and_ack_timer(telemetry_tid)) {
    telemetry_periodic();
  }
}
Ejemplo n.º 4
0
int main(void) {

  mcu_init();
  sys_time_register_timer((1./PERIODIC_FREQUENCY), NULL);

  /* init RCC */
  RCC_APB2PeriphClockCmd(A_PERIPH , ENABLE);
  //  RCC_APB2PeriphClockCmd(B_PERIPH , ENABLE);
  //  GPIO_DeInit(A_RX_PORT);
  /* Init GPIO for rx pins */
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  //  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin = A_RX_PIN;
  GPIO_Init(A_RX_PORT, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = B_RX_PIN;
  GPIO_Init(B_RX_PORT, &GPIO_InitStructure);
  /* Init GPIO for tx pins */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin = A_TX_PIN;
  GPIO_Init(A_TX_PORT, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = B_TX_PIN;
  GPIO_Init(B_TX_PORT, &GPIO_InitStructure);

  A_TX_PORT->BRR  = A_TX_PIN;

  /* */
  while (1) {
    if (sys_time_check_and_ack_timer(0))
      main_periodic();
    main_event();
  }

  return 0;
}
Ejemplo n.º 5
0
int main(void) {

  hw_init();
  sys_time_init();


  /* init RCC */
  RCC_APB2PeriphClockCmd(A_PERIPH , ENABLE);
  //  RCC_APB2PeriphClockCmd(B_PERIPH , ENABLE);
  //  GPIO_DeInit(A_RX_PORT);
  /* Init GPIO for rx pins */
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  //  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin = A_RX_PIN;
  GPIO_Init(A_RX_PORT, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = B_RX_PIN;
  GPIO_Init(B_RX_PORT, &GPIO_InitStructure);
  /* Init GPIO for tx pins */
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Pin = A_TX_PIN;
  GPIO_Init(A_TX_PORT, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = B_TX_PIN;
  GPIO_Init(B_TX_PORT, &GPIO_InitStructure);

  A_TX_PORT->BRR  = A_TX_PIN;

  /* */
  while (1) {
    if (sys_time_periodic())
      main_periodic();
    main_event();
 };
  return 0;
}