- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
PSoC 4000S Prototyping Kit でディープスリープモード以下の低消費電力モードにして
1~2時間程度の間隔で数秒~数十秒程度アクティブモードで処理を実行したいのですが、実現する方法はありますか?
よろしくお願いいたします。
解決済! 解決策の投稿を見る。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
Wakatsuki-san,
PSoC 4000Sのディープスリープモードに、WDTだけはアクティプ です。PSoC 4000S WDTの一番長い周期は2sです。
1~2時間程度の間隔でければ.... I2Cマスタを使用する場合は、I2Cウェイクアップをお勧めします。
WDTのISRに、ユーザーカウンタ(グローバル ヴァリアブル)を使用するをお勧めします。
For example:
/*************************Pseudo code**********************************/
WDT_ISR()
{
/* This is NOT TRUE 1~2 hour sleep then wake up, it is just sleep-wakeup-sleep-wakeup-sleep-wakeup...for 1~2 hours */
WDT_Clear();
Soft_Counter++;
}
...
...
main()
{
...
for(;;)
{
...
if (Soft_Counter>=N)
{
Soft_Counter = 0;
/*Do user task*/
}
else
{
/* Enter Deep Sleep */
}
...
}
...
}
/*************************Pseudo code**********************************/
よろしくお願いいたします。
Ryan
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
Wakatsuki-san,
PSoC 4000Sのディープスリープモードに、WDTだけはアクティプ です。PSoC 4000S WDTの一番長い周期は2sです。
1~2時間程度の間隔でければ.... I2Cマスタを使用する場合は、I2Cウェイクアップをお勧めします。
WDTのISRに、ユーザーカウンタ(グローバル ヴァリアブル)を使用するをお勧めします。
For example:
/*************************Pseudo code**********************************/
WDT_ISR()
{
/* This is NOT TRUE 1~2 hour sleep then wake up, it is just sleep-wakeup-sleep-wakeup-sleep-wakeup...for 1~2 hours */
WDT_Clear();
Soft_Counter++;
}
...
...
main()
{
...
for(;;)
{
...
if (Soft_Counter>=N)
{
Soft_Counter = 0;
/*Do user task*/
}
else
{
/* Enter Deep Sleep */
}
...
}
...
}
/*************************Pseudo code**********************************/
よろしくお願いいたします。
Ryan
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- Permalink
- 印刷
- 不適切なコンテンツを報告
RyanZ_36 様
回答いただきありがとうございます。
方法について了解しました。
グローバル変数のカウンタを使って実現する方法を試してみたいと思います。