ここのところ、AVRでいろいろやって楽しんでいますが・・・
謎も多いので、調子に乗って開発環境を最新化するという暴挙に出てみました。
AVR Studio を Ver4.17 Build 666 に
WinAVR を 20090313 に
さて、これが吉と出るか凶と出るか・・・
まずは、これまでインストールしてあったAVR StudioとWinAVRをあっさりとアンインストールして、新バージョンのインストールをしました。
さて、液晶に"HELLO"と表示されるプログラムを動作させてみると・・・
早くも「凶と出ました」(苦笑)
"HELLO"と表示されるはずが・・・"■oooo"と表示されます。
やっぱり、最新化は危険な賭けであったか・・・
しかし、LEDを光らせたりする限りは動作するようです。
そうすると、ダメなのはLCDへの表示ってことなのですかねぇ?
だとすると、何かタイミングとかかもしれない、ということでプログラムを見てみると、時間待ちを単純ループで実施している部分がありました。
ここで、魔法の呪文 volatile を入れてみると・・・
やっと、"HELLO"が表示されました。
LCD用の時間待ち関数は
void lcd_wait( volatile long m )
{
while( m-- > 0 );
}
こんな感じです。 引数に625を与えると、大体1ms待ちというところでしょうか。