AFON // радиотехник affonya@mail.ru
← Все проекты для дронов

Таймер полёта

Отсчёт времени полёта с момента арминга и сигнал по лимиту.

DMC.47 · Телеметрия и служебное · ATmega328P

Задача

Считать время с момента арминга и подать сигнал по достижении лимита.

Алгоритм

Секундный счётчик в главном цикле (или по таймеру); при arm=1 наращивается, при достижении лимита — тревога.

Исходный код (C, avr-gcc)

⇩ Скачать 47-flight-timer.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>
int main(void){
  DDRD|=(1<<PD6); DDRB|=(1<<PB5);
  volatile uint8_t armed=1; const uint16_t LIMIT=240;  // 4 минуты
  uint16_t sec=0;
  for(;;){
    if(armed){ sec++;
      if(sec>=LIMIT){ PORTD^=(1<<PD6); PORTB^=(1<<PB5); }  // тревога по лимиту
    } else sec=0;
    _delay_ms(1000);
  }
}

Сборка: avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os файл.c -o файл.elf

Пояснения

Помогает не разрядить батарею: сигнал на, скажем, 4-й минуте. Здесь простой программный отсчёт.

Смотрите также

Время полёта дрона