PIC三昧(28) PIC16F18855、CWGの駆動波形をフォトカプラで電源分離

DRV_WAVEFORM
Joseph Halfmoon

前々回ハーフブリッジ駆動波形、前回フルブリッジ駆動波形とCWG機能を練習。別件シリーズで制御対象となりそうなパワーMOSFETにも触りました。そのくせCWGで生成した波形を直ぐにパワーMOSFETに接続しなかったのは信号レベルが違うから。PIC16側の3.3Vに対してパワーMOSFETのゲートは10V推奨みたいです。

“PIC三昧(28) PIC16F18855、CWGの駆動波形をフォトカプラで電源分離” の続きを読む

PIC三昧(27) PIC16F18855、CWGでフル・ブリッジ駆動波形を生成

FullBridgeFwdRev
Joseph Halfmoon

前回ハーフ・ブリッジ駆動波形を生成したので、今回はフル・ブリッジです。モータを駆動するためのHブリッジ回路を念頭にCWGを設定してみました。まあブリッジ回路の現物が無いのでとりあえずAD2のロジアナ・モードでCWGの出力波形を観察してみただけですが。まあ正転、逆転できそうな感じではあります。早く実験用の部品買えよ。 “PIC三昧(27) PIC16F18855、CWGでフル・ブリッジ駆動波形を生成” の続きを読む

PIC三昧(26) PIC16F18855、CWGでハーフ・ブリッジ駆動波形を生成

CWG01
Joseph Halfmoon

今回はCWG(Complementary Waveform Generator)の練習1回目です。パワエレ系の人々にはお馴染みさんのハーフブリッジとかフルブリッジとかを駆動するための波形を作り出してくれるもの。パワエレ素人の年寄はインバータといわれると反射的にロジックを思い浮かべてしまう。ダメな私。

“PIC三昧(26) PIC16F18855、CWGでハーフ・ブリッジ駆動波形を生成” の続きを読む

PIC三昧(25) CONFIGビット読めていた、フェイントU-bit PIC16F18855

CONFIG_PRAGMA
Joseph Halfmoon

前回、Flashの中の「コードとは別な空間」にあるDevice IDは読めたけれども、CONFIGURATIONビットが読めないと混乱しました。しかし、よくよく調べてみたら実は読めていたことが判明。MCCの提示した値が読めるものと思っていたところ、実機では異なる値が読めることが判明。ようやく腑に落ちました。

“PIC三昧(25) CONFIGビット読めていた、フェイントU-bit PIC16F18855” の続きを読む

PIC三昧(24) Device ID読めるがCONFIG読めない? PIC16F18855

CONFIG_READ_Results
Joseph Halfmoon

PICマイコンにはコンフィギュレーション・ビットあり、ハード初期設定を不揮発な記憶に残すもの。ありがたい機能ですが自分でやると設定がメンドイ。しかし、コンフィギュレーションツールMCCにお願すれば「よきに計らってくれる」っと。しかしソフトで設定値読み出そうとするとヤバイ?どうなっているの?

“PIC三昧(24) Device ID読めるがCONFIG読めない? PIC16F18855” の続きを読む

PIC三昧(23) PWM+TIMER+DSM、赤外線リモコン波形、PIC16F18855

RMT_wave0
Joseph Halfmoon

別件シリーズでコンピュータ上で赤外線リモコン波形を生成。こちらでは実際に赤外線LEDを駆動して「送信」できる筈の波形をPIC16マイコンで作成してみたいと思います。とりあえずの今回は0と1の波形が生成されていることをオシロで確認するところまで。過去回で練習済のTIMER、PWM、DSMの合わせ技、応用課題か?
“PIC三昧(23) PWM+TIMER+DSM、赤外線リモコン波形、PIC16F18855” の続きを読む

PIC三昧(22) TIMER0、ワンショットでパルス幅を制御する。PIC16F18855

ResultsWaveForm
Joseph Halfmoon

前回に続きTIMER0を試用。今回はワンショットで出力パルス幅を制御するのに使ってみたいと思います。外部でボタンが押されたことをトリガにして、ボタンが押された直後から所定の幅のパルスを一発出力するもの。制御ではアリガチ?今回は16ビット利用なので最小4μsから最大約260msまでのパルスを自由自在だと。

“PIC三昧(22) TIMER0、ワンショットでパルス幅を制御する。PIC16F18855” の続きを読む

PIC三昧(21) TIMER0、外部クロックをカウント、PIC16F18855

TIMER0_DUT
Joseph Halfmoon

前回は内部のクロックを外部出力するCLKREFモジュールを練習しました。今回は外部からクロックを入力して数えてみます。PIC16F18855はタイマ(カウンタ)が充実、0から6まで7本もあります。今回はそのうちのTIMER0を使って外部クロックをカウント、周期的にタイマ0割り込みを発生させてみます。

“PIC三昧(21) TIMER0、外部クロックをカウント、PIC16F18855” の続きを読む

PIC三昧(20) CLKREF、参照クロックの外部出力、PIC16F18855

PIC16F18855_PackageView
Joseph Halfmoon

PIC16マイコン搭載の周辺回路を脈絡もなく思いつくまま気の向くままの順番で練習してきました。ここで「なんの一番基本的なモジュール」を練習してないことに気づきました。内部のクロック信号を外部にお知らせできるCLKREFモジュールです。クロックを出力するだけ、地味だあ~。でも単純だけれどもよく考えられてる?

“PIC三昧(20) CLKREF、参照クロックの外部出力、PIC16F18855” の続きを読む

PIC三昧(19) TEMP、チップの温度をADCで測定、PIC16F18855

ADCresultTable_STD
Joseph Halfmoon

今回はオンチップの温度を測るTEMPERATURE INDICATOR MODULEです。偉そうなお名前ですが、やっていることは温度依存性がある筈のダイオードの電圧ドロップをADCで測っているだけです。単純明快、な割には制御はフェイント。独立したモジュールというより、2つのモジュールに「間借り」している雰囲気。 “PIC三昧(19) TEMP、チップの温度をADCで測定、PIC16F18855” の続きを読む

PIC三昧(18) CRC、データ配列のCRC8をハードで計算、PIC16F18855

CRC_EC
Joseph Halfmoon

前回は書き変えに便利で安心EEPROMを使ってみました。今回はFlashメモリのCRCをCPU使わずに計算することもできるCRCモジュールを使用してみます。Flashに対して使用すれば「改ざん」なども検出可能かも。ただし、今回はデータメモリの中の配列のCRC8をCPU制御で計算してもらいます。設定が分かり難い? “PIC三昧(18) CRC、データ配列のCRC8をハードで計算、PIC16F18855” の続きを読む

PIC三昧(17) EEPROM、データ書き込み&読み出し、PIC16F18855

EEPROMsetup
Joseph Halfmoon

前回まで4回を費やしてMSSPを一通りなでました。今回は「軽く」NVM(NONVOLATILE MEMORY)に入りたいと思います。PIC16FマイコンはプログラムメモリとしてFlashを搭載しているだけでなく、不揮発なデータ格納用にEEPROMを搭載しています。これがあれば電源切っても消えない設定など自由自在だっ。
“PIC三昧(17) EEPROM、データ書き込み&読み出し、PIC16F18855” の続きを読む

PIC三昧(16) MSSP、I2C Slaveモードでデータを送受、PIC16F18855

PIC16F_ESP32
Joseph Halfmoon

前回はPIC16搭載のMSSPをSPIスレーブとして使用。今回はMSSPをI2Cスレーブとして使ってみます。別シリーズ記事にて前回のSPIスレーブのテスト用の通信相手をMicroPythonで作成しましたが、今回もI2Cスレーブの通信相手を同様に作成して実験したいと思います。両側作らないと実験できないのはメンドイっす。

“PIC三昧(16) MSSP、I2C Slaveモードでデータを送受、PIC16F18855” の続きを読む

PIC三昧(15) MSSP、SPI Slaveモードでデータを受信、PIC16F18855

SPIslave_DUT
Joseph Halfmoon

前回はPIC16搭載のMSSPをSPIマスタとして使ってみました。今回はSPIスレーブとして使ってみます。ううむ誰かマスタになってくれる奴が必要なのだけれどどうしようか?今回は「とりあえずのテスト用」マスタからスレーブにデータが届いていることを確かめるだけ。あなた任せなだけにスレーブの方がちょっとメンドイです。

“PIC三昧(15) MSSP、SPI Slaveモードでデータを受信、PIC16F18855” の続きを読む