コード例 #1
0
ファイル: ArduCopter.cpp プロジェクト: Amnesiac2/ardupilot
void Copter::loop()
{
    // wait for an INS sample
    ins.wait_for_sample();

    uint32_t timer = micros();

    // check loop time
    perf_info_check_loop_time(timer - fast_loopTimer);

    // used by PI Loops
    G_Dt                    = (float)(timer - fast_loopTimer) / 1000000.0f;
    fast_loopTimer          = timer;

    // for mainloop failure monitoring
    mainLoop_count++;

    // Execute the fast loop
    // ---------------------
    fast_loop();

    // tell the scheduler one tick has passed
    scheduler.tick();

    // run all the tasks that are due to run. Note that we only
    // have to call this once per loop, as the tasks are scheduled
    // in multiples of the main loop tick. So if they don't run on
    // the first call to the scheduler they won't run on a later
    // call until scheduler.tick() is called again
    uint32_t time_available = (timer + MAIN_LOOP_MICROS) - micros();
    scheduler.run(time_available);
}
コード例 #2
0
void loop(void) {
int32_t timer = micros();

  if ((timer - fast_loopTimer) >= 10000) {
    fast_loop();
    fast_loopTimer=micros();
    }
  if ((timer - fiftyhz_loopTimer) >= 20000) {
    fiftyhz_loopTimer = timer;
    medium_loop();    
    fiftyhz_loop();
    counter_one_herz++;

  if(counter_one_herz == 50){
    super_slow_loop();    //1 Hz
    counter_one_herz = 0;
  }
}
}