mirror of
https://github.com/rvtr/twl_mcu.git
synced 2025-06-18 14:45:41 -04:00
142 lines
4.7 KiB
C
142 lines
4.7 KiB
C
#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 */
|
||
}
|
||
|