• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:AKI-H8/3048Fでのタイマ割り込み)

AKI-H8/3048Fでのタイマ割り込み

このQ&Aのポイント
  • AKI-H8/3048Fでのタイマ割り込みを実装する方法について教えてください。
  • int_imia0()関数が実行されない問題が発生しています。
  • 割り込みを使わない方法についても教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • R32C
  • ベストアンサー率39% (115/290)
回答No.2

タイマインタラプトイネーブルレジスタ(TIER)の 設定し忘れのみのように思います。 #GDLのリンク参照しました。ベクタ登録等必要なしとは、 #便利にしているんですね。参考になりました。

chomoo00
質問者

補足

無事にRAMに転送し動作させることが出来ました。 具体的にはソースで ITU0.TIER.BIT.IMIEA = 1; が抜けていたこと。 それとGDLでのリンカのスクリプトファイル(h8rom.x等)をRAM用に書き換える際に http://d.hatena.ne.jp/gimme2s/20051114 を参考にしていたのですが、モニタプログラムで「?」としメモリの配置を見ると Monitor Vector 00000 - 000FF Monitor ROM 00100 - 07E65 Monitor RAM FEF10 - FF02F User Vector FF030 - FF12F となっていたので、h8rom.xの最初を MEMORY { vectors : org =0xff000, len =0x100 rom : org =0xff100, len =128k-0x100 ram : org =0xffef10, len =4k eight : org =0xffff00, len =0x100 } にすることで無事動作することが出来ました。 アドレスの設定が間違っていると、書き込めなかったり実行できなかったり、 割り込みが出来なかったりします。 同じH8/3048F+GDL+hterm+RAMに転送という環境で使っている人に 参考になれば幸いです。

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

割り込みベクタの登録はできていますか? また、int_imia0関数は普通の関数ですが、このままでは割り込みハンドラとしては使えません。 アセンブリ言語で、レジスタの退避・復帰処理と割り込みからのリターン処理を記述し、そこからこの関数を呼び出すようにするか、__attribute__((interrupt_handler))属性を付けてやる必要があるかと思います。

chomoo00
質問者

補足

GDLを使う限りそういった宣言はいらないように思えるのですが・・ http://homepage1.nifty.com/rikiya/software/4GDL.htm

関連するQ&A