おいふぉりーのぶろぐ

きっと趣味のブログに違いないです!!

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Recursion not permitted

こんなエラーメッセージが出るコンパイラって…
そうです。PICです。PICマイコンのアーキテクチャだと、スタックはRAMの一部を用いるのではなく、完全に独立して存在するので…簡単に言うと、ソフト側から自由に操作できません。なので、関数の呼び出しアドレスはハードウェア的にスタックに積まれますが、引数はスタックに詰めないので、再帰的な呼び出しは不可能です。スタックのレベルも8レベルしかありませんし。PICに限らず、組込みで再帰呼び出しをするのはご法度な気もしますが。

そもそも、再帰的な関数をつくるつもりはなかったんですが、意外と知らないうちにできてしまうものなんですね。
どんなプログラムを書いたかって言うと↓
ちなみに、秋月の VFD のプログラムです。
vfd_power_on()
{
if (電源が OFF) {
電源を ON にする;

vfd_send_command(初期化コマンド);
}
}

vfd_send_command(コマンドの ID)
{
vfd_power_on(); // 念のため電源を ON にする

コマンド送信;
}


何がしたかったかって?vfd_send_command()を呼び出したとき、もし電源が入ってなかったら自動的に電源を ON したかっただけなんだけど…よく見るとvfd_send_command() が再帰呼び出しになってしまいますよね。う~ん、再帰にならない回避方法はないですかねぇ~。今回は、しかたなく"念のため電源を ON にする"というところの vfd_power_on() の呼び出しをなしにしまいましたが。
  1. 2006/10/15(日) 18:50:44|
  2. ハードウェア開発
  3. | トラックバック:0
  4. | コメント:0
<<疲れたぁ~ | ホーム | 秋月VFDに手間取った・そのワケとか。>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバックURLはこちら
http://tm86eublog.blog42.fc2.com/tb.php/150-233c0de6
この記事にトラックバックする(FC2ブログユーザー)

来客数

プロフィール

Euphorie

Author:Euphorie
"おいふぉりー"って呼んでくださいな☆
ハードウェアとかソフトウェアとかの開発に興味があったり。。。
連絡先は上の画像。

最近の記事

最近のコメント

最近のトラックバック

月別アーカイブ

カテゴリー

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

RSSフィード

リンク

このブログをリンクに追加する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。