こんにちは、ENGかぴです。
マイコンのWDT・タイマー・AD変換などの考え方はマイコンの種類を問わず共通です。PIC12F675は小さくて頼りなさそうですが、レジスタの設定方法や各種機能について基礎を学ぶことができます。応用すると製品化にも使えるなど用途は様々です。
PIC12F675を使用した製品を世に送り出した経験からPIC12F675を使ってマイコンのレジスタの設定の仕方や各種機能の使い方についてまとめてきました。
PICマイコン(PIC12F675)の機能
PIC12F675はPICマイコンの中でもミドルレンジの8ビットのマイコンです。8ピンしかないので大したことはできないと思われがちですが、マイコンを動作させるうえで必要な基礎知識を学ぶには十分のスペックを持っています。
残念な点はシリアル通信機能がないことくらいで、PIC12F675だけでも簡単な製品が作れるほどの性能があります。実際に私が設計したPIC12F675を使用した製品が納品され活躍しています!
PICマイコンの開発環境の作り方
PICマイコンを開発する場合MPLAB X IDEやPICマイコンに応じたコンパイラーをインストールする必要があります。開発環境であるMPLAB X IDEとコンパイラであるMPLAB XC Compilersのダウンロードとインストール方法・プロジェクトの作り方・メインファイルの作り方についてまとめています。
WDT(ウォッチドッグタイマー)の考え方
WDTはWatchdog Timerの略であり番犬という意味です。WDTはマイコンの異常状態を監視する役割を持った機能です。WDTはマイコンを使ったソフト開発を行う際に必ずと言っていいほど使われる機能です。
マイコンが異常動作してWDTをリフレッシュ(タイマー時限の更新)ができなくなった時にソフトウェアをリセットさせることができます。
I/Oポートの設定方法と電気的仕様の考え方
I/Oポートはデジタル入出力で周辺回路と組み合わせてLEDと点灯/消灯したりリレーの操作をしたりできます。また外部回路からデジタル信号を受け取り判断させて処理することもできます。
GPIOのデジタル入出力にはHighアクティブかLowアクティブがあります。周辺回路がHighレベルの時に動作するものなのかLowレベルで動作するものなのかを押さえておく必要があります。
I/OポートにはDIとして使用する際の電圧範囲やDOとして使用する際のシンク電流と出力電流について電気的仕様を押さえておく必要があります。
割り込み処理の設定と使い方
割り込みはプログラムがメイン関数の中を処理している途中でも先に処理を割り込んで優先的に処理をさせたいときに使用します。正弦波などを波形としてサンプリングして一定間隔でデータを取得する際には割り込みが必要になります。
割り込みはタイマーやAD変換データの取得などで必要な機能です。割り込みを使用する際のイメージと注意事項についてまとめています。
タイマーの使い方と管理の方法
タイマーはPICマイコンを問わず他のマイコンでもよく使用される機能です。タイマー機能を使ってAD変換のタイミングを作ったり、LEDを点灯/消灯させたりと用途は様々です。タイマー1の使い方についてまとめています。
タイマー1は16ビットタイマーですが、8ビットのレジスタ2つで管理されており現状のタイマー値を確認するためには演算を行って値を確認する必要があります。8ビットのレジスターから16ビットデータへの変換の考え方をまとめています。
タイマー機能を利用してベースタイマーを作り分周しながらメイン関数内でタイマを管理する方法の一例についてまとめています。
自分が管理したいタイマーの変数を宣言し、変数に数値をセットするだけで任意の値でタイムアップさせることができるようになります。
広告
PR:わからないを放置せず、あなたにあったスキルを身に着けるコツを教える テックジム 「書けるが先で、理解が後」を体験しよう!
INT機能(外部割込み)の使い方
INT機能は多くのマイコンに搭載されている機能です。パルスを入力した時の立上がりや立下りを検出して割り込みを発生させたりして必要な処理を作ることができます。
入力信号が50Hz(60Hz)のタイミングであればINT割り込みを利用して1周期当たりの処理を作ることできるなど用途は様々です。INT機能の使い方についてまとめています。
模擬パルスをDO制御によって発生させINTピンに入力することでLEDを点灯/消灯させています。
AD変換の使い方
AD変換はアナログ信号を電圧変換することでセンサー電圧などを判断したりする目的で使用します。VTやCTの2次側の電流や電圧をマイコンの周辺回路に入力しオペアンプなどで増幅してからマイコンのAD変換に入力したりと多くの用途で使用されます。
AD変換の開始タイミングをタイマーで作ることがあります。TMR1とAD変換を組み合わせて使用する方法をまとめています。
コンパレータの使い方
コンパレータは基準電圧と入力電圧を比較して0か1かで判断して処理を分けたい場合に使用します。例えばバッテリの電圧が低くなったときにビットを立てて処理を分岐させる使い方ができます。
コンパレータは基準電圧付近でノイズなどの影響を受けて頻繁に出力が切り替わってしまうことがあります。これを防止するためにヒステリシス特性(シュミット回路)を持たせることがあります。
DIピンのチャタリング防止
DIピンに入力されるDI信号がスイッチのON/OFFの切り替え時にチャタリングによって安定しないことがあります。チャタリングで誤動作することを防止するためにDIピンのフィルタを作り方についてまとめています。
EEPROMの使い方
EEPROMは不揮発性メモリであり電源が切れても書き込んだ値が消えることはありません。電源が切れる前に使用していた値をEEPROMに書き込んでおくことで電源が切れてもEEPROMを読み出すことで保持した値を読み出せます。
応用例としてEEPROMへの書き込みをモードを切り替えながら行う方法をまとめています。
PWM波形を生成しブザーを鳴らす方法
PWM制御を使って電圧値を制御することがあります。PWMは波形のデューティー比を変更して電圧値を制御する方法です。PWMはタイマ機能とDOを使って生成することができます。
PWMと同じようにタイマ機能とDOを使って振動波形を生成しブザーを鳴らすことができます。振動波形はタイマーの初期値を変更することでキャリア周波数を変更して生成します。タイマーはTMR0とTMR1の2つを使っています。
リセットとプロテクトを使用する
リセットとプロテクトは多くのマイコンに搭載されている機能です。リセットは様々な要因で発生しますが、使い分けることが重要です。プロテクトはソースコードが読み取れないように保護するものです。
コールドスタートやホットスタートの考え方やブラウンアウトリセットの考え方などリセットの使い分けとプロテクトについてまとめています。
PR:わからないを放置せず、あなたにあった最低限のスキルを身に着けるコツを教える テックジム 「書けるが先で、理解が後」を体験しよう!
PICマイコン関連で使用している書籍
PICマイコンの基礎をC言語で学習する際に参考になる書籍があります。PICマイコンをC言語で開発してみたいけどどうしたらよいかわからない場合は参考になると思います。
PIC12F675に関する書籍は入社したてで基礎学習をしていた頃に使用していた書籍は下記のものです。
当時はC言語で記述できるコンパイラがなかったためアセンブラでの解説になっていますが、レジスタの設定については参考になる部分が大きいと思います。
まとめ:PICマイコンでレジスタの設定を知ることが上達への近道
PIC12F675を使用してマイコンの機能であるタイマやAD変換などについてレジスタの設定方法や考え方についてまとめてきました。
各リンクではレジスタの設定についてや割り込みに関する考え方や注意事項を説明しています。またタイマを使ったタイマ管理の方法やDIのチャタリング防止の方法に加えてマイコンのリセットやプロテクトについて説明しています。
これらの方法は、他のマイコンを使用する際にも有効な方法で私が担当している製品にもよく使用している方法でもあります。
PIC12F675とプログラマ(書き込みツール)のみでは動作確認ができないことが欠点でもありますが、マイコンのレジスタ設定を理解しておくことは重要です。これを理解できればArduino等の環境においてライブラリを作って提供する側になれるからです。
プログラミングの教養を身に着けておけばPICマイコンのみでなくArduinoやそのほかの開発環境においてもソフト開発ができるようになります。
言語は何であれ一つ身に着けておくと他の言語にも共通する考え方応用することができます。マイコンのソフト開発をしてみたいIoTモジュールを動かしてみたいという好奇心やチャレンジ精神が大切だと思います。
関連リンク
関連リンクではPIC16F1827を使ってマイコンの基本動作を確認するために動作確認したことについてまとめています。
PICマイコン(PIC16F1827)で実現できる機能と解説リンクまとめ
下記記事ではIoT社会実現と組み込みエンジニアの職種との関係についてまとめています。
最後まで、読んでいただきありがとうございました。
AD変換のデータの移動平均を使ってフィルタリングする方法を紹介していますがアナログデータをフィルタリングする方法として様々に応用できると思います。