こんにちは、中学部長です。
今年も終わりですね。思えば、テスト前の投稿以来一回も投稿していませんね。すいません。言い訳しますと、テストがあって、タブローがあって、クラブがあって、宿題があって・・・
で、今AVRをやっているんですが、koujiが少し前にいっているように、AVRのコンパイラの最適化により、wait関数が実行されていませんでした。なので引数にvolatileをつけなければいけませんでした。僕はここ(なぜかうごきません - buttのところ)を読むまでそのことに気づかなかったわけですが・・・(H8の時はつけていなくてもいけていたので、完全に忘れていました。マイコンが違うのですから、H8の気分ではいてはいけませんね。)
chibieggさんの詳しいコメントもあり、正確なwait関数はできたのですが、(chibieggさんありがとうございます!)どうせなら、タイマーを使ってwait関数を作ろうと思います。(タイマーの練習をかねて)今年の正月もロボットです。
ところで、中1君の状況ですが、AVRの実験ボードは一人完成させ、H8のマザーボード制作に入っています。(かなり苦労していますが。昨日完成したというのでプログラム書き込みをしようととしましたができませんでした)ほかの子はAVRのボード制作orライントレーサー制作です。頑張れ!プログラム担当はAVRを頑張ってます。
RSS feed for comments on this post. TrackBack URL
ちなみに、_delay_msや_delay_us関数を使うと大体は正確にDelayがかけれるのです。
が、割り込みを使っている場合、
例えばAD変換の割り込みが定期的に利用し変換結果を変数に代入してるなど、
では、delay_ms関数等は正確ではなくなります。そういう場合はタイマーを使うかdelayの間だけ割り込みを禁止するという手もあります。
コメント by chibiegg — 2009年12月27日 @ 21:08
なるほど~
ありがとうございます。参考になります。
コメント by Flanker — 2009年12月28日 @ 00:41