PICの発振子
2026.01.05
近頃のPICマイコンはクロック源も内蔵され、クリスタルやセラミック発振子を外付けしなくても済むようになり、ずいぶん楽になりました。部品点数の削減にもなります。

以前はクリスタルやセラミック発振子を外付けしていたのでした。

クリスタルにセラミックコンデンサ2個、あるいはコンデンサ内蔵のセラミック発振子です。
コンデンサ内蔵のほうが使いやすかった。

それでも中央ピンにGNDをひっぱってくるのは、手作りだったらリード線が必要でちょっとした手間でした。
PIC16F84とか628Aなど、もう古いけど同様の18ピンPICはXTAL端子とVDDが近いので、セラミック発振子の中央GNDピンをVDDにつなぐという手がありました。

えっ、それで大丈夫なのか。大丈夫です。

VDDでもVSSでも交流的には同じだからどっちにつないでも良いという理解をしていました。
それで実際に色々な基板を作り、発振回路に関しては問題なしです。

理屈できちんと説明できるかというと説明できなかったりしますが、心配ならGNDにつなぐだけです。(そりゃそうだ)


そういえばPICマイコンのリセット回路も最初は外部に組んでいました。
リセット回路の出力を/MCLRピンに入力していたのです。
そのうちに出てきた新しいPICシリーズではリセットが内蔵されるようになり、/MCLRは単にプルアップだけで済むようになりました。
最初は不安で、しばらくは従来のリセット回路をそのままつないでいました。確認がとれた時点から、リセット回路の部品実装を変えて、プルアップの抵抗だけ実装するようにしたような。
じつは、PICがうまく立ち上がらない現象に苦しんだ経験があり、それでかなり神経質になっていました。

PICの/MCLRピンはシュミットトリガ入力なのかどうか?も重要なポイントでした。もちろんシュミットトリガ入力です。
Z80の頃にはそうではなかったので、トラブルを起こしていました。それで74LS14を通していたものです。このために余分なICがひとつ必要でした。
リセット回路の充電は、マイコンから見ればゆっくりした動きで、HなのかLなのか微妙な所をゆっくり通りますので、どっちつかずの状態となります。それでH/Lを小刻みに繰り返したりと不安定な動きとなり、マイコンの動作がおかしくなります。
そこで74LS14を通してH/Lをきれいにしてやります。大雑把にいうと、HとLのしきい値がそれぞれ違えてあるので、微妙な境界線を横切ることがないわけです。
初期値の話
2025.09.19
EEPROMやバックアップRAMに、設定内容などを書き込んでおき、起動時に読み込む事で初期設定に反映する、といった使い方は良くあります。

この時、読み込んだ値が正常な範囲か、妥当な値であるかを必ずチェックして、もし問題があれば適切に処理することが重要です。

ふ~ん、という感じですが、一度失敗すると良くわかります。

EEPROMやバックアップRAMの内容は、何らかの原因で化けることがあります。
そして、EEPROMは新品の状態で0xFFになっています。
これらの事実を前提にして、そういった異常値で誤作動しないよう、プログラムに対策を組み込みます。

EEPROMの初期値問題は、ずっとデバッグに使っていた試作機だと気づかないことです。初めて製品版の基板を動かす時に、アレッとつまずくのです。新品のEEPROMは0xFFだから。

たとえば、ある設定内容は1~10の範囲を前提としているのに、0xFFが来たらおかしなことになります。
ただ単にEEPROMを読み込んで、その値をそのまま使ってはいけないのです。値が規定範囲に有るか、もし外れていたら初期値に戻すといった処理が必要です。

意外と市販の製品でも考慮されていない物があるようです。
自分の修理仕事の経験でも、回路的には正常なのにどうしても動かないものがありました。他社さんが修理をギブアップして、うちに回ってきました。
結局それはEEPROMの内容が化けていて、起動時に読み込んだ異常値で暴走していたことがわかってきました。
幸いなことに正常な個体が有り、そこからEEPROMの内容を複写してやると、正常に動くようになりました。
原因はリセット回路がいい加減で、特に電源を切った時のゆっくりした電圧低下で暴走し、その時にEEPROMを誤って書き換えていたようです。対策として、電圧検出ICを追加し、ある電圧より下がったらマイコンが動かないように止めるようにしました。


普段操作しない場所に押しボタンを隠しておき、あるいはディップスイッチの空いている所を利用するか、とにかくそれをONにしたまま電源を入れると、EEPROMがクリアされてデフォルト値が書き込まれるようにする仕掛けをするのも良いでしょう。
近頃のPICマイコン
2025.09.11
秋月から買って、袋に現品シールが貼ってない場合があるけれど、
そんな時はブツブツ言わないで自分で記入しておこう。忘れないうちに。今すぐに。

あとで見ると、これ何だっけ。わかんない、ってなるから。特に小さな部品とか。



この写真はPICマイコンで、わりと新しい品種ばかりです。

老眼だから余計に、ペンで大きく型番を書いておかないとね。

それにしても、なんでこれらを買ったんだっけ。(おいおい)
PICマイコン
2025.09.08
 近頃あまり話題にものぼらないPICマイコンですが、活躍の場は多いです。

■1.昔からの疑問

 たとえば16F88x
 同シリーズで883とか886、887とか、28ピンや40ピンが有るけど、
 ひょっとして中身は同じなのだろうか? という疑問

 PICマイコンといっても多くのシリーズにそれぞれの型番とパッケージ種別がある。
 こんなゴチャゴチャで管理が大変だなと他人事ながら思ったわけ。
 そこで、ひょっとしたら中身は同じじゃないかと?
 何種類もそれぞれ生産するより、同じチップを大量に生産して共用したほうが合理的な気がする。

 (1)メモリ容量の違い
 仕様書では何キロバイトまでですと書いてあるけど、じつはそれ以上に(上位型番)使えたりして? チップを共用化しているなら上位型番の仕様ではないかと。
 何キロバイトまでしか使えないというのは、そう思わされているだけじゃないかと。
 あるいは、883、886、887で容量を設定するために配線を焼き切るとか、ボンディングで設定してるとか?

 (2)40ピンに有るけど28ピンに無いポート
 たとえばRD、REは40ピンに有るけど、28ピンには無い。
 でも試してみたら、そのレジスタにはアクセスできたりして?
 これは昔から試してみようと思っているけど、忘れてしまっていまだに確認できていない。
 忘れっぽいのと、すぐできるのにやらない先延ばしグセ、自分の欠点。

■2.Arduino対応

 Arduinoが対応しているマイコンは数多くある。
 なぜかPICは入ってないようだ。
 PIC用のブートローダは有るけど、Arduino用ではないと思う。(試してないので知らない)

■3.価格

 新しい品種ほど安い。古い品種はどんどん値上がりしていく。
 古い品種を継続的に使っていると、原価が上がってくる。
 できれば動いている物に手を入れたくないのが正直なところ。
 新しい品種に移植してテストする手間も時間もそれなりにかかる。
新しいマイコンの試食
2025.09.05
新しいマイコン、というのは新製品というよりも、自分的に経験のないマイコンという意味で・・・

レトロマイコンで楽しみつつも、仕事では条件によって様々なマイコンを選ぶ必要に迫られます。
そんな時に「持ち駒」ができるだけたくさんあると助かります。

そこで、使った事のないマイコンを積極的に試しておく必要があるなと思いました。

全く使った事がないマイコンは、初めて使う時に何らかのつまずきが有ったりするものです。あとから振り返ってみれば当たり前のことだったなと思うけど、最初は全く知らずに罠にはまったりします。

何となく定番マイコンばかり使ってしまいます。慣れているものが一番だからです。

たまに、それだと性能や仕様が合わない場合があります。そこから改めて探し回ると時間がかかるので、持ち駒があったらと思うのです。

UARTがもう一組欲しいってのは有りがちですが、SPIが2組無いかという要求も実際あります。いや一組でいいでしょう、と考えますが、高速のクロックで動かす為に配線を短くして、他のデバイスを並列にしたくない(負荷が増えて波形が乱れる)という理由もあります。

開発環境にも慣れておき、できればすぐに使える状態にしておくのがベターでしょう。

自分はハードウェアもやりますから、そのマイコンに有った評価ボードを実際に設計して作る所までです。最初のお手本としては市販のボードでも良いが、いずれ製品を作るのだから自分で把握しておく必要があります。

- CafeLog -