AVR0/1シリーズで省電力な光センサーを作ってみた。(改良版)

以前の投稿では、RTC設定変更時のCPUクロック変更により消費電流が一時的に増加してしまうため改良してみた。

AVR0/1シリーズで省電力な光センサーを作ってみた。

省電力化にはCPUクロックを思いっきり下げて低速駆動するのが効果的だ。ということでCPUを32KHzクロックで駆動しているため1サイクルに約30usもかかってしまう。劇おそっ!

【光センサー(緑色)の出力でLED(黄色)を点灯させる】

【消費電流】
消費電流は80uA程度で安定しているがAC出力がONのときに消費電流が若干増えるのはなぜだろう?

AC入力にはヒステリシスをかけているが外部ノイズ等の影響によりAC出力(0=PIN_AC_OUT)がバタつく可能性があるためソフトウェア処理によりバタつかない出力(1=PIN_OUTPUT)を追加してみた。

【修正履歴】
2024-02-11
ヒステリシスをかけていたが精度が悪くなるため禁止した。

【ファームウェア(Microchip Studio)】
新しいAVRシリーズはVPORTxによりビット操作IO命令が使えるようにはなっているがVPORTxであっても今までのようにコンパイラがビット操作命令に変換してくれないためビット操作マクロ(SBI/CBI)を作ってみた。ちなみにIO空間以外のビット操作は複数命令となるためアトミックに実行できるようにしてある。