Renesas Community
Search Community
User
Join or sign in
Site
Search Community
User
Renesas Engineering Community
FAQ
HELP
More
Cancel
Forums & Groups
English Community
中文社区(Chinese Community)
More
Cancel
かふぇルネ
forums-groups
beginners
More
Cancel
beginners
002: 初心者向けフォーラム
RL78/G13でのRAM上割り込みについて。
Home
Forum
Tags
More
Cancel
New
Replies
5 replies
Subscribers
381 subscribers
Views
5078 views
Users
0 members are here
割り込み
ram
セルフプログラミング
RL78/G13
フラッシュライブラリ
割り込み関数の指定方法
beginner
RulzAdmin_beginner
FSL_ChangeInterruptTable
Options
Share
More
Cancel
Related
RL78/G13でのRAM上割り込みについて。
みなみ
over 6 years ago
みなさんこんにちは、みなみです。
RAM上での割り込みについての質問です。
環境はRL78/G13 R5F101SH、CS+CACXでE1を使ってデバッグしています。
RAM上で割り込み処理をしたいときは、フラッシュライブラリのFSL_ChangeInterruptTable()でRAM上の指定の番地に飛ぶように設定する認識でいます。
現在12ビットインターバルタイマーの起動後に、上記の関数を実行することでRAM上の指定番地に飛ぶことが確認できています。
しかし、飛ぶのは1回だけでそれ以降は割り込みが発生しません。
関数の説明を見ると以下のようなことが書かれているので、これが関係あると思うのですがその手段が分かりません
「本関数実行後は割り込みの種類をユーザ側で判断する必要があるため、割り込みフラグは自動的にクリアされません。
割り込み種類の判断後、ユーザ側でクリア処理を行う必要があります。 」
どうすればいいのでしょうか?
宜しくお願いします。
Parents
わわい
over 6 years ago
わわいです
チョコさんに加えて。。
割り込み処理で呼び出される関数呼び出しでは、通常の関数とは形式が違うことが多いです
#具体的に言うとサブルーチンの復帰命令が通常の呼び出しと割り込み/例外呼び出しとで違う
その割り込みベクタから呼び出されるRAM上の関数はちゃんとその割り込み関数の形式となっているでしょうか。
それが違うと関数からの戻り番地が狂ってしまうため暴走することになります
んで、その割り込み関数の指定方法ですが、ルネサスのツールチェインでは、その関数の定義を
#pragma interrupt(ほにゃらら)
と記述する事が多いです。が、そこら辺の詳しいことはお使いのツールチェインのマニュアルを見て調べてみてください。
Cancel
Up
0
Down
Reply
Cancel
わわい
over 6 years ago
in reply to
わわい
わわいです
それからもうひとつ。
そのRAM上の割り込み関数というのはどういうふうにRAM上に展開しているのでしょうか。
ふつう、こういうことをする場合には、実行アドレスをRAM上のアドレスとして指定した関数を、フラッシュ上のアドレスに展開しておき、実行時にフラッシュからRAM上にコピーして実行させる、とややこしいことをするんですが、ここらへんのアドレス指定がうまくいかないとこれまた暴走することになったりします。
ということで、デバッガで割り込み関数でステップ実行させ、どこでプログラムが暴走するか(メモリのない領域にジャンプするか)、をみるとどこでおかしなことになってるか、がわかるとおもいます
Cancel
Up
0
Down
Reply
Cancel
Reply
わわい
over 6 years ago
in reply to
わわい
わわいです
それからもうひとつ。
そのRAM上の割り込み関数というのはどういうふうにRAM上に展開しているのでしょうか。
ふつう、こういうことをする場合には、実行アドレスをRAM上のアドレスとして指定した関数を、フラッシュ上のアドレスに展開しておき、実行時にフラッシュからRAM上にコピーして実行させる、とややこしいことをするんですが、ここらへんのアドレス指定がうまくいかないとこれまた暴走することになったりします。
ということで、デバッガで割り込み関数でステップ実行させ、どこでプログラムが暴走するか(メモリのない領域にジャンプするか)、をみるとどこでおかしなことになってるか、がわかるとおもいます
Cancel
Up
0
Down
Reply
Cancel
Children
No Data