暖冬傾向で、ゴルフ場の予約が多い!
100万ポイント山分け!1日5回検索で1ポイントもらえる
>>
人気記事ランキング
ブログを作成
楽天市場
598514
ホーム
|
日記
|
プロフィール
【フォローする】
【ログイン】
パルス幅計測
で、R8の不思議なところが、カウンタにプリスケーラとリロードレジスタが付いていることです(p98)。
つまり、プリスケーラ(8ビット)+カウンタ(8ビット)=16ビットカウンタとして使用と、
ダウンカウントのみで、アンダーフロー(カウンタの値が-1になる)で自動的にリロードレジスタの値に復帰など、
データバスが8ビットで済む&コンペアマッチ用レジスタが必要ないなどと、効率的(?)な設計になっています。
まあ、詳しい説明はハードウェアマニュアル等を読むとして、ここでは実際にコードを記述します。
そうそう、CNTR0端子(タイマXの入出力)は、00と01の2箇所があるのですが(p23)、
なぜかUART(シリアル通信)機能のUCONに設定するビットがあります(p141)。
では、まずは、ベクタアドレスの記述から・・・(p73)。
.lword dummy_int ; vector 21
.glb _timer_x
.lword _timer_x ; vector 22 TIMER_X
.lword dummy_int ; vector 23
.lword dummy_int ; vector 24
.glb _int_1
.lword _int_1 ; vector 25 INT1
.lword dummy_int ; vector 26
タイマXのパルス幅計測モードでは、INT1割り込みが重要な役割を果たします(p107)。
ちなみにタイマX割り込みは、カウンタのアンダーフローで発生するので、パルス幅計測モードではあまり使わないかも。
/* グローバル変数 */
unsigned short pulse; // パルス幅計測用
/* timerX初期化 */
timer_x_init();
asm("FSET I"); // 全体の割り込み許可
/****************************************/
/* タイマX 初期化 */
/****************************************/
timer_x_init(void)
{
txs = 0; // カウント停止
while(txs == 1); // 注意事項(p242)より
txmod2 = 0; // パルス周期測定モード以外
txmod1 = 1; // パルス幅測定モード
txmod0 = 1;
r0edg = 1; // "H"レベル幅測定&INT1が立下りエッジで割り込み
txocnt = 0; // パルス幅計測モードでは0設定
txedg = 0;
txund = 0;
prex = 0xff; // フルレンジ
tx = 0xff;
txck1 = 0; // カウントソース設定 f8 = 1MHz(1us)
txck0 = 1;
cntrsel = 0; // p1_7/CNTR00/INT10使用 UART0関連レジスタのため、UART0側で注意が必要
int1ic = 0x05; // INT1割り込み許可
txic = 0x05; // timerX割り込み許可
txs = 1; // カウント開始
}
/****************************************/
/* INT1割り込み */
/****************************************/
#pragma interrupt int_1 // 割り込み処理関数指定
void int_1(void)
{
txs = 0; // カウント停止
while(txs == 1); // 注意事項(p242)より
pulse = tx; // パルス幅取得
pulse = (pulse << 8) + prex;
pulse = 0xffff - pulse;
uart_put_short_dec((unsigned short)pulse); /* パルス幅送信 */
uart_putc((unsigned char)0x0d); /* CR */
uart_putc((unsigned char)0x0a); /* LF */
prex = 0xff; // カウンタリセット
tx = 0xff;
txs = 1; // カウント開始
}
/****************************************/
/* タイマX割り込み */
/****************************************/
#pragma interrupt timer_x // 割り込み処理関数指定
void timer_x(void)
{
}
ジャンル別一覧
出産・子育て
ファッション
美容・コスメ
健康・ダイエット
生活・インテリア
料理・食べ物
ドリンク・お酒
ペット
趣味・ゲーム
映画・TV
音楽
読書・コミック
旅行・海外情報
園芸
スポーツ
アウトドア・釣り
車・バイク
パソコン・家電
そのほか
すべてのジャンル
人気のクチコミテーマ
徒然日記
離の剣よ、来たれ!劇場版モノノ怪 …
(2026-06-01 20:01:22)
避難所
オトナの秘密基地 「Kakureya2」(ハ…
(2026-04-20 12:54:05)
本日の楽天ブログラッキーくじ
シルクロードガーデン
(2026-05-19 17:13:19)
© Rakuten Group, Inc.
共有
Facebook
Twitter
Google +
LinkedIn
Email
Mobilize
your Site
スマートフォン版を閲覧
|
PC版を閲覧
人気ブログランキングへ
無料自動相互リンク
にほんブログ村 女磨き
LOHAS風なアイテム・グッズ
みんなが注目のトレンド情報とは・・・?
So-netトレンドブログ
Livedoor Blog a
Livedoor Blog b
Livedoor Blog c
楽天ブログ
JUGEMブログ
Excitブログ
Seesaaブログ
Seesaaブログ
Googleブログ
なにこれオシャレ?トレンドアイテム情報
みんなの通販市場
無料のオファーでコツコツ稼ぐ方法
無料オファーのアフィリエイトで稼げるASP
ホーム
Hsc
人気ブログランキングへ
その他
Share by: