>ITUでルス幅を読み取る場合、インプットキャプチャ割り込み
を用いるのが一般的ですが、センサの繰り返し周期を数Khzに
するとCPUは頻繁に割り込みを処理しなければならず、他の処
理に悪影響を及ぼす可能性があります。全体のプログラムのバ
ランスと加速度センサの使用目的等を良く考えて、必要以上に
周期を短くしないようにご注意下さい。
インプットキャプチャを使ってADXLの出力をH8に取りこみ、計
測するためのプログラムを作ってみました。で、出力波形をシ
ンクロスコープで確認したいのですが、何も波形が出てきませ
ん。プログラムを1行ずつ丹念に調べてもおかしいところはな
かったように思えたのですが。そのプログラムとスタートアッ
プル−チンプログラムを載せます。プログラムが見にくくなっ
てすみません。
*プログラム
#include <3048f.h>
extern unsigned int cnt0; /* 信号
のHighの時間を記憶 */
void main(void)
{
cnt0 = 0; /* cnt0
初期化 */
PA.DDR = 0x00; /* Port-A
は入力設定 */
PB.DDR = 0x01; /* Port-B
BIT0
は出力設定 */
ITU.TSTR.BYTE = 0x00; /* ひとまず全タイマー停止
*/
ITU.TSNC.BYTE = 0x00; /* 全タイマーは独立動作
*/
ITU.TMDR.BYTE = 0x00; /* ITUはすべて通常動作 */
ITU.TFCR.BYTE = 0x00; /*
ITU3,4およびGRA3,4,GRB3,4
は通常動作 */
ITU.TOER.BYTE = 0x00; /* ITU3,4による端子出力は
禁止 */
ITU.TOCR.BYTE = 0xff; /* 外部トリガ禁止 */
ITU0.TCR.BYTE = 0x83; /*
クロックの1/8で動作。TCNT
のクリア禁止 */
ITU0.TIOR.BYTE = 0xdf; /* 両エッジでGRAへインフ
゜ットキャプチャ */
ITU0.TIER.BYTE = 0x03; /* IMFA,IMFBによる割り込
み許可 OVIE禁止 */
ITU0.TSR.BYTE = 0x00; /* 全割り込みフラグクリア
*/
ITU0.TCNT = 0x00; /* カウントクリア */
ITU0.GRA = 0; /* GRA初期値設定 */
ITU.TSTR.BIT.STR0 = 1; /* ITU0スタート */
while(1){
if(PA.DR.BIT.B2){
/*
立ち上がりエッジの場合 */
ITU0.TCNT = 0x00;
}
/*
カウントをクリア */
else{
/*
立ち下がりエッジの場合 */
cnt0 = ITU0.GRA;
/*
値をcnt0に記憶 */
}
ITU0.TSR.BIT.IMFA = 0;
PB.DR.BIT.B0 = PA.DR.BYTE;
/*
割り込みフラグ解除 */
}
}
このプログラムでは、ITUはTIOCA1だけを使い、また、割り込
み処理をメイン関数の中で行っています。割り込みはメイン関
数でも出来るのでしょうか?
*スタートアップルーチン;STARTUP ROUTINE H8/300H
;
.cpu 300ha:20 ;H8/300H advanced 1Mbyte MODE
.import _main ;外部関数mainを定義
.export _cnt0 ;グローバル変数cnt0を定義
;
.section vect,data,locate=h'00000 ;割込みベクトルの頭
;
;割り込みベクトルテーブル
.data.l init ;1 reset vectのジャンプ先
;
.org h'0060 ;ITU0 GRAによる割込みテーブル位置
.data.l _main ;ITU0 GRAによる割込み処理先
;
.org h'00100 ;主プログラムの開始
init: mov.l #h'fff10,er7 ;SPの設定
ldc #0,ccr ;CLEAR INTERRUPT MASK,NOT USE UI BIT
jmp @_main ;関数mainへのジャンプ
.section D,DATA,locate=h'ffd00 ;変数用アドレス
_cnt0: .res.w 1 ;cnt0変数のアドレスを確保
;
.end
何がいけないのか、また、どこをどう書きなおせばいいか具体
的に説明してくださると有難いです。ものすごく長い文になり
ましたが、よろしくお願いします。
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/