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 ) ({ \
537536SIM_SCGC4 |= SIM_SCGC4_CMT; \
538537SIM_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);  \
542541CMT_CMD1 = 0; \
543542CMT_CMD2 = 30; \
544543CMT_CMD3 = 0; \
@@ -549,13 +548,13 @@ EXTERN volatile irparams_t irparams;
549548
550549#define  TIMER_CONFIG_NORMAL () ({ \
551550SIM_SCGC4 |= SIM_SCGC4_CMT; \
552- CMT_PPS = CMT_PPS_VAL;   \
551+ CMT_PPS = CMT_PPS_DIV - 1;  \
553552CMT_CGH1 = 1; \
554553CMT_CGL1 = 1; \
555554CMT_CMD1 = 0; \
556555CMT_CMD2 = 30; \
557556CMT_CMD3 = 0; \
558- CMT_CMD4 = 19;   \
557+ CMT_CMD4 = (F_BUS / 160000 + CMT_PPS_DIV / 2) / CMT_PPS_DIV - 31;  \
559558CMT_OC = 0; \
560559CMT_MSC = 0x03; \
561560})
                                 You can’t perform that action at this time. 
               
                  
0 commit comments