diff options
Diffstat (limited to 'ppmsum.cpp')
-rw-r--r-- | ppmsum.cpp | 54 |
1 files changed, 0 insertions, 54 deletions
diff --git a/ppmsum.cpp b/ppmsum.cpp deleted file mode 100644 index 2beaccb..0000000 --- a/ppmsum.cpp +++ /dev/null @@ -1,54 +0,0 @@ -#include "ppmsum.h" - -PPMSum* PPMSum::self = 0; - -template<> -void interrupt<Interrupt::TIM1_UP>() { - PPMSum::self->irq(); -} - -template<> -void interrupt<Interrupt::TIM1_CC>() { - PPMSum::self->irq(); -} - -void PPMSum::irq() { - int16_t sr = TIM1.SR; - TIM1.SR = 0; - - if(sr & 0x01) { - // Timeout. - - synced = false; - - } else if(sr & 0x02) { - // Period. - - if(TIM1.CCR1 > 5000) { - synced = true; - index = 0; - } else { - index++; - index &= 0xf; - } - - } else if(sr & 0x04) { - // Pulsewidth. - - channels[index] = TIM1.CCR2; - } -} - -void PPMSum::enable() { - RCC.enable(RCC.TIM1); - TIM1.PSC = 72; - TIM1.CCMR1 = 0x0201; - TIM1.SMCR = 0x54; - TIM1.CCER = 0x31; - TIM1.DIER = 0x07; - - Interrupt::enable(Interrupt::TIM1_UP); - Interrupt::enable(Interrupt::TIM1_CC); - - TIM1.CR1 = 0x05; -} |