ワンショット・パルス出力のためのトリガ(ソフトウェア・トリガ)を発生させます。
[指定形式]
void R_TAUm_Channeln_Set_SoftwareTriggerOn ( void );
備考 mはユニット番号を、n はチャネル番号を意味します。
[引数]
なし
[戻り値]
なし
使用例(インターバル・タイマ)
一定間隔で割り込み関数に入り、その回数をカウントする
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TAU0 |
使用する | |||
Channel0 |
||||
チャネル 0 |
インターバル・タイマ | |||
インターバル時間(16ビット) |
100μs (実際の値:100) | |||
カウント開始時にINTTM00割り込みを発生する |
使用しない | |||
タイマ・チャネル0のカウント完了で割り込み発生(INTTM00) |
使用する | |||
優先順位 (INTTM00) |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TAU0 channel 0 counter */
R_TAU0_Channel0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_timer_user.c
/* Start user code for global. Do not edit comment generated here */
volatile uint8_t g_cnt = 0U;
/* End user code. Do not edit comment generated here */
static void __near r_tau0_channel0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* Count INTTM00 */
g_cnt++;
/* End user code. Do not edit comment generated here */
}
使用例(方形波出力)
一定間隔でトグル動作を行い,デューティ50%の方形波を出力する
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TAU0 |
使用する | |||
Channel0 |
||||
チャネル 0 |
方形波出力 | |||
方形波幅 |
100μs (実際の値:100) | |||
カウント開始時にINTTM00を発生し,タイマ出力を反転する |
使用しない | |||
初期出力値 |
0 | |||
タイマ・チャネル0のカウント完了で割り込み発生(INTTM00) |
使用する | |||
優先順位 (INTTM00) |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TAU0 channel 0 counter */
R_TAU0_Channel0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
使用例(外部イベント・カウンタ)
立ち下がりエッジ100回毎にカウントする
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TAU0 |
使用する | |||
Channel0 |
||||
チャネル 0 |
外部イベント・カウンタ | |||
TI00入力可能な最大周波数 |
16000000 (Hz) | |||
TI00端子入力信号のノイズ・フィルタ使用 |
使用しない | |||
外部イベント選択 |
TI00 立下りエッジ | |||
カウント値 |
100 | |||
タイマ・チャネル0のカウント完了で割り込み発生(INTTM00) |
使用する | |||
優先順位 |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TAU0 channel 0 counter */
R_TAU0_Channel0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_timer_user.c
/* Start user code for global. Do not edit comment generated here */
volatile uint8_t g_cnt = 0U;
/* End user code. Do not edit comment generated here */
static void __near r_tau0_channel0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* Count INTTM00 */
g_cnt++;
/* End user code. Do not edit comment generated here */
}
使用例(入力パルス間隔測定)
入力端子の立下りエッジの間隔を測定する
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TAU0 |
使用する | |||
Channel0 |
||||
チャネル 0 |
入力パルス間隔測定 | |||
入力ソース設定 |
TI00 | |||
TI00測定可能なパルス間隔 |
0.125 (μs) < TI00 < 8.192 (ms) | |||
TI00端子入力信号のノイズ・フィルタ使用 |
使用しない | |||
カウント開始時にINTTM00発生する |
使用しない | |||
入力エッジ設定 |
立下りエッジ | |||
タイマ・チャネル0のキャプチャ完了(INTTM00) |
使用する | |||
優先順位 |
低 |
備考 カウント・クロックの周期は、「TI00測定可能なパルス間隔」で選択した範囲の最小値の1/2となります。この設定では、0.0625usecとなります。
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TAU0 channel 0 counter */
R_TAU0_Channel0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
r_cg_timer_user.c
/* Start user code for global. Do not edit comment generated here */
volatile uint32_t g_width = 0UL;
/* End user code. Do not edit comment generated here */
static void __near r_tau0_channel0_interrupt(void)
{
if ((TSR00 & _0001_TAU_OVERFLOW_OCCURS) == 1U) /* overflow occurs */
{
g_tau0_ch0_width = (uint32_t)(TDR00 + 1U) + 0x10000U;
}
else
{
g_tau0_ch0_width = (uint32_t)(TDR00 + 1U);
}
/* Start user code. Do not edit comment generated here */
/* Get TAU0 channel 0 input pulse width. Pulse width(usec) = (Period of count clock(usec) * g_width) */
R_TAU0_Channel0_Get_PulseWidth((uint32_t *)&g_width);
/* End user code. Do not edit comment generated here */
}