ここ数日やったこと.
本業でばたばたしてましたが,その合間にやったこと.PICの本に一通り目を通し,ようやく仕組みが分ってきたので実験開始.アセンブラは分ったけど,Cが使えればCが簡単なので,CCSのコンパイラで赤外線送受信の実験をしてみました.まずは,4MHzのクロックでPICを動かし,単純にLEDを38kHzで(13マイクロ秒のウエイトをはさんで)ON,OFFして受信機の信号を見た...ところが受信できません.オシロでLEDの信号を見ると周期が長すぎます.コンパイラで出力されたアセンブルリストを見ると,処理時間が待ち時間より長かった.そこで,クロック周波数20MHzに上げて待ち時間を加減して周波数を約38kHzにあわせこむと受信機が反応してくれました.それでわかったこと,Cでは冗長になってしまうので,クロックをあげないと38kHz程度の処理でも厳しい.次は,LEDをパルス状に発振させて受信.これもなんとか出来ました.ところがいろいろ試しているうちに,20MHzのセラロックが壊れたのか,発振しなくなりました.予備のセラロックがなかったので,Webを調べ,発振回路と相性が悪いときの対処として抵抗やコンデンサを付加して見ましたが,発振せず.結局,単純で高速処理を要するときにはアセンブラで書いた方がいいってことですね.アセンブラで書けば,直接ステップ数をカウントできて,無駄にウエイトを入れる必要も無くクロック周波数も落とせるから消費電力も抑えられる,というわけですね.CがあるならCで書けばいいのに,と思ったですが,アセンブラで組んでいる皆さんの気持ちがわかりました.でも,癖が無いといわれるAVRなら話は違ってくるのでしょうか?