• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PIC12F683 のULPW機能につきまして)

PIC12F683のULPW機能を使った電力制御について

このQ&Aのポイント
  • PIC12F683の機能のUltra Low-Power Wake-upを使用して電力制御を行う方法について説明します。
  • 質問者はGP0に抵抗とコンデンサを接続して動作させ、オシロでの波形確認も行ったが、しばらくするとGP0がHiのままになる現象に遭遇している。
  • GP0がHiのままになる現象についての情報を求めている。

質問者が選んだベストアンサー

  • ベストアンサー
  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.2

当方 PIC12F683 の手持ちが無いので試験できません ULPWU割り込みは、ポート変化割り込みを利用しています、割り込み発生時にGPIOのリードを行わないと連続して割り込みがかかります、(割り込み条件を満たしている為、INTCON.GPIF フラグが解除されない) 参照 (PORTBピン変化割込みとは) http://homepage3.nifty.com/mitt/pic/pic1320_08.html GP0=H 出力ポートに設定して外部コンデンサを充電してからGPIOのリードを行いポート変化割り込み条件の再設定を行います。

pop_ohshima
質問者

お礼

koujikuuさん、ご助言ありがとうございます。 解決しました。 原因は、やはりULPWUをインターバルとするSLEEP関数の部分の順番(手順)が違っていました。 GP0をOUTPUTしてHiを送りコンデンサに充電した後の処理で、GP0をINPUTにしてからULPWUEビットをONにしていたのがNGでした。 正しくは、GP0をINPUTにする前に、ULPWUEビットをON、IOCの0ビットをONにすることでうまく動作するようになりました。 Mikro-Cで書かれたULPWUのプログラムgた中々ないので後日、時間あればソースを公開させて頂きます。 ありがとうございました。

その他の回答 (1)

  • koujikuu
  • ベストアンサー率43% (429/993)
回答No.1

ULPWU機能は使用したことが無いので見当違いかも知れません GP0の弱プルアップ機能が有効になっているので、外部コンデンサが常時充電状態なのでは? (弱プルアップは、VDDとGP0に数KΩの抵抗が入っているのと同じ) データシート FIGURE 4-1: BLOCK DIAGRAM OF GP0 参照 http://akizukidenshi.com/download/ds/microchip/pic12f683.pdf

pop_ohshima
質問者

お礼

koujikuuさん、アドバイスありがとうございます。 弱プルアップしていましたので無効にしてみましたが、今度は、スリープ状態から抜けなくなりました。 一発目の充電からスリープに入って、そのまま帰ってこない状態です。 そもそも、当初に確認でした「のこぎり波」もきちんと出ていたのか不安になりました。

pop_ohshima
質問者

補足

その後、いろいろとやっていたら、どうやらASM命令のSLEEPで戻ってこないような感じでした。 ますます、どツボ状態です。

関連するQ&A