.

Dependents:  

Committer:
altb
Date:
Wed Oct 17 13:02:19 2018 +0000
Revision:
4:288253c4da29
Child:
5:69857f8b6931
added RCin, and Signal;

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 4:288253c4da29 9 loc_ti.start();
altb 4:288253c4da29 10 loc_ti.reset();
altb 4:288253c4da29 11 }
altb 4:288253c4da29 12
altb 4:288253c4da29 13 uint8_t RCin::map_CH5_2_Flightmode(uint16_t pwm){
altb 4:288253c4da29 14 if(pwm >620 && pwm < 720)
altb 4:288253c4da29 15 return LOITER;
altb 4:288253c4da29 16 else if(pwm >720 && pwm < 850)
altb 4:288253c4da29 17 return AUTO;
altb 4:288253c4da29 18 else if(pwm >870 && pwm < 970)
altb 4:288253c4da29 19 return RTL;
altb 4:288253c4da29 20 else if(pwm >1000 && pwm < 1100)
altb 4:288253c4da29 21 return STABILIZED;
altb 4:288253c4da29 22 else if(pwm >1100 && pwm < 1200)
altb 4:288253c4da29 23 return ACRO;
altb 4:288253c4da29 24 else if(pwm >1200 && pwm < 1350)
altb 4:288253c4da29 25 return LAND;
altb 4:288253c4da29 26 else
altb 4:288253c4da29 27 return STABILIZED;
altb 4:288253c4da29 28 }
altb 4:288253c4da29 29
altb 4:288253c4da29 30
altb 4:288253c4da29 31 void RCin::map_Channels(void){
altb 4:288253c4da29 32 CH1_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 33 CH2_2_PM1.setup(1400.0,600.0,-1.0,1.0);
altb 4:288253c4da29 34 CH3_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 35 CH4_2_PM1.setup(600.0,1400.0,-1.0,1.0);
altb 4:288253c4da29 36 }
altb 4:288253c4da29 37
altb 4:288253c4da29 38 void RCin::rise_edge(void)
altb 4:288253c4da29 39 {
altb 4:288253c4da29 40 loc_ti.reset();
altb 4:288253c4da29 41 }
altb 4:288253c4da29 42 void RCin::fall_edge(void)
altb 4:288253c4da29 43 {
altb 4:288253c4da29 44 uint32_t time_us = loc_ti.read_us();
altb 4:288253c4da29 45 if(time_us > 2500){
altb 4:288253c4da29 46 if(cou<200)
altb 4:288253c4da29 47 cou++;
altb 4:288253c4da29 48 chnr = 0;
altb 4:288253c4da29 49 }
altb 4:288253c4da29 50 else
altb 4:288253c4da29 51 {
altb 4:288253c4da29 52 pwms[++chnr] = time_us;
altb 4:288253c4da29 53 test_pwms[cou][chnr-1]=time_us;
altb 4:288253c4da29 54 switch(chnr){
altb 4:288253c4da29 55 case 1:
altb 4:288253c4da29 56 this->PM1[1]=this->CH1_2_PM1((float)pwms[1]);
altb 4:288253c4da29 57 break;
altb 4:288253c4da29 58 case 2:
altb 4:288253c4da29 59 this->PM1[2]=this->CH2_2_PM1((float)pwms[2]);
altb 4:288253c4da29 60 break;
altb 4:288253c4da29 61 case 3:
altb 4:288253c4da29 62 this->PM1[3]=this->CH3_2_PM1((float)pwms[3]);
altb 4:288253c4da29 63 break;
altb 4:288253c4da29 64 case 4:
altb 4:288253c4da29 65 this->PM1[4]=this->CH4_2_PM1((float)pwms[4]);
altb 4:288253c4da29 66 break;
altb 4:288253c4da29 67 default: break;
altb 4:288253c4da29 68 }
altb 4:288253c4da29 69 }
altb 4:288253c4da29 70 }
altb 4:288253c4da29 71 bool RCin::isAlive(void){
altb 4:288253c4da29 72 if(pwms[3]>550)
altb 4:288253c4da29 73 return true;
altb 4:288253c4da29 74 else
altb 4:288253c4da29 75 return false;
altb 4:288253c4da29 76 }
altb 4:288253c4da29 77
altb 4:288253c4da29 78
altb 4:288253c4da29 79 uint8_t RCin::get_flightmode(void){
altb 4:288253c4da29 80 if(isAlive())
altb 4:288253c4da29 81 return map_CH5_2_Flightmode(pwms[5]);
altb 4:288253c4da29 82 else
altb 4:288253c4da29 83 return 0;
altb 4:288253c4da29 84 }
altb 4:288253c4da29 85
altb 4:288253c4da29 86
altb 4:288253c4da29 87