> CPU側の割り込みを許可するタイミングは、割り込み要因と
なるペリフェラル側のレジスタ設定を全て完了していること、
割り込み 処理に必要な変数や配列などが確保され、必要なら
その初期化 が終わっていることが、最低限必要になります。
今回、これを踏まえてCのプログラム内でCCRの設定をしました
。このためにmachine.hを追加しました。すみませんが、また
プログラムを掲載します。
#include <3048f.h>
#include <machine.h>
#pragma interrupt(intimia1)
extern unsigned int cnt0; /* 信号
のHighの時間を記憶 */
void main(void)
{
cnt0 = 0; /* cnt0初期化 */
PA.DDR = 0x00; /* Port-Aは入力設定 */
PB.DDR = 0xff; /* 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; /* 外部トリガ禁止 */
ITU1.TCR.BYTE = 0x83; /*
クロックの1/8で動作。TCNT
のクリア禁止 */
ITU1.TIOR.BYTE = 0xdf; /* 両エッジでGRAへインフ
゜ットキャプチャ */
ITU1.TIER.BYTE = 0x03; /* IMFA,IMFBによる割り込
み許可 OVIE禁止 */
ITU1.TSR.BYTE = 0x00; /* 全割り込みフラグクリア
*/
ITU1.TCNT = 0x00; /* カウントクリア */
ITU1.GRA = 0; /* GRA初期値設定 */
set_imask_ccr(0); /* 割り込みマスクビットを
クリアします。*/
ITU.TSTR.BIT.STR1 = 1; /* ITU1スタート */
while(1){
PB.DR.BYTE=PA.DR.BYTE;
}
}
void intimia1(void){
ifPA.DR.BIT.B4)
{ /* 立ち上がりエッジの場合 */
ITU1.TCNT = 0x00;
} /* カウントをクリア */
else{ /* 立ち下がりエッジの場合 */
cnt0 = ITU1.GRA; /* 値をcnt0に記憶 */
}
ITU1.TSR.BIT.IMFA=0; /*
割り込みフラグ解除 */
}
CCR設定の記述場所は、これでいいと思ったのですが。
もう一つ質問です。馬鹿なことを聞くようですが、インプッ
トキャプチャを使った場合、シンクロスコープでADXLの波形を
確認するとしたらどんな形の波形が表示され、また、どうやっ
てパルス幅を変えることができますか?
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/