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/
※ブログ管理者が承認するまで表示されません