#include "zf_common_headfile.h" #include "gl_headfile.h" enum barrier_type_e barrier_type = BARRIER_NONE; uint16 time_barrier; void CheckBarrier() { if (barrier_type == BARRIER_NONE && Lpt0_found_barrier_in && !Lpt1_found_barrier_in && is_straight1) { barrier_type = BARRIER_LEFT_BEGIN; } if (barrier_type == BARRIER_NONE && !Lpt0_found_barrier_in && Lpt1_found_barrier_in && is_straight0) { barrier_type = BARRIER_RIGHT_BEGIN; } } void RunBarrier() { if (barrier_type == BARRIER_LEFT_BEGIN) { track_type = TRACK_RIGHT; if (Lpt0_found) { Lpt0_found_count++; } if (Lpt0_found_count >= 1) { Lpt0_found_count = 0; barrier_type = BARRIER_LEFT_RUNNING; track_type = TRACK_RIGHT; timer_clear(TIM_3); timer_start(TIM_3); } } else if (barrier_type == BARRIER_LEFT_RUNNING) { track_type = TRACK_RIGHT; time_barrier = timer_get(TIM_3); if (time_barrier >= 1000) { barrier_type = BARRIER_NONE; track_type = TRACK_RIGHT; timer_start(TIM_3); timer_clear(TIM_3); } } if (barrier_type == BARRIER_RIGHT_BEGIN) { track_type = TRACK_LEFT; if (Lpt1_found) { Lpt1_found_count++; } if (Lpt1_found_count >= 1) { Lpt1_found_count = 0; barrier_type = BARRIER_RIGHT_RUNNING; track_type = TRACK_LEFT; timer_clear(TIM_3); timer_start(TIM_3); } } else if (barrier_type == BARRIER_RIGHT_RUNNING) { track_type = TRACK_LEFT; time_barrier = timer_get(TIM_3); if (time_barrier >= 1000) { timer_start(TIM_3); timer_clear(TIM_3); barrier_type = BARRIER_NONE; track_type = TRACK_LEFT; } } }