ニックネーム: 居酒屋ガレージ店主
★ZAQのBlogari停止のため、あれこれ「データ吸い出し」対策しています。 新規記事はとりあえず停止。 コメント書き込みはまだ有効です。 (JH3DBO 下間憲行)
2013年03月27日(水)
AVRマイコンのCコンパイラ
先日のArduino初体験でも同じコンパイラを使っていたわけなんですが、
今回は環境が「AVR studio」。
どうも思うように制御できません。

過去、AVRマイコンの自作プログラムはアセンブラ。
微妙なタイミングも、思いどうりに制御可能。
ところがコンパイラだと、最適化の絡みもあるんですが、どうもうまいこといきません。

★悩んでいる現象

・割り込みルーチンの中で2バイトデータを操作しています。
・メイン側では、いったん割り込み禁止してからそのデータを
 処置(読んだり書いたり)しなくちゃなりません。
 ワードなんで1バイトを2回に分けて読み書きするんで、
 2回の途中に割り込み処理が入ると前後で値が違ってしまう
 可能性が発生します。
・ところが、割り込みを再開する命令の位置がプログラムした
 とおりの場所に入らないんです。
 なぜだか、割り込みを有効にしてからデータを読もうとするんです。
・割り込み禁止した意味がないやん、てなことになっています。
 なぜ?
 内部の16ビットレジスタではうまく行くんですが、RAMの読み込みだと×。
 RAMの書き込みは○。
 う〜む。


2013年3月27日 16時55分 | 記事へ | コメント(0) | トラックバック(0) |
| ・電子回路工作 |
トラックバックURL:http://blog.zaq.ne.jp/igarage/trackback/3315/
※ブログ管理者が承認するまで表示されません
コメントを記入  
お名前(必須)
 
パスワード:
 
メール:
 
URL:
 
非公開:  クッキーに保存: 
※非公開にチェックを入れると、管理者のみにコメントが届きます。
ブログの画面には表示されません。
captcha


※画像に表示されている文字を入力してください(半角・大文字/小文字の区別なし)。
文字が読みづらい場合はこちらをクリックしてください。
小文字 太字 斜体 下線 取り消し線 左寄せ 中央揃え 右寄せ テキストカラー リンク