Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

PSoC 4 で BOD Reset を検出する - Community Translated (JA)

PSoC 4 で BOD Reset を検出する - Community Translated (JA)

ChaitanyaV_61
Employee
Employee
50 questions asked 25 likes received 25 sign-ins

Community Translated by  MoTa_728816          Version: **

 

BOD (ブラウンアウトディテクト) 回路は電源電が危な可能性がある態のときにデバイスにリセットを作動させて動作の保護やロジックの保持を行います。BOD 回路は VCCD を監視して、もし電レベルが安全な動作を行うための最小 VCCD よりも下がった場合にリセットを生させます。システムは再び電源電が有になるまではリセットを解除しません。BOD のイベントによっては、VCCD は最小ロジック動作電よりも下がってはいますが、最小ロジック保持電よりも高いところで留まる場合があります

 

もし VCCD が最小ロジック動作電より下がり、しかし最小ロジック保持電を割っていない場合、BOD リセットが生します;しかしレジスタの値は保持されます。もし VCCD が最小ロジック動作電と最小保持電のどちらよりも下がった場合、レジスタ値が保持されない BOD リセットが生します。このレジスタ値の保持はスペシャルレジスタ、PWR_BOD_KEY を使用して出することが可能です。PWM_BOD_KEY

 

レジスタの値はファムウェアからの書みか非保持 BOD リセット、XRESPOR のような非保持リセットイベントが生した場合だけ更されます

 

ブラウンアウトリセットはアプリケションに以下のコを追加することで出することが可能です

 

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 をチェックする必要はないことを示します

 

考資

  1. PSoC 4100/4200 Family PSoC® 4 Architecture TRM
  2. PSoC 4100/4200 Family PSoC 4 Registers TRM (Technical Reference Manual)

 

 

0 件の賞賛
335 件の閲覧回数