diff --git a/libraries/APM_RC/APM_RC.h b/libraries/APM_RC/APM_RC.h index 36a467e302a1e8e934224993d6e7ac13c20eb1f7..9882b8eca68539441e9e667309779cef93e9a460 100644 --- a/libraries/APM_RC/APM_RC.h +++ b/libraries/APM_RC/APM_RC.h @@ -36,6 +36,7 @@ class APM_RC_Class virtual void Init( Arduino_Mega_ISR_Registry * isr_reg ) = 0; virtual void OutputCh(uint8_t ch, uint16_t pwm) = 0; + virtual uint16_t OutputCh_current(uint8_t ch) = 0; virtual uint16_t InputCh(uint8_t ch) = 0; virtual uint8_t GetState() = 0; virtual void clearOverride(void) = 0; diff --git a/libraries/APM_RC/APM_RC_APM1.cpp b/libraries/APM_RC/APM_RC_APM1.cpp index 437037817852e1c24fdf6c2be5fed16ed19b8dfc..2bc8a20cf4929850351537f15c4411323a48152b 100644 --- a/libraries/APM_RC/APM_RC_APM1.cpp +++ b/libraries/APM_RC/APM_RC_APM1.cpp @@ -157,6 +157,25 @@ void APM_RC_APM1::OutputCh(uint8_t ch, uint16_t pwm) } } +uint16_t APM_RC_APM1::OutputCh_current(uint8_t ch) +{ + uint16_t pwm=0; + switch(ch) { + case 0: pwm=OCR5B; break; //ch1 + case 1: pwm=OCR5C; break; //ch2 + case 2: pwm=OCR1B; break; //ch3 + case 3: pwm=OCR1C; break; //ch4 + case 4: pwm=OCR4C; break; //ch5 + case 5: pwm=OCR4B; break; //ch6 + case 6: pwm=OCR3C; break; //ch7 + case 7: pwm=OCR3B; break; //ch8 + case 8: pwm=OCR5A; break; //ch9, PL3 + case 9: pwm=OCR1A; break; //ch10, PB5 + case 10: pwm=OCR3A; break; //ch11, PE3 + } + return pwm>>1; +} + void APM_RC_APM1::enable_out(uint8_t ch) { switch(ch){ diff --git a/libraries/APM_RC/APM_RC_APM1.h b/libraries/APM_RC/APM_RC_APM1.h index c448a3eddd43cec2b01b3bf18ceca799313b987b..945150f57aeeace671cfe548896a153702ee7799 100644 --- a/libraries/APM_RC/APM_RC_APM1.h +++ b/libraries/APM_RC/APM_RC_APM1.h @@ -13,6 +13,7 @@ class APM_RC_APM1 : public APM_RC_Class APM_RC_APM1(); void Init( Arduino_Mega_ISR_Registry * isr_reg ); void OutputCh(uint8_t ch, uint16_t pwm); + uint16_t OutputCh_current(uint8_t ch); uint16_t InputCh(uint8_t ch); uint8_t GetState(); bool setHIL(int16_t v[NUM_CHANNELS]); diff --git a/libraries/APM_RC/APM_RC_APM2.cpp b/libraries/APM_RC/APM_RC_APM2.cpp index 0a728cf4f4ec2f8c506c86d9efb34b7ceb73a022..62fad722b68a467a8631d8a5d0569dff621afaa3 100644 --- a/libraries/APM_RC/APM_RC_APM2.cpp +++ b/libraries/APM_RC/APM_RC_APM2.cpp @@ -161,6 +161,24 @@ void APM_RC_APM2::OutputCh(unsigned char ch, uint16_t pwm) } } +uint16_t APM_RC_APM2::OutputCh_current(uint8_t ch) +{ + uint16_t pwm=0; + switch(ch){ + case 0: pwm=OCR1B; break; // out1 + case 1: pwm=OCR1A; break; // out2 + case 2: pwm=OCR4C; break; // out3 + case 3: pwm=OCR4B; break; // out4 + case 4: pwm=OCR4A; break; // out5 + case 5: pwm=OCR3C; break; // out6 + case 6: pwm=OCR3B; break; // out7 + case 7: pwm=OCR3A; break; // out8 + case 9: pwm=OCR5B; break; // out10 + case 10: pwm=OCR5C; break; // out11 + } + return pwm>>1; +} + void APM_RC_APM2::enable_out(uint8_t ch) { switch(ch) { diff --git a/libraries/APM_RC/APM_RC_APM2.h b/libraries/APM_RC/APM_RC_APM2.h index f2a93a1f0784042ba387b14155cac45a0d515cf8..a6743c1a5ab05849d58c012a0e8e71ff4d737b5e 100644 --- a/libraries/APM_RC/APM_RC_APM2.h +++ b/libraries/APM_RC/APM_RC_APM2.h @@ -14,7 +14,8 @@ class APM_RC_APM2 : public APM_RC_Class public: APM_RC_APM2(); void Init( Arduino_Mega_ISR_Registry * isr_reg ); - void OutputCh(unsigned char ch, uint16_t pwm); + void OutputCh(uint8_t ch, uint16_t pwm); + uint16_t OutputCh_current(uint8_t ch); uint16_t InputCh(unsigned char ch); unsigned char GetState(); bool setHIL(int16_t v[NUM_CHANNELS]);