- 締切済み
picマイコンプログラム手順について
お世話になります。 pic16f88とキャラクタLCDを使った工作物を考えています。 タイマ1とCCPで入力されるパルス(ロー側)幅の時間を測り 得られた時間に定数を掛けて積算し続けてLCDに表示 そして、picの電源を切るときに積算した数値をEEPROMに保存 この様なことをさせたいのですがフローチャートが作れません。 どなたかフローチャートを書いて頂けませんでしょうか? どうぞ宜しくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- pyonmae
- ベストアンサー率64% (40/62)
こんにちは。 >測定した時間に例えば”0.1”の定数を掛ける計算をさせるには >どの様な処理をしたら宜しいのでしょうか? 10で割ればOKかと。 >EEPROMのデーターは次回picに電力が供給されたとき呼び出し >再び積算を開始させたいと思っています。 初期設定で、0クリアの代わりにEEPROMから読んだ値をセットすればよろしいかと。 但し、何も保存されていない場合について考慮する必要がありますが。
- pyonmae
- ベストアンサー率64% (40/62)
こんにちは。 ざっと考えてみました。 あんまり深く考えていないので、バグっているかもしれません。 また、あんまりPICでキャプチャした事無いので、ウソが入っているかも知れません。 <初期化> CCP → キャプチャモード、立下りエッジでキャプチャ TMR1 → LOWパルスの最大時間をカウントしてもオーバーフローしないよう、周期を設定 総LOW時間変数 → 0クリアする。 <割り込み処理> エッジ方向判断(変数か何かでフラグを持っておく) 立下り →CCPR1の値を取得し、保存しておく。 CCPのキャプチャエッジを立ち上がりに変更する。 立上り →CCPR1の値を取得し、上で保存した値を引く。 その値を、総LOW時間変数に加算する。 CCPのキャプチャエッジを立下りに変更する。 <メインループ> 一定時間ごとに、総LOW時間変数を表示する。 電源断を検出したら、EEPROMに総LOW時間を保存する。 「電源を切る」と言うのが、本当の電源断を表しているのか、ソフトスイッチ的なものを表しているのか分からないのですが、どちらにしてもそれなりにハードル高いと思います。 (前者は電源断の検出およびEEPROMに書き込む間死なないようにする工夫、後者はスリープ状態への移行/復帰など) また、EEPROMに保存した値をどうするのか分からないので、放置してあります。
補足
回答頂きありがとうございます。 測定した時間に例えば”0.1”の定数を掛ける計算をさせるには どの様な処理をしたら宜しいのでしょうか? それから電源を切るという事はpicへの供給電力のことです。 EEPROMのデーターは次回picに電力が供給されたとき呼び出し 再び積算を開始させたいと思っています。 引き続きアドバイス頂けると嬉しいです。
- zwi
- ベストアンサー率56% (730/1282)
もし、電源ボタンを押したら自動的に記録してから電源を切る事を考えているのなら高度なので止めたほうが良いでしょう。記録ボタンを押してから手動で電源を切るのなら問題無いです。
お礼
回答ありがとうございます。
- Tacosan
- ベストアンサー率23% (3656/15482)
「フローチャートが作れません」って言ってるけど, 本当は「やりたいことがきちんと理解できていない」だけだったりしませんか? 「やりたいこと」がきちんとわかっているなら, フローチャートなど必要ありませんよ.
補足
たしかにそうですね、お恥ずかしい。 積算させるにはどの様にしたら宜しいのでしょうか?
お礼
ご教示いただき誠にありがとうございます。 少しずつやっていこうと思います。 またアドバイスいただけると幸いです。 締め切らずにこのままにさせて頂きます。 ありがとうございました。