16ビット・タイマRJ0のパルス幅を読み出します。
備考1. 本 API 関数を呼び出しは、16ビット・タイマRJ0をパルス幅測定モード/パルス周期測定モードで使用している場合に限られます。
備考2. パルス幅測定中にオーバフロー(2回以上)が発生した場合、正常なパルス幅を読み出すことはできません。
[指定形式]
#include “r_cg_macrodriver.h”
void R_TMRJ0_Get_PulseWidth ( uint32_t * const active_width );
[引数]
I/O |
引数 |
説明 |
O |
unit32_t * const active_width; |
TRJ0IO端子から読み出したアクティブレベル幅を格納する領域へのポインタ |
[戻り値]
なし
使用例(タイマモード)
一定間隔で割り込み関数に入り、その回数をカウントする
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TMRJ0 |
使用する | |||
機能 |
タイマモード | |||
カウントソース設定 |
自動 | |||
タイマ値 |
100μs (実際の値:100) | |||
カウンタがアンダフローしたとき割り込み発生(INTTRJ0) |
使用する | |||
優先順位 |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TMRJ0 counter */
R_TMR_RJ0_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_tmr_rj0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* Count INTTRJ0 */
g_cnt++;
/* End user code. Do not edit comment generated here */
}
使用例(パルス出力モード)
一定間隔でトグル動作を行い,デューティ50%の方形波を出力する
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TMRJ0 |
使用する | |||
機能 |
パルス出力モード | |||
カウントソース設定 |
自動 | |||
タイマ値 |
100μs (実際の値:100) | |||
出力(TRIJO0) |
“H”から開始 | |||
出力許可(TRJO0) |
使用しない | |||
カウンタがアンダフローしたとき割り込み発生(INTTRJ0) |
使用する | |||
優先順位 |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TMRJ0 counter */
R_TMR_RJ0_Start();
while (1U)
{
;
}
/* End user code. Do not edit comment generated here */
}
使用例(イベントカウンタモード)
立ち下がりエッジ100回毎にカウントする
[波形例]
[GUI設定例]
タイマ |
使用する | |||
TMRJ0 |
使用する | |||
機能 |
イベントカウンタモード | |||
カウント値 |
100 | |||
TRJIO0入力フィルタ使用 |
使用しない | |||
TRJIO0イベント入力 |
常に有効 | |||
TRJIO0エッジ極性選択設定 |
片エッジ | |||
TRJIO極性切り替え設定 |
TRJIO0入力の立ち下がりエッジでカウント、“H”からTRJO出力開始 | |||
出力許可(TRJO0) |
使用しない | |||
カウンタがアンダフローしたとき割り込み発生(INTTRJ0) |
使用する | |||
優先順位 |
低 |
[API設定例]
r_main.c
void main(void)
{
R_MAIN_UserInit();
/* Start user code. Do not edit comment generated here */
/* Start TMRJ0 counter */
R_TMR_RJ0_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_tmr_rj0_interrupt(void)
{
/* Start user code. Do not edit comment generated here */
/* Count INTTRJ0 */
g_cnt++;
/* End user code. Do not edit comment generated here */
}