Si può fare anche via software (per chi la Turnigy 9X o le radio flysky che non hanno failsafe):
nel file libraries/AP_HAL_VRBRAIN/hardware/hal/pwm_in.c
aggiungere nelle intestazioni, l'inclusione di timer.h
e all'inizio, dichiarare la variabile che contiene i ms dell'ultimo impulso rilevato:
aggiungere poi la rilevazione dell'ultimo impulso throttle, il canale 3 (2 dato che parte da 0)
ed infine dare il valore di 950ms quando è da più di 40ms che non sentiamo impulsi:
p.s. metto anche il file già bello e pronto in allegato
nel file libraries/AP_HAL_VRBRAIN/hardware/hal/pwm_in.c
aggiungere nelle intestazioni, l'inclusione di timer.h
codice:
#include "hal_types.h" #include "timer.h" #include <boards.h>
codice:
uint32_t last_pulse;
codice:
TIM_ClearITPendingBit(channel.tim, channel.tim_cc); if (i==2) // channel throttle TODO use param last_pulse = systick_uptime_millis; switch (channel.tim_channel)
codice:
uint16_t pwmRead(uint8_t channel) { if (systick_uptime_millis - last_pulse < 40) //40ms delay return Inputs[channel].capture; else return 950; }
Commenta