PSoC 4 で BOD Reset を検出する - Community Translated (JA)
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Community Translated by MoTa_728816 Version: **
BOD (ブラウンアウトディテクト) 回路は電源電圧が危険な可能性がある状態のときにデバイスにリセットを作動させて動作の保護やロジックの保持を行います。BOD 回路は VCCD を監視して、もし電圧レベルが安全な動作を行うための最小 VCCD 電圧よりも下がった場合にリセットを発生させます。システムは再び電源電圧が有効になるまではリセットを解除しません。BOD のイベントによっては、VCCD は最小ロジック動作電圧よりも下がってはいますが、最小ロジック保持電圧よりも高いところで留まる場合があります。
もし VCCD が最小ロジック動作電圧より下がり、しかし最小ロジック保持電圧を割っていない場合、BOD リセットが発生します;しかしレジスタの値は保持されます。もし VCCD が最小ロジック動作電圧と最小保持電圧のどちらよりも下がった場合、レジスタ値が保持されない BOD リセットが発生します。このレジスタ値の保持はスペシャルレジスタ、PWR_BOD_KEY を使用して検出することが可能です。PWM_BOD_KEY
レジスタの値はファームウェアからの書込みか非保持 BOD リセット、XRES、POR のような非保持リセットイベントが発生した場合だけ変更されます。
ブラウンアウトリセットはアプリケーションに以下のコードを追加することで検出することが可能です。
int Check_BOD(void)
{
// CYREG_PWR_BOD_KEY レジスタの現在の値をチェックする
uint32 key = CY_GET_REG32(CYREG_PWR_BOD_KEY);
// CYREG_PWR_BOD_KEY レジスタを 0x3A71 にセットする
CY_SET_REG32(CYREG_PWR_BOD_KEY,0x3A71);
// もし key が 0x3A71 であれば, プログラムはブラウンアウトによってリセットされたことが示される
return (key == 0x3A71);
}
int main (void)
{
if(Check_BOD())
{
//BOD Detected.
}
for(;;)
{
/* Place your application code here. */
}
}
しかし、CYREG_PWR_BOD_KEY はハイバネートからの復帰でも保持されています。そのため、リセットコンディションもチェックする必要があります。
ハイバネートによるリセットコンディションは
CySysPmGetResetReason() == CY_PM_RESET_REASON_WAKEUP_HIB
を使用してチェックできます。
もしこのコンディションが TRUE を返えした場合、それはリセットの原因がハイバネートであり、BOD をチェックする必要はないことを示します。
参考資料:
- PSoC 4100/4200 Family PSoC® 4 Architecture TRM
- PSoC 4100/4200 Family PSoC 4 Registers TRM (Technical Reference Manual)
- タグ:
- bod
- community translated
- power monitor
- power supervisor ebk
- power supply noise
- psoc 4
- psoc power system architecture
- psoc4
- voltage fault detector