ビット・トレード・ワンのADSU01を使った新しいユニットを構想中。
汎用性を求めて機能拡張を行った結果、
制御の為のI/Oが35本くらい必要という結果になりました。
40ピンクラスのPICマイコンが なんとか足りるかな?という本数ですが、
これはオンボード書込みに必要なピン等も全て潰して、
全てI/Oにまわした場合の話。
なので現実的には40ピンクラスのPICマイコンでも足りません。
次に思いついたのが28ピンクラスのPICマイコンに、
MCP23S17でI/Oを増設するパターン。
MCP23S17を使用実績があるので、特に難儀する点はありません。
ところがこれでI/O数を検討すると、やっぱ僅かに足りないという結果に!!
MCP23S17へ繋ぐSPI信号線に4本取られてしまうんですね。
いやぁ残念。(;;
そうすると40ピンクラスのPICマイコンにMCP23S17を増設、
というパターンが思い浮かぶわけですが、
それならいっそ64ピンクラスのPICマイコンを使ってしまう方が良くね?と閃きました。
1チップマイコンとしては64ピン程度は特に大規模というほどではありません。
しかし私の様に8ビットクラスのマイコンをメインにしていると、
64ピンは結構大きな部類になります。
今回の用途では低速な単純制御なので、PIC16Fシリーズで十分な領域。
16Fシリーズで探すと、大きくても40ピンクラスがほとんどなんですね。
そんな状況ですが、種類は少ないものの64ピンクラスも存在しました。
その1つが今回紹介するPIC16F1947です。
この石は一時期大人気だったPIC16F1939の多ピン版です。
ちなみにRAMを減らしたPIC16F1946という製品も存在します。
使い勝手としては16F1939とほぼ同じです。
16F193xシリーズに存在した周辺機能は全て内包しています。
I/O本数ですが、16F1939では36本に対し16F1947は54本。
16F1939に対してRE4~7とRF0~7、RG0~5が追加されています。
ここでちょこっと要注意なのは、ポートF及びポートGのバンクが、
ポートA~Eと異なっている点です。
Cで書いていたらコンパイラーが良しなに処理してくれるでしょうが、
アセンブラーで書く場合は意識しておく必要あります。
可能なら同じバンクに揃えて欲しいところですが、
バンクのレジスタMAPが埋まってしまっているので、
仕方なく別バンクに配置したという経緯でしょうから、やむを得ない話ですね。
その他の相違点としては、 コンパレーターが2つから3つに増えました。
あと、EUSARTとMSSPがそれぞれ2つに増えました。
私はコンパレーターを使ったことが無いので、
3つに増えても特に有難みは感じないのですが、
EUSARTとMSSPが2つに増えたのは非常に嬉しいです。
シリアル通信系は使用する機会が多いのですが、
16F193xシリーズのシリアルポートの少なさには不便を感じていたからです。
あとはLCDコントローラーの拡張されている様ですが、
私自身LCDコントローラーを使ったことが無いので、この点についてはスルーします。
そんな感じで、基本的には16F1939の上位互換なのですが、
1ヵ所違いに気づいた点はVcapピンについてです。
16F1939ではVcapピンを3ヵ所選べたのですが、
16F1947では使えるピンは1ヵ所(RF0)のみです。
実際、これで使い勝手が悪くなるとは思えないので、
むしろ改良と捉えても良いかもしれません。
ただ個人的な意見を言わせてもらえば、どうせならポートGに配置して欲しかったですね。そうすればポートFは8ビット一括アクセス可能だったわけです。
AFPCONレジスタによる代替ピン指定の内容もかなり変わっています。
16F1939ではMSSPやSRラッチに絡む内容も有ったのですが、
16F1947では全てCCPモジュール絡みになっています。
他には特に機能追加された点は見当たりませんので、
16F1939辺りを使い慣れてる方は かなり親しみやすいと思います。
逆に言えば、昨今の8ビットPICマイコンと比較すると、
かなり周辺機能が乏しいと感じてしまうかもしれません。
現時点ではPIC16F19197という石がリリースされていますので、
16F193xシリーズに拘りない無い方は、そちらを選択する手も有りだと思います。
0 件のコメント:
コメントを投稿