こんばんわ
としぶぅ~です。
夜はだいぶん涼しいですね。。。。窓開けてると少し寒いです。
今日は昨日の続きを時間見てやってみました。
昨日問題なっていた、なにも出力できないくなる件。。。わかりました。
受信の割り込みフラグが立ちっぱなしで。。。ずっと割り込みが入りっぱなしになっていた。。。
RCIFをクリアしたらとたんに動き出した。。。。ミスです^^;
上記を修正して、シリアルのところはともかく。。。。どうも時分割の部分が動いていない??
ような動きなので少し確認。
まず1msごとに割り込みかかっているか??
割り込み来るたびに”H”→”L”→”H”→・・・とポートをぱたぱたやらせて確認。。。
一応、1周期2ms・・・・1msごとに出力を反転させているので、ちゃんと動いているようです。
で、おかしいなと思っているのが4msごとに切り替わるはずの処理が。。。
埋め込んでもまともに動いてくれない。。。なぜ。。。
if(tmr_4ms_up == 1){
if(test_bit(PORTB,0)){ ←ここにDEBUG処理を埋め込む
clear_bit(PORTB,0);
}else{
set_bit(PORTB,0);
}
tmr_4ms_up = 0;
switch(tmr_cnt_up){
case 0: ad_4ms(); //処理1 ADを実施(20120920追加)
break;
case 1: disp_ad3(); //処理2 ADを実施(20120920追加)
break;
case 2: tx1byte(0x4F); //処理3 ←ここの処理が飛ばされる
tx1byte(0x4B);
break;
case 3: //処理4
break;
case 4: //処理5
break;
}
}
上記の位置にさっきと同じポートをパタパタさせる処理を入れてみる。
4msごとにぱたぱたしているので、問題ない。
動作は問題ないようなので、上記の処理が入るたびに止まるようにブレイクポイントをいれて、
止まったときのカウント値:tmr_cnt_upを確認していく。。。
どうも、”2”だけ飛ばされてしまう。。。。
なぜか???
何度やっても同じ。
悩んでいたが。。。。わかりました。
これはLcdの表示に時間がかかりすぎていて、2カウント分消費してしまうため、飛ばされている・・
なんだか。。。。^^;
このLCDを使用するときは気を付けないといけません。
表示のための時間がかかりすぎます。
とりあえず、”2”の位置をはずして埋め込めば動作することがわかりました。
こんな感じ。。。なんか通信はできているようです。
しかし、やはり文字化けの嵐です。
これも追跡です。。。
かなり時間かけてやりました。
とりあえず出力波形を見る限りボーレートも、意図したデータも出力されているように見えます。
他になにか忘れているものあるのだろうか・・・・・わからん^^;
出力データは”4Fh”(”O”)、ボーレートは38.4Kbps。。。。問題ないように見える。。。
何が問題なんだろうか。。。。謎です。
まだまだつづく・・・・シリアル・・・・^^;
ま、とりあえず今日はこの辺で。。。。
おやすみなさい(^o^)/