12F509 を弄って遊んでみた

今年最後のお遊びである
一個50円で入手出来る8pinのマイクロコントローラチップである

IMGP6306

<@50円のチップ、コストパフォーマンス抜群である>

この12F509はプログラムエリアがフラッシュメモリ1024wordの容量である
メモリは41byteで、5つの入出力ポートと1つ入力専用ポートで計6ポートである
その中の3ポートを内部プルアップする事が出来るので、この手の変換には向いている

マイクロチップ社ではベースラインと位置づけれる、1命令12bitのCPUコアである
初めてベースラインのプラグラムをしてみたのであったが
以外と手強いのである….

普段使っているのは、ミッドレンジと呼ばれる1命令14bitのCPUコアなのであるが、微妙に色んな所が違うのであった
ポートの入出力設定のやり方や、メモリのマッピング等々詳細が違っている
大きな点は、ハードウェアスタックが2つしか無いので、2つ以上のネストは出来ないのと、割込みが無いのは承知であったが、微妙な所で時間が掛かってしまった

まぁ、そうは言っても@50円は魅力的である
約4MHzの内蔵RCクロックもあり、簡単な制御であれば最適のコントローラであろう (慣れないとプログラムが面倒であるが)
今回の工作は、BCDスイッチ入力を16段階でPWM出力する、PWMコンバータである
0-Fの入力で16段階でのPWM出力をするプログラムである

PWMなら12F683等のチップを使った方が効率的であるが、16段階なので手作りのソフトウェアPWMにしてみた、今回の内容はBCDスイッチの数値に合わせてPWMを出力するだけの制御である

IMGP6305

<でっち上げた、PWM評価ボード>

IMGP6304

<とりあえずは、BCDスイッチとデューティは同期OKである>

初めてのベースラインチップでのプログラムは慣れないことも有って、思った以上に時間が掛かってしまったが、とりあえずは動くモノは出来たので、ヨシとしよう

さらりと遊ぶ筈が、今年最後の嵌まりゴトになってしまったのであった