PICマイコンを振り返る
2026.01.21
最初のきっかけは1995年12月号のトラ技の特集(例によって間違いも結構あった)

そこで興味を持って、マイクロチップ社のデータブックを取り寄せた。当時は英文のみで分厚い本だった。
当時はネットでPDFファイルを入手することはできなかった。
パソコン通信のアクセスポイントが有り、そこからダイヤルアップで接続して書込用ソフトか、サンプルプログラムか何かを取ってきた事がある。通話料を気にしながらのアクセスで、あせりそう。

とにかく、PIC16C84を手に入れた。さてこれをどうやって書き込もうか。
当時有名だったのはPCのパラレルポートに接続する回路で、アプリケーションノートの何番だっけ。(AN589)
実際に作ったけど・・・最終的には書き込めた。途中でうまくいかない事があって、あれこれ試行錯誤した。そこらへんはよく覚えてない。

トラ技に載っていたシリアル通信で書き込むライターを作るために、その制御プログラムの書き込まれたPICが必要だったから、それを書き込む為のライターが要るという、たまごとにわとりのような話。

ただ、それは1種類のPICしか書けなかった。しばらくは、それで何とかなった。
そのうちに秋月のキットが出て乗り換えた。アルミケースを加工して組み込み、わりと最近まで(使わなくなっても)持っていた。

PIC16C84はPIC16F84になり、やがてA付きのPIC16F84Aになった。(以下PICは略す)
その次に乗り換えたのは16F628で、これもA付きの16F628Aになった。
A無しからA有りに乗り換える時、プログラムを修正しないと動かなかった。ここのところが面倒だった。確かI/Oの初期設定でコンパレータか何か。

非常に興味を持ったのは8ピンPICで、確か最初は12C508
容量の違いで508と509が有った。
最初はワンタイムか窓付きだけ。フラッシュは無かった。
その窓付きは確か当時二千円ぐらい?

これは最初に動かそうとした時、なかなか動かなくて苦労した。
CONFIGの設定を完全に理解していなかったと思う。調べてあれこれ変えて試すことの繰り返し。ようやくLEDの点滅。

8ピンに入るなんて純粋にすごいなーと思った。ただ、機能的には物足りなかった。タイマー割り込みなどが無かった。TMR0がカウントアップするだけ。

その頃、現場で遊技機の検査をする業者(裏ROMや不正な部品が仕込まれていないか調べる)が、「こんなものが付いていた」と持ってきたのがPIC16C84を使った「ぶら下がり」基板。
それと、フラットケーブルコネクタの中に仕込まれた8ピンPIC。よくこんなもん作るなあ、と。

そしてEEPROM内蔵の12CE508。518だったか。これも窓付きとワンタイムで、窓付きは中をのぞいてみると2チップ構成になっていた。とりあえずくっつけて作った感じ?

個人的にPICの法則と呼んでいる事があって、何かというと、I/Oポートの割り付けでいつもピンが微妙に足りない。
18ピンPICだとピンが不足する。それじゃ次は28ピンだ。いや40ピンだ。

28ピンは16F873、40ピンは16F877を使うようになり、それと18F4550も使った。

書込機の課題はどうしたかというと、結局は純正が一番ということで落ち着いた。
当時PSTART PLUSを秋月から買った。
会社ではマイクロチップ純正のPICSTART PLUSを買って使っていた。

バージョンアップごとに対応するPICの型番が増えてきたけど、17C44だっけ。最初は40ピンの窓付きPICが入っていた。
その容量が足りなくなったんだろう、基板に置き換わったけれど、当初それが壊れやすかった。
物理的に壊れるんじゃなくて、ファームウェアが飛んでしまう。ふとした事で動かなくなり、秋月に問い合わせて書き換えてもらった。
そのうちに安定して、現在も使える状態にある。
使いたい時に使えないと困るから、同じ物を2台も買って持っていた。

自分で書き換えられないか試したことがある。基板の回路を追って、PGCとPGDなどの端子を調べて別のライターから。

いつだったかマイクロチップ社のセミナーが九州で開催され、参加した時にICD2 LEの販売があったと思う。これを手に入れたら書込が飛躍的に速くなった。
これは解剖して回路図を書き起こしたんだっけ。顕微鏡を見ながらパターンを追って・・・同じ働きをする物を自作した。

最初からずっとアセンブラを使っていて、このマイコンのアーキテクチャはC言語向きじゃないだろう、メモリを食うだろうと思いこんでいました。
それに最初の頃、Cコンパイラは高価でした。買ってまで試そうと思わなかったですね。秋月で安いのが出てなかったっけ。使い方がわからなくて放置してそれっきりだったような。

いつからCコンパイラを使い始めたかというと、確か2009年あたりじゃないかと思う。
今までアセンブラで長々と打ち込んでいたのがシンプルに書けて、もっと早くから使えばよかったなと後悔。
タイミング的にギリギリな所はアセンブラで書くのは仕方ない。

ただ、ちょっと浮動小数点の計算が入るだけで容量が膨れ上がるから、なるべくそんな処理は避けるように工夫する必要があった。

くせのあるPICだったけど、慣れてしまうとあまり気にならなくなり、しかもC言語を使っているとそれがなおさら感じられなくなる。
これでいいと思っていたら、Arduinoが出始めた。出始めたというより以前からあったんだろうけど、知られるようになった、自分が知った頃か。

私は最初ArduinoではなくAVRをAVR Studioで使っていた。こっちのアーキテクチャのほうが素直で良いなと、但しアセンブラは試したことがない。
仕事でも結構複雑なプログラムを作ったりして、かなり活躍した。

PICについては、やっぱり慣れもあるし、もともとそれで作られた物の改良などを請け負ったりしてそれなりに使い続けていた。

ただ、18Fシリーズは1種類しか使った覚えが無いような。それとdspicも使ったことがない。
Ethernetをいじった時に使ったのは何だったか忘れた。

仕事でやったのは、たとえば最新ソースが失われて、PIC現物から読み出すしかない、最新ソースを再現してくれというもの。しかも、それに新機能を加えてくれ、と。

なんだろうな。担当者が失踪したのかPCが壊れたのか間違って消したのかは定かでない。
まあでもプロテクトがかかってなくて良かった。
そこから逆アセして、旧版のソースは有ったのでそれと照合しながら相違点を埋めていって徐々に再現した。

なんと、16F877のプログラムメモリを広範囲に使っている。バンク切り替えだらけ。これが地獄の入口よ。

バンク切り替えイチイチメンドクセー!!

新機能の追加でプログラムを書き足すと、バンクをまたいでしまうのである。あふれないように見直してみるが、やはり詰めようがないのでどこか空いている所へ移動できないか検討したりして何とか入れ込む。
それで動かしてみると暴走する。
また見直して、これが原因だったかと特定して、これはどうにかならんものかと頭を抱えて、また直して試して・・・

もうアセンブラやめてCで全部書き直したほうがマシじゃないのかと。でも容量的に厳しくなるかもな。やっぱり地獄に変わりは無く、再度この仕事が来ても受けたくないな。
トラックバックURL
トラックバック一覧
コメント一覧
kanitama - 2026年01月21日 10:31
PIC全盛期がありましたね~。AVRも強力なライバルです。アセンブラでゴリゴリ記述されている方も多いことでしょう。今では多くの優秀なデバイスが低価格で提供されています。ライバルは多いと思いますが積み上げたノウハウがあると思いますので、たやすく手放しはしたくないでしょう。ただ、MSXもそうですがBANK切り替えはネックですね。
コメント投稿

名前

URL

メッセージ

- CafeLog -