S-FHSS failsafe again...

This commit is contained in:
Pascal Langer 2017-11-23 15:51:07 +01:00
parent d9282ac750
commit 1318f1a29b
3 changed files with 22 additions and 14 deletions

View File

@ -19,7 +19,7 @@
#define VERSION_MAJOR 1 #define VERSION_MAJOR 1
#define VERSION_MINOR 1 #define VERSION_MINOR 1
#define VERSION_REVISION 6 #define VERSION_REVISION 6
#define VERSION_PATCH_LEVEL 27 #define VERSION_PATCH_LEVEL 28
//****************** //******************
// Protocols // Protocols
//****************** //******************

View File

@ -156,16 +156,24 @@ static void __attribute__((unused)) SFHSS_build_data_packet()
ch4 = convert_channel_16b_nolim(CH_AETR[ch_offset+3],2020,1020); ch4 = convert_channel_16b_nolim(CH_AETR[ch_offset+3],2020,1020);
if(command&0x04) if(command&0x04)
{//Failsafe data are coded for sbus: (ch_value-880)/0.625 { //Failsafe data are:
#ifndef SFHSS_FAILSAFE_THROTTLE // 0 to 1023 -> no output on channel
ch1=((ch1-880)<<3)/5; // 1024-2047 -> hold output on channel
ch2=((ch2-880)<<3)/5; // 2048-4095 -> channel_output=(data&0x3FF)*5/4+880 in µs
ch3=((ch3-880)<<3)/5; // Notes:
if((command&0x08)==0) ch3|=0x800; // Special flag for throttle which appears on dumps... // 2048-2559 -> does not look valid since it only covers the range from 1520µs to 2160µs
ch4=((ch4-880)<<3)/5; // 2560-3583 -> valid for any channel values from 880µs to 2160µs
// 3584-4095 -> looks to be used for the throttle channel with values ranging from 880µs to 1520µs
#ifdef SFHSS_FAILSAFE_CH9_16
ch1=((5360-ch1)<<2)/5; //((1520*2-ch1)<<2)/5+1856;
ch2=((5360-ch2)<<2)/5;
ch3=((5360-ch3)<<2)/5;
if((command&0x08)==0 && ch3<3072) // Throttle
ch3+=1024;
ch4=((5360-ch4)<<2)/5;
#else #else
ch1=1024;ch2=1024;ch4=1024; // All channels centered ch1=1024;ch2=1024;ch4=1024; // All channels hold their positions
ch3=((command&0x08)==0)?0xF70:1024; // except throttle value set to 970 with 0x800 flag set ch3=((command&0x08)==0)?3664:1024; // except throttle value set to 980µs
#endif #endif
} }
@ -216,7 +224,7 @@ uint16_t ReadSFHSS()
/* Work cycle: 6.8ms */ /* Work cycle: 6.8ms */
#define SFHSS_PACKET_PERIOD 6800 #define SFHSS_PACKET_PERIOD 6800
#define SFHSS_DATA2_TIMING 1630 // original 1650 #define SFHSS_DATA2_TIMING 1650 // Adjust this value between 1600 and 1650 if your RX(s) are not operating properly
case SFHSS_DATA1: case SFHSS_DATA1:
SFHSS_build_data_packet(); SFHSS_build_data_packet();
SFHSS_send_packet(); SFHSS_send_packet();

View File

@ -143,9 +143,9 @@
/**************************/ /**************************/
/*** FAILSAFE SETTINGS ***/ /*** FAILSAFE SETTINGS ***/
/**************************/ /**************************/
//SHFSS failsafe is by default using the values of channels 9 to 16 //SHFSS failsafe is by default set to all channels hold their positions except throttle forced to low (980µs)
//You can uncomment the setting below to not use channels 9 to 16 but just bring down throttle //You can uncomment the setting below to use channels 9(1) to 16(8) instead
//#define SFHSS_FAILSAFE_THROTTLE //#define SFHSS_FAILSAFE_CH9_16
#define AFHDS2A_FAILSAFE #define AFHDS2A_FAILSAFE
#ifdef AFHDS2A_FAILSAFE #ifdef AFHDS2A_FAILSAFE