2023.04.04本記事はプロモーションが含まれています。こんにちは、ENGかぴです。マイコンのソフトを開発しているとマイコンをリセットやプログラムを保護するかを検討することがあります。PIC12F675のプログラムの保護やリセットに関する設定があり、何らかの要因でソフトウェアがリセットした場合に切り分けることができます。ホットスタート(電源ONのままリセットによってリスタート)した場合とコールドスタート(電源OFFからスタート)した場合の考え方についてはマイコンを問わず参考になると思います。PIC12F675を使ってマイコンの動きを勉強するためにPIC12F675の機能でできることについてまとめています。関連リンクPIC12F675のリセットとプロテクトPIC12F675においてはCONFIGレジスタでリセットとプロテクトの設定行います。リセットの状況はSTATUSレジスタで確認することができます。リセットのステータスなどを組み合わせることでシステムがコールドスタートしたかホットスタートしたかを区別して動作開始することができます。コールドスタートとホットスタートの意味コールドスタートとホットスタートの説明マイコンが動作していて電源を切っていないにもかかわらずリセットがかかることがあります。通常の動きでリセットなら問題ありませんが、何かしらの原因によるリスタートであれば不良動作の可能性もあり得ます。リセットした時にステータスを確認して動作を切り分けることができます。Bitsの設定をアシストする機能が実装されているためONとOFFをコード上で書き換えると実装できます。IDEの表記で説明します。#pragmaでアドレス指定された変数が定義してありON/OFFを切り替えることで1または0が選択できるようになっています。bit2-0はクロックの選択です。内部クロックを使用するのでFOSCはINTRCIOを選択します。bit3はWDTの選択です。使用する場合はWDTEをONにし、使用しない場合はOFFにします。bit4はパワーアップタイマーの選択です。使用する場合はPWRTEをONにし、使用しない場合はOFFにします。ブラウンアウトリセットと関連がある設定です。bit5はリセットピンを使用するかの選択です。使用する場合はMCLREをONにし、使用しない場合はOFFにします。bit6はブラウンアウトリセットの選択です。使用する場合はBORENをONにし、使用しない場合はOFFにします。bit7はプログラムをプロテクトするかの選択です。使用する場合はCPをONにし、使用しない場合はOFFにします。bit8はEEPROMをプロテクトするかの選択です。使用する場合はCPDをONにし、使用しない場合はOFFにします。bit13-9は設定なし。bit13-12はメーカーが初期時に設定するために使用するものでユーザーが操作する必要はありません。広告STATUSレジスタとPCONレジスタリセットの状態を確認できるレジスタです。引用:PIC12F675のデータシート(STATUSレジスタ)bit2-0は命令ビットであり基本的には使用しません。C言語でコードを書いていれば意識する必要はありません。bit3はパワーダウンを確認するためにビットです。SLEEP命令を実行すると0になります。CLRWDTの実行や起動時のパワーアップなどで1になります。bit4はWDTがタイムオーバーフローした時に0になります。CLRWDTを実行するかSLEEPを実行すると1になります。bit7-5は特に設定する必要はありません。引用:PIC12F675のデータシート(PCONレジスタ)bit0はブラウンアウトリセットが行われると0になります。使う場合はユーザーで1をセットしておく必要があります。bit1はパワーオンリセットが行われると0になります。使う場合はユーザーで1にしておく必要があります。スポンサーリンクリセットの動作を確認する引用:PIC12F675のデータシート(リセットタイミング)電源が印加され0から上がっていくとPORが働きパワーアップタイマ(PWRT)がタイムアップします。オシレータスタートアップ(OST)が起動しタイムアウト後リセット解除となります。PICマイコンを問わず電源電圧が低くなってくると動作が不安定になり不良動作の原因になることから電源電圧が低くなった時や電源が不安定なときにリセットをかけるのが一般的です。動作確認用の回路図リスタートの要件確認の回路図コールドスタートした時にメイン関数に入る前にLED1を点灯させます。SW1を押すとメイン関数に移りLED2が点灯/消灯繰り返すようにします。WDTタイマーオーバーフローでのリセットを確認するためにCLRWDT関数を使用せずにリセットさせた場合ホットスタートとなりWDTリセットによることを表示するためにLED4が点灯します。SW1を押すとメイン関数に移ります。広告/MCLRピンの確認/MCLRピンはLアクティブの機能になります。MCLRピンがLの時はマイコンにリセット状態になります。マイコンを動作させるためにはMCLRピンをHにする必要があります。DEBUG_MCLREのコメントアウトを外すとMCLRE=ONになります。リセットピンとして機能が割り当てられるので回路図のSW1を押すことで/MCLRピンがHとなりリセットが解除されプログラムが動作します。メイン関数に遷移しLDE2が点灯/消灯するようにします。ブラウンアウトリセットの確認ブラウンアウトリセットは電源電圧がブラウンアウトリセット電圧よりも低くなった時にマイコンのリセットをかけるものです。PIC12F675のブラウンアウトリセット電圧は約2Vになっています。ブラウンアウトリセットは電源電圧が約100usec以上低くならないとリセットがかかりません。ブラウンアウトリセットの確認は電源間に可変抵抗で分圧した電圧を印加することで確認します。メイン関数で点灯消灯しているLED1が消灯するまで可変抵抗を変更し、その後可変抵抗を調整して起動電圧まで上げることでブラウンアウトリセットによるリセットであることを表示するLED3が点灯します。リセットICを使ったほうが良い理由ブラウンアウトリセットよりもリセットICの方が良い場合ブラウンアウトリセット電圧を使用すると数百uA消費電流が増えてしまいます。系統電源が取れる場合は消費電流の増加は気になりませんが、エナジーハーベストなどの微弱な電源である場合、数百uAの消費電流は大きなものになります。外付けのリセットICを使用して/MCLRピンをコントロールすることで2.0V付近でリセットがかかる仕組みを検討したほうが良いこともあります。例ではTPS3839G25(TI製)を使用していますが、低消費で150nA程度となるのでブラウンアウトリセットよりも低消費でリセットとなります。スポンサーリンクプロテクトの動作を確認するプログラムのプロテクトはCPをONするとソースコードがプロテクトされCPDをONにするとEEPROMがプロテクトされます。プロテクトされるとIDEやIPEでリードしても0x00が読みだされるようになっておりソースコードが読み取れなくなります。プロテクトを解除するとソースコードが消去されるため内容の確認ができなくなります。プログラムの中身が知られたくない場合は使用したほうが良い機能です。この動きについては下記記事のEEPROMを使ったソースを使って確認します。下記ソースのコンフィグレジスタのCPとCPDをONにしたときの読み込みの違いを確認します。CPについて見てみます。viewsを選択すると表示できます。CPはソースコードをプロテクトする設定ですが、ONとOFF時の比較をすると分かるようにプロテクトをONすると読みだしたデータがすべて0000になっています。同様にCPDについても確認します。EEPコードの比較(上:プロテクトなし、下:プロテクトあり)CPDにおいてもプロテクトによりEEPROMの値を読み込んでもすべて0x00になっていることが分かります。EEPROMについてはユーザーでプロテクトしていてもユーザーのソースコード上のシーケンスを実行しての読み込みや書き込みはプロテクトの有無にかかわらず可能です。プロテクトによってデータの読み取りができなくなるので製品化する場合など必要に応じてプロテクトすることは有効です。以下のソースコードはコンパイルして動作確認をしております。コメントなど細かな部分で間違っていたりやライブラリの更新などにより動作しなくなったりする可能性があります。参考としてお使いいただければと思います。IDEのプラグインであるMCCを使用して動作確認したことについてまとめています。最後まで、読んでいただきありがとうございました。組み込みエンジニアPICマイコン(PIC12F675)のINT機能の使い方マイコンのソフトを開発していると外部からパルスを入力してタイミングの同期をとったり処理をしたりすることがあります。DIピンの機能の一つであるINT機能を使うことで割り込みを発生させ同期をとるような処理を作ることができます。XIAOでRTCモジュールの情報を更新するArduino環境においてWireライブラリを使用してRTCモジュールに時刻の書き込みと読み込みができます。XIAOを使ってシリアルモニタから時刻設定の電文を送出し現在時刻を確認した方法についてまとめました。組み込みエンジニアPICマイコン(PIC12F675)のコンパレータとヒステリシス特性マイコンのソフト開発をしているとコンパレータを使うことがあります。コンパレータは動作点付近で出力が頻繁に切り替わることがあり、ヒステリシス特性を持たせることがあります。PIC12F675を使ってヒステリシス特性の効果を説明しています。電気電子部門の試験において電荷の問題が出題されています。点電荷に関するクーロンの法則や電界の関係が分かっていれば簡単に解ける問題です。電荷に関する問題の解き方や電解と電位の関係性などをまとめています。XIAO31ESP32-WROOM-32E37TWELITE(トワイライト)26PIC16F182731PIC12F67522ノウハウ(体験談)36趣味と生活29その他6タグオペアンププロフィールENGかぴ当ブログの運営者のENGカピです。組み込みエンジニアとして10年以上の経験を活かしてセンサーモジュール等の動作確認したことをまとめています。広告、アフィリエイト収益で当ブログを運営させていただいております。defined.")}))})()タイトルとURLをコピーしました。