#include "macrodriver.h" #include "Timer.h" /* Start user code for include definition. Do not edit comment generated here */ /* End user code for include definition. Do not edit comment generated here */ #include "user_define.h" /* Start user code for global definition. Do not edit comment generated here */ /* タイマーはイベントループを駆動するのと、 TM51 : イベントループ用 LEDのPWM制御に使ってます。 TM50 : wifi LED TMH0 : PowR TMH1 : PowG */ /****************************************************************************** イベントタイマ ******************************************************************************/ void TM51_Init(){ TCE51 = 0; /* TM51 counter disable */ TMMK51 = 1; /* INTTM51 interrupt disabled */ TMIF51 = 0; /* clear interrupt flag */ // TMPR51 = 1; /* set low priority level */ TCL51 = TM5_INTER_CLOCK_5; // 2^8 分周 = 31.25kHz /* TM51 interval mode */ CR51 = TM51_COMPARE_VALUE; // 155 -> 4.975ms TMC51 = TM5_TMC5_INITIALVALUE | TM5_OPT_MODE_OTHER | TM5_OUTPUT_FF_DISABLE; } void TM51_Start(){ TMMK51 = 0; /* INTTM51 interrupt enabled */ TCE51 = 1; /* count operation start */ } void TM51_Stop(){ TCE51 = 0; /* TM51 counter disable */ TMMK51 = 1; /* INTTM51 interrupt disabled */ TMIF51 = 0; /* clear interrupt flag */ } /****************************************************************************** TM00 使いません。 CAM LED はソフトで点滅します。しくしく。 ******************************************************************************/ /****************************************************************************** TM50 WiFi LED Duty は CR50 (0(1/256) 〜 254(255/256)) ******************************************************************************/ void TM50_Init(){ TCE50 = 0; /* TM50 counter disable */ TMMK50 = 1; /* INTTM50 interrupt disabled */ TMIF50 = 0; /* clear interrupt flag */ TCL50 = TM5_INTER_CLOCK_2; /* TM50 PWM output mode */ /* Set TM50 output pin */ PM1 &= 0x7F; P1 &= 0x7F; CR50 = TM50_COMPARE_VALUE; TMC50 = TM5_TMC5_INITIALVALUE | TM5_OPT_MODE_PWM | TM5_OUTPUT_ACTIVE_HIGH; } void TM50_Start(){ TOE50 = 1; /* output enabled */ TCE50 = 1; /* count operation start */ } void TM50_Stop(){ TCE50 = 0; /* TM50 counter disable */ TOE50 = 0; /* output disabled */ } /****************************************************************************** TMH0 POW 赤 CMP0x との一致でピンをアクティブにして、カウンタをクリア CMP1x との一致でピンをインアクティブにする。動作中に変更可能。  → アクティブHiにしておいて、CMP1xを動かせばよし CMP00は255にしてある。CMP1xは0〜254 (範囲に注意!255禁止!) ******************************************************************************/ void TMH0_Init(void){ TMHE0 = 0; /* stop TimerH0 */ TMMKH0 = 1; /* INTTMH0 Interrupt servicing disabled */ TMIFH0 = 0; /* clear interrupt request flag of INTTMH0 */ TMHMD0 = TMH_TMHMDn_INITIALVALUE | TMH_INTER_CLOCK_3 | TMH_PWM_MODE | TMH_OUTPUT_LVL_LOW; CMP00 = TMH0_CMP0_VALUE; CMP10 = TMH0_CMP1_VALUE; /* TMH0 pin setting */ PM1 &= ~0x20; P1 &= ~0x20; } void TMH0_Start(void){ CMP10 = TMH0_CMP1_VALUE; TOEN0 = 1; /* enable output */ TMHE0 = 1; /* start TimerH0 */ } void TMH0_Stop(void){ TMHE0 = 0; /* stop TimerH0 */ TOEN0 = 0; /* disable output */ } /****************************************************************************** TMH1 POW 緑 ******************************************************************************/ void TMH1_Init(void){ TMHE1 = 0; /* stop TimerH1 */ TMMKH1 = 1; /* INTTMH1 Interrupt servicing disabled */ TMIFH1 = 0; /* clear interrupt request flag of INTTMH1 */ TMHMD1 = TMH_TMHMDn_INITIALVALUE | TMH_INTER_CLOCK_2 | TMH_PWM_MODE | TMH_OUTPUT_LVL_LOW; CMP01 = TMH1_CMP0_VALUE; CMP11 = TMH1_CMP1_VALUE; /* TMH1 pin setting */ PM1 &= ~0x40; P1 &= ~0x40; } void TMH1_Start(void){ CMP11 = TMH1_CMP1_VALUE; TOEN1 = 1; /* enable output */ TMHE1 = 1; /* start TimerH1 */ } void TMH1_Stop(void){ TMHE1 = 0; /* stop TimerH1 */ TOEN1 = 0; /* disable output */ }