PIC16F1829に決定!
2013-07-23
秋の全市全郡に向けての準備・・・結構間があるとはいえ、ボンヤリ過ごすとあっという間に近づいてくるこのコンテスト向けに、外付けのエレキー製作を画策しています。「目移り症」であることは前から判っていて、ローカルノイズの撃退工作やトランスバータの製作等々宿題は沢山あれど、やはり「期日が決まっているもの」の方が気になります。さらによく考えたら、この夏休みは家族旅行で埋まってしまい製作時間が案外少ないこともあって、ちょっと焦ってきました。
エレキー作成では、自分的には勿論PICの出番なんですが、少し前にあれこれ味見していた「XC8」の気になる不具合が直ったことも製作に向けて動ける原動力に。さらに、アセンブラより生産性で圧倒的に有利なC言語で作ろうと、先週辺りからあれこれ悩み始めていました。
エレキーの単機能としては長・短点メモリの付いた小型のもので十分であり、それならPIC12Fシリーズでも良いんですが、逆に「納得できる機能を具備したもの」を作ってみるのも一興。ファンクションスイッチによるメッセージ・キーイング機能付きのものを捻り出そうと、このところ思案を続けてきましたが、具体的な形に持っていこうとプログラミング準備に入る傍ら、必要機能を実現するためのI/O数などを考え始めました。そして、18本のI/Oが制御できるPIC(=20ピン)、それも拡張ミッドレンジのもので、ある程度の量作り込んでもメモリがパンパンにならないものを探していたんですがなかなか見つからず
そこで、常套手段である本家Microchipのホームページから順を追って探していったら、PIC16F1828/1829を発見しました。
このPIC、秋月の「PIC16Fの20ピン」という辿り方では見つからず(秋月のホームページの仕分けが上手くないです)、かなり遠回りをしました・・・が、結局秋月にも売っていて、よりメモリの多いPIC16F1829が150円也
これで行くことにしました。

エレキーの入出力をざっと分けると、入力にはパドルやエンコーダ、スイッチ類が居並び、出力はLCDとキーイングTR程度・・・圧倒的な「入力マシン」であるエレキーは、殆どの時間を「入力待機状態」で過ごす代物です。即ち、何らかの入力が無いときはほぼ「待ち状態」ですから、入力トリガの割り込みで起き上がるような仕掛けができれば、かなり省電力の(ひょっとしたら、電源SWが不要になるぐらいの)エレキーができそう。そこで、入力ポートの変化で割り込む仕掛けが欲しいなぁ・・・と、このPICのマニュアルをしげしげ眺めていたら、「INTERRUPT-ON-CHANGE」という機能を発見
これぞ、PICの「スリープを呼び覚ます入力割り込み」として利用でき、省電力対策は万全となりました
一方、スイッチ操作に付きものである「チャタリング」には、それを取り除く仕掛けが付いて回ります。これは、ルックイン方式のタイミング論理(プログラム論理)により解決できて造作もないんですが、結果的に「ルックイン=間欠動作」となるため、省エネ的には不利。まぁ、次回のルックインまでタイマ割り込み待ちで寝るっていう方法もあるんですが、とにかくスイッチ数が多く面倒・・・何とか複数回のリードをせずに済む「CR+シュミットトリガ」辺りで抑え込みたく、PICの外にシュミトリ(74HC14辺り)でも並べるべか・・・と思いつつこのPICのマニュアルを眺めていたら、何と全てのポートをシュミトリ仕様に設定できることが判りました。つまり、CRのパッシブ部品で時定数だけ作ってやれば何とかなるということに
今回のPIC選定でPIC16F18xxシリーズのマニュアルをかなり眺めることになりましたが、ピン数もさることながら個々の具備機能が少しずつ違っていることを含め、結構様々な用途に使えることが判りました。特に今回選定した「1829」は、プログラム空間が8Kワード、自由に使えるSRAM領域(GPR)が1Kバイトもありますから、C言語で開発しても1Kライン程度(無論、乗除算等が多いと厳しいですが・・・)は組み込めてしまいそうです。クロックも最大32MHzですから、かなりの用途に使えるのではないかと思います。
エレキー作成では、自分的には勿論PICの出番なんですが、少し前にあれこれ味見していた「XC8」の気になる不具合が直ったことも製作に向けて動ける原動力に。さらに、アセンブラより生産性で圧倒的に有利なC言語で作ろうと、先週辺りからあれこれ悩み始めていました。
エレキーの単機能としては長・短点メモリの付いた小型のもので十分であり、それならPIC12Fシリーズでも良いんですが、逆に「納得できる機能を具備したもの」を作ってみるのも一興。ファンクションスイッチによるメッセージ・キーイング機能付きのものを捻り出そうと、このところ思案を続けてきましたが、具体的な形に持っていこうとプログラミング準備に入る傍ら、必要機能を実現するためのI/O数などを考え始めました。そして、18本のI/Oが制御できるPIC(=20ピン)、それも拡張ミッドレンジのもので、ある程度の量作り込んでもメモリがパンパンにならないものを探していたんですがなかなか見つからず

このPIC、秋月の「PIC16Fの20ピン」という辿り方では見つからず(秋月のホームページの仕分けが上手くないです)、かなり遠回りをしました・・・が、結局秋月にも売っていて、よりメモリの多いPIC16F1829が150円也


エレキーの入出力をざっと分けると、入力にはパドルやエンコーダ、スイッチ類が居並び、出力はLCDとキーイングTR程度・・・圧倒的な「入力マシン」であるエレキーは、殆どの時間を「入力待機状態」で過ごす代物です。即ち、何らかの入力が無いときはほぼ「待ち状態」ですから、入力トリガの割り込みで起き上がるような仕掛けができれば、かなり省電力の(ひょっとしたら、電源SWが不要になるぐらいの)エレキーができそう。そこで、入力ポートの変化で割り込む仕掛けが欲しいなぁ・・・と、このPICのマニュアルをしげしげ眺めていたら、「INTERRUPT-ON-CHANGE」という機能を発見


一方、スイッチ操作に付きものである「チャタリング」には、それを取り除く仕掛けが付いて回ります。これは、ルックイン方式のタイミング論理(プログラム論理)により解決できて造作もないんですが、結果的に「ルックイン=間欠動作」となるため、省エネ的には不利。まぁ、次回のルックインまでタイマ割り込み待ちで寝るっていう方法もあるんですが、とにかくスイッチ数が多く面倒・・・何とか複数回のリードをせずに済む「CR+シュミットトリガ」辺りで抑え込みたく、PICの外にシュミトリ(74HC14辺り)でも並べるべか・・・と思いつつこのPICのマニュアルを眺めていたら、何と全てのポートをシュミトリ仕様に設定できることが判りました。つまり、CRのパッシブ部品で時定数だけ作ってやれば何とかなるということに

今回のPIC選定でPIC16F18xxシリーズのマニュアルをかなり眺めることになりましたが、ピン数もさることながら個々の具備機能が少しずつ違っていることを含め、結構様々な用途に使えることが判りました。特に今回選定した「1829」は、プログラム空間が8Kワード、自由に使えるSRAM領域(GPR)が1Kバイトもありますから、C言語で開発しても1Kライン程度(無論、乗除算等が多いと厳しいですが・・・)は組み込めてしまいそうです。クロックも最大32MHzですから、かなりの用途に使えるのではないかと思います。
- 関連記事