おはようございます。
としぶぅ~です。
今日は少し冷えますね・・・風邪引かないように気つけないと・・・・
さて本日は。。。。
昨日、一度LCDに表示が出たけどまたでなくなった・・・・という状況をみて、Delayはちゃんと動いているのか?
外部クロックにしたし。。。。時間がずれている?
とか疑いがわいたのでとりあえず、Delayの関数を使って時間がちゃんと合うように調整しました。
main.cで
//無限ループ
while(1){
clear_bit(PORTB,5);
DelayMs(15);
set_bit(PORTB,5);
DelayMs(15);
}
こんな感じで”DelayMs()”関数を仕込んでポートをオシロであたりました。
DelayUs()を使用した場合、50を入力すると、大体75uSくらいになります。。。。uSだとかなり誤差でます。。。
Msだとどうか・・・・
DelayMs(1)で1msを見込みますが・・・・1.5mSくらいになってしまう。。。。ずれが大きい!
で、Delay.c内を少しさわって調整!!
DelayMs(unsigned char cnt)
{
#if XTAL_FREQ
do {
DelayUs(996);
} while(--cnt);
#endif
#if XTAL_FREQ > 2MHZ
unsigned char i;
do {
i = 4;
do {
DelayUs(175); ←ここを変更して調整!!250←175に
} while(--i);
} while(--cnt);
#endif
}
上記を修正しました。
10,15といれてみましたが、とりあえず10msと15msが出ているようです。
時間調整はとりあえずOKです。
さて。。。。いよいよ本題!
LCDをさわります。
何をさわったかというと、LCDのマニュアルをよんでいると。。。。!?
ん???
このやりかた?
今までよく動作していたな??
というところを発見!
イニシャライズの手順がプログラムと違う(^^;
早速変更。。。。。結構違っているので手間がかかりました。。。。
修正すると!
「でたっ!」
なんと・・・・初期化の手順が違っていた・・・・・でも今まで違ったまま表示がでていたのか(笑)
ま、これで現状のプログラムを基本プログラムにします。
いいですね。。。。I2C制御のLCDモジュールが完成です!!
ちょっと表示が遅いかな。。。。I2Cの関数をもう少し調整しなければ・・・・
ま、モジュール化完了!!
かな~り時間がかかってしまいましたが。。。。なんとかこぎつけました!
さて。。。次は。。。。ジャイロモジュールでもさわってみますかね
今日はこの辺で・・・・それではまた(^o^)
みなさま本日もよい一日を~