.

Dependents:  

Committer:
altb
Date:
Wed Oct 24 08:51:36 2018 +0000
Revision:
6:da6b1350783c
Parent:
5:69857f8b6931
.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
altb 4:288253c4da29 1 #include "RCin.h"
altb 4:288253c4da29 2
altb 4:288253c4da29 3
altb 4:288253c4da29 4 using namespace std;
altb 4:288253c4da29 5
altb 4:288253c4da29 6 RCin::RCin(PinName pin) : pwm1(pin){
altb 4:288253c4da29 7 pwm1.fall(callback(this, &RCin::fall_edge));
altb 4:288253c4da29 8 pwm1.rise(callback(this, &RCin::rise_edge));
altb 5:69857f8b6931 9 local_ti.start();
altb 5:69857f8b6931 10 local_ti.reset();
altb 4:288253c4da29 11 }
altb 4:288253c4da29 12
altb 5:69857f8b6931 13 // *****************************************************************************
altb 4:288253c4da29 14 void RCin::map_Channels(void){
altb 4:288253c4da29 15 CH1_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 16 CH2_2_PM1.setup(1400.0,600.0,-1.0,1.0);
altb 4:288253c4da29 17 CH3_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 18 CH4_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 19 }
altb 4:288253c4da29 20
altb 5:69857f8b6931 21 // *****************************************************************************
altb 4:288253c4da29 22 void RCin::rise_edge(void)
altb 4:288253c4da29 23 {
altb 5:69857f8b6931 24 local_ti.reset();
altb 4:288253c4da29 25 }
altb 5:69857f8b6931 26
altb 5:69857f8b6931 27 // *****************************************************************************
altb 4:288253c4da29 28 void RCin::fall_edge(void)
altb 4:288253c4da29 29 {
altb 5:69857f8b6931 30 uint32_t time_us = local_ti.read_us();
altb 4:288253c4da29 31 if(time_us > 2500){
altb 5:69857f8b6931 32 if(cou<200)
altb 5:69857f8b6931 33 cou++;
altb 5:69857f8b6931 34 chnr = 0;
altb 5:69857f8b6931 35 map_pwm_2_PM1();
altb 4:288253c4da29 36 }
altb 4:288253c4da29 37 else
altb 4:288253c4da29 38 {
altb 4:288253c4da29 39 pwms[++chnr] = time_us;
altb 4:288253c4da29 40 test_pwms[cou][chnr-1]=time_us;
altb 4:288253c4da29 41 }
altb 4:288253c4da29 42 }
altb 5:69857f8b6931 43 // *****************************************************************************
altb 4:288253c4da29 44 uint8_t RCin::get_flightmode(void){
altb 6:da6b1350783c 45 if(isAlive){
altb 5:69857f8b6931 46 flightmode_changed = (old_flightmode != current_flightmode);
altb 6:da6b1350783c 47 old_flightmode = current_flightmode;
altb 5:69857f8b6931 48 return current_flightmode;
altb 5:69857f8b6931 49 }
altb 4:288253c4da29 50 else
altb 4:288253c4da29 51 return 0;
altb 4:288253c4da29 52 }
altb 5:69857f8b6931 53 // *****************************************************************************
altb 5:69857f8b6931 54 void RCin::map_pwm_2_PM1(void){
altb 5:69857f8b6931 55 PM1[1]=CH1_2_PM1((float)pwms[1]);
altb 6:da6b1350783c 56 PM1[2]=CH2_2_PM1((float)pwms[2]);
altb 6:da6b1350783c 57 PM1[3]=CH3_2_PM1((float)pwms[3]);
altb 6:da6b1350783c 58 PM1[4]=CH4_2_PM1((float)pwms[4]);
altb 5:69857f8b6931 59 if(pwms[5] >620 && pwms[5] < 720)
altb 5:69857f8b6931 60 current_flightmode = LOITER;
altb 5:69857f8b6931 61 else if(pwms[5] >720 && pwms[5] < 850)
altb 5:69857f8b6931 62 current_flightmode = AUTO;
altb 5:69857f8b6931 63 else if(pwms[5] >870 && pwms[5] < 970)
altb 5:69857f8b6931 64 current_flightmode = RTL;
altb 5:69857f8b6931 65 else if(pwms[5] >1000 && pwms[5] < 1100)
altb 5:69857f8b6931 66 current_flightmode = STABILIZED;
altb 5:69857f8b6931 67 else if(pwms[5] >1100 && pwms[5] < 1200)
altb 5:69857f8b6931 68 current_flightmode = ACRO;
altb 5:69857f8b6931 69 else if(pwms[5] >1200 && pwms[5] < 1350)
altb 5:69857f8b6931 70 current_flightmode = LAND;
altb 5:69857f8b6931 71 else
altb 5:69857f8b6931 72 current_flightmode = STABILIZED;
altb 6:da6b1350783c 73 if(pwms[3]>550)
altb 6:da6b1350783c 74 isAlive = true;
altb 6:da6b1350783c 75
altb 5:69857f8b6931 76 }