File tree Expand file tree Collapse file tree 1 file changed +8
-9
lines changed Expand file tree Collapse file tree 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;
526526#define ISR (f ) void f(void)
527527
528528//-----------------
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
533532#endif
534533
535534//-----------------
536535#define TIMER_CONFIG_KHZ (val ) ({ \
537536 SIM_SCGC4 |= SIM_SCGC4_CMT; \
538537 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); \
542541 CMT_CMD1 = 0; \
543542 CMT_CMD2 = 30; \
544543 CMT_CMD3 = 0; \
@@ -549,13 +548,13 @@ EXTERN volatile irparams_t irparams;
549548
550549#define TIMER_CONFIG_NORMAL () ({ \
551550 SIM_SCGC4 |= SIM_SCGC4_CMT; \
552- CMT_PPS = CMT_PPS_VAL; \
551+ CMT_PPS = CMT_PPS_DIV - 1; \
553552 CMT_CGH1 = 1; \
554553 CMT_CGL1 = 1; \
555554 CMT_CMD1 = 0; \
556555 CMT_CMD2 = 30; \
557556 CMT_CMD3 = 0; \
558- CMT_CMD4 = 19; \
557+ CMT_CMD4 = (F_BUS / 160000 + CMT_PPS_DIV / 2) / CMT_PPS_DIV - 31; \
559558 CMT_OC = 0; \
560559 CMT_MSC = 0x03; \
561560})
You can’t perform that action at this time.
0 commit comments