2020年4月8日(水) 23:59
マイコンをセットせず、電源だけ接続して正常に電圧が来ていることをチェックする。出来が悪いと、ここで煙が出るかもしれない。
正常な電圧を確認。通電したとたんマイコンが壊れる、という事態は避けられる。
次に、液晶ディスプレイの動作確認。カウントアップする数字を表示し続けるプログラムを書き込み、動かす。
すると、数字が1で止まったまま、ブザーが鳴りっ放し。
ブザーに関しては、トランジスターで電流増幅することで論理が逆になることを忘れていただけだった。出力Lでブザーが鳴り、出力Hで止まる。
しかし、LCD表示が止まる原因は不明。
タイマーやDMAは犯人ではなく、結論としてI2Cバスが永久BUSYになっていた。
どうもハードウェアI2Cを使う場合、ソフトウェアI2Cのために作ったルーチンそのままでは不都合があるようだ。しかし、表示終了後に1ミリ秒待つだけで問題無くなった。正しくは、何らかのステイタスが変化したことを確認せねばならないのだろう。
しかし、メインループ内の本来の処理だけで時間は消費するだろう。ひとまずWDTを有効にして保険を掛ける、だけにしておく。
続いて、コントロールボックスのスイッチを読んだり、AD入力をDMAで取得する、など実用的な機能の動作確認に移る。
コントロールボックス右のスイッチを、下げると1が取得され上げると0が取得される。さすがに、デジタルなスイッチ入力は問題なく読める。
だが、アナログは取得できない。
ならばDMA転送せずに確認すべきだが、DMAを使う場合と使わない場合で設定がかなり異なるので、非常に面倒臭い。
基板ハードの作成は非常に面倒臭いが、ソフトウェアも面倒なことに変わりはない。
written by higashino [ファイバーレーザー] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4