File tree 1 file changed +8
-9
lines changed
1 file changed +8
-9
lines changed Original file line number Diff line number Diff line change @@ -526,19 +526,18 @@ EXTERN volatile irparams_t irparams;
526
526
#define ISR (f ) void f(void)
527
527
528
528
//-----------------
529
- #if (F_BUS == 48000000 )
530
- # define CMT_PPS_VAL 5
531
- #else
532
- # define CMT_PPS_VAL 2
529
+ #define CMT_PPS_DIV ((F_BUS + 7999999) / 8000000)
530
+ #if F_BUS < 8000000
531
+ #error IRremote requires at least 8 MHz on Teensy 3.x
533
532
#endif
534
533
535
534
//-----------------
536
535
#define TIMER_CONFIG_KHZ (val ) ({ \
537
536
SIM_SCGC4 |= SIM_SCGC4_CMT; \
538
537
SIM_SOPT2 |= SIM_SOPT2_PTD7PAD; \
539
- CMT_PPS = CMT_PPS_VAL; \
540
- CMT_CGH1 = 2667 / val; \
541
- CMT_CGL1 = 5333 / val; \
538
+ CMT_PPS = CMT_PPS_DIV - 1; \
539
+ CMT_CGH1 = ((F_BUS / CMT_PPS_DIV / 3000) + ((val)/2)) / (val); \
540
+ CMT_CGL1 = ((F_BUS / CMT_PPS_DIV / 1500) + ((val)/2)) / (val); \
542
541
CMT_CMD1 = 0; \
543
542
CMT_CMD2 = 30; \
544
543
CMT_CMD3 = 0; \
@@ -549,13 +548,13 @@ EXTERN volatile irparams_t irparams;
549
548
550
549
#define TIMER_CONFIG_NORMAL () ({ \
551
550
SIM_SCGC4 |= SIM_SCGC4_CMT; \
552
- CMT_PPS = CMT_PPS_VAL; \
551
+ CMT_PPS = CMT_PPS_DIV - 1; \
553
552
CMT_CGH1 = 1; \
554
553
CMT_CGL1 = 1; \
555
554
CMT_CMD1 = 0; \
556
555
CMT_CMD2 = 30; \
557
556
CMT_CMD3 = 0; \
558
- CMT_CMD4 = 19; \
557
+ CMT_CMD4 = (F_BUS / 160000 + CMT_PPS_DIV / 2) / CMT_PPS_DIV - 31; \
559
558
CMT_OC = 0; \
560
559
CMT_MSC = 0x03; \
561
560
})
You can’t perform that action at this time.
0 commit comments