H8SX/1655のタイマー割り込みについて教えてください。
CQ出版の『今すぐ使える!H8マイコン基板』の基板の動作確認として、
基板上のLEDをタイマー割り込みで点滅させようとしたのですが動作しません。
HEWの設定上の問題と思いますが、思い当たるところがあれば教えてください。
HEW:Version 4.06.00.047
"iodefine.h"は自動生成されたものです。
---HEWのコード
#include <machine.h>
#include "iodefine.h"
unsigned long cnt0;// wait関数用
//割込み関数
#pragma interrupt( int_timer0 )
void int_timer0( void )
{
TPU0.TSR.BIT.TGFA= 0;// フラグクリア
cnt0++;
}
void wait( unsigned long wait_set )
{
cnt0 = 0;
while( cnt0 < wait_set );
}
void main(void)
{
MSTP.CRA.BIT._TPUL =0; // 低消費電力モード解除
//タイマー設定
TPU0.TCR.BYTE = 0x23; //φ/64
TPU0.TIER.BIT.TGIEA = 1;
TPU0.TGRA = 375; // 1/375
TPU.TSTR.BYTE = 0x01; // Timer Start
//ポート設定
PM.DDR = 0x08; // LED Output port
//割り込み許可
set_imask_ccr(0);
while(1)
{
wait( 500 );
PM.DR.BIT.B3 = 1;
wait( 500 );
PM.DR.BIT.B3 = 0;
}
}
//intprg.c
// vector 88 TGI0A TPU0
//__interrupt(vect=88) void INT_TGI0A_TPU0(void){/* sleep(); */}
__interrupt(vect=88) void INT_TGI0A_TPU0(void){int_timer0(); }
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
wait()関数内でcnt=0;としているのはおかしくありませんか?
これだと、せっかく割り込みが発生してcnt++;しても、メインルーチンで呼び出されるたびに0クリアされウエイトの意味がないです。修正後のwait()関数のアッセンブラ展開を確認したほうがいいかもしれない。
理由:while( cnt0 < wait_set );で何も処理がないので、コンパイラーの最適化で展開されてないかもしれない。これは、杞憂かもしれないですが念のため。NOP:(正しい書き方ではないかも)を2~3ヶ入れる。
while( cnt0 < wait_set )
{
____NOP;
____NOP;
}
以上ですが、お役に立てればうれしいです。
No.2
- 回答日時:
質問内容からでは、詳細はわかりませんが、思い当たることとして
これはROM化して動作確認したのでしょうか?
それともHEWのシリアルモニタのデバッガで確認されているのでしょうか?
後者なら、ベクタテーブル等のロケーションの変更が必要になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# プログラミング実行後の表示される値を答えよ #include<stdio.h> void main( 7 2022/05/20 00:07
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スーパーのレジで並んでいたら...
-
アセンブラのタイマー割り込み
-
AKI-H8/3048Fでのタイマ割り込み
-
一定時間操作がなかったら、と...
-
[コンピュータアーキテクチャ]...
-
ショッピング
-
割り込み処理から引数を取得す...
-
割り込み処理のシミュレート
-
電車で待機列の割り込みについ...
-
Macターミナルで実行中のプログ...
-
VBAの配列サイズとメモリに関して
-
緯度、経度の 10進法と 60進法...
-
C言語で、メモリを解放しないで...
-
なんかC言語でプログラム書いて...
-
タスクマネージャーのプロセス...
-
バックグラウンドのプロセスの...
-
TCP/IP通信時のサーバーからの受信
-
プログラミング ソースコード
-
Excel-VBAのmsgBox()の不思議
-
Webプログラムってネイティブア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
インバウンドで迷惑している人...
-
pic 複数の割り込み関数 切り分...
-
スーパーのレジで並んでいたら...
-
ショッピング
-
Excelでタイマーの一時停止する...
-
電車で待機列の割り込みについ...
-
CPUの処理量を減らすコーデ...
-
C言語でPICマイコン開発
-
【組込み】割り込み中のstatic...
-
Amazonfireタブレットにわから...
-
マイコン C言語 割り込み処理...
-
USB機器からのデータ受信による...
-
一定時間操作がなかったら、と...
-
VB.net 割り込みの禁止
-
ウォッチドッグタイマ(WDT)の...
-
電車乗車時、並んでいるのに割...
-
USJでの割り込み
-
VB6でSendKeyを利用したTab移動...
-
PICでのプログラムによるチャタ...
-
割り込み中に例外異常
おすすめ情報