ID非公開
ID非公開さん
2012/1/6 14:03
1回答
H8SXを使ったタイマー割り込みについて質問があります。タイマー1をLED2を1秒間点ける為に使い、タイマー2を割り込みではなく50msecの時間稼ぎに使おうとプログラムを作りましたが、うまく動作しません。
H8SXを使ったタイマー割り込みについて質問があります。タイマー1をLED2を1秒間点ける為に使い、タイマー2を割り込みではなく50msecの時間稼ぎに使おうとプログラムを作りましたが、うまく動作しません。 LED2が点かず、LED1が点きっぱなしになってしまいます。どこがおかしいか教えて頂けないでしょうか? #include <machine.h> #include "iodefine.h" enum STATUS{ IDLE, BUSY_LOW, LED2_HOLD }; enum STATUS stat = IDLE; extern unsigned char *p_FGPIO_AUDIO_0; extern unsigned char *p_FGPIO_AUDIO_1; extern unsigned char *p_FGPIO_AUDIO_2; extern unsigned char *p_FGPIO_AUDIO_3; unsigned char cnt; unsigned char busy; unsigned char tally = 0; void initTPU(void) { MSTP.CRA.BIT._TPUL = 0; /* TPU0-TPU5迄を使える状態にする */ TPU.TSYR.BYTE = 0; /* 同期は使わないので0で良い */ } void initTPU0(void) { TPU0.TMDR.BYTE = 0; /* バッファ動作ではなく通常動作なので0で良い */ TPU0.TIOR.WORD = 0; /* アウトプットコンベア/インプットキャプチャ使わないので0で良い */ TPU0.TCNT = 0; /* 0からカウント開始(カウントしていく) */ TPU0.TCR.BYTE = 0x22; /* TGRAのコンペアマッチでクリア 周辺クロック1/16でカウント */ TPU0.TGRA = 7500; /* 10msec(7500回数えて) */ TPU0.TIER.BIT.TGIEA = 1; /* カウント値が来たら割り込み要求 */ TPU.TSTR.BIT.CST0 = 0; /* カウント停止 */ } void initTPU1(void) { TPU1.TMDR.BYTE = 0; /* バッファ動作ではなく通常動作なので0で良い */ TPU1.TCNT = 0; /* 0からカウント開始(カウントしていく) */ TPU1.TCR.BYTE = 0x22; /* TGRAのコンペアマッチでクリア 周辺クロック1/16でカウント */ TPU1.TGRA = 7500; /* 10msec(7500回数えて) */ TPU.TSTR.BIT.CST1 = 0; /* カウント停止 */ } void itu1_wait(unsigned int wait_time1) { unsigned long i; TPU.TSTR.BIT.CST1 = 1; /* カウント開始 */ for(i=0; i<wait_time1; i++){ do{ /* TGFA == 1になる迄繰り返す */ }while(TPU1.TSR.BIT.TGFA == 0); /* TCNT=TGRAになる迄待つ(1mS) */ TPU1.TSR.BIT.TGFA = 0; /* 検知フラグを戻して再開 */ } TPU.TSTR.BIT.CST1 = 0; /* カウント停止 */ return; } void CHKBUSY(struct numtec num, unsigned char *p_hosotyu1, unsigned char *p_hosotyu2) { p_FGPIO_AUDIO_3 = &FGPIO_AUDIO_3; busy = FGPIO_AUDIO_3 & BIT0; //BUSYが働いていない時、busy=0 switch(stat){
C言語関連・423閲覧・50
ベストアンサー
ソース、途中で切れてる...というか、これからが本番って感じだけど。 これを全部他人にデバッグさせようというのはムシがよすぎる。 全部をいっぺんにやろうとして動きませ~ん、じゃなくてデバイスの動作や関数を切り分けて部分部分動くものを作ってそれを組み上げられるようにならないと。
質問者からのお礼コメント
ご回答ありがとうございます。タイマー割り込みの使い方について完全に把握していませんが、問題は解決しました。入力待ちで止まっていました。お騒がせしました。
お礼日時:2012/1/11 9:42