ちょっとはまった点。
RA0/AN0 ~ RA4/AN4 は、デフォルトでA/D入力端子になっている。ANSELレジスタで、A/D端子にするかデジタルI/O端子にするか設定するのだが、ANSELでの設定は、TRISAレジスタでの入出力方向設定より先に行う必要があるようだ。
最初、TRISAでディレクション設定してからANSELの設定をしてたら、TRISAで出力に設定したつもりのピンが出力になっておらず、悩んだ。
内蔵のクロックは、8MHz校正済み(プログラムでの校正値設定は不要)プレシジョンオシレータ(INTOSC)と、31.25kHzオシレータ(INTRC。こちらはズレが大きい。WDTのソースなどにもなっている)がある。データシートではINTOSCという言葉とINTRCという言葉がごっちゃになってる場合があり、要注意である。
8MHzクロックを使う場合、125k/250k/500k/1M/2M/4MHzのいずれかに分周したものをCPUクロック(&周辺クロック)に出来て、遅くてよいから消費電力削減したい場合に便利である。
WDTはINTRC(32usピリオド)がソースになっている(従来のPIC12,16シリーズでは、WDT専用の約18msピリオドのオシレータが使われていた)、これに伴い16bitのWDTプリスケーラがついた(といっても設定は16段階だが)。これで、ほぼWDTポストスケーラの必要は無くなったと思うのだが、あいかわらずWDTポストスケーラはTMR0プリスケーラと兼用であり、パワーON時はWDTポストスケーラに割り当てられている。デフォルトでTMR0プリスケーラになってたほうが便利だと思うんだけど。
(デフォルトでWDTプリスケーラが1:512になっていて、32us×512=約16msピリオドってことで、従来との互換性を重視したってことなんでしょうね)
それと、CONFIGワードでWDTをディセーブルにした場合、プログラムでWDTイネーブル/ディセーブルができるようになった。
18pinにいろいろ詰め込まれていて便利そうである。12F683は、これの8pin版と言えそうだ。
残念ながら、16F88は4.0Vからしか動作保証がない。16F648Aは3.0Vから動作保証があったのだが。LF88は2.0Vから動作保証があるが、秋月では入手できないだろう。それにLF88は10MHzまでしか動作しない。ここらへんが88の弱点か?
んー、12F683は4MHzまでなら2.0Vから動作することになってるなあ。なんでだろ?
秋月の通販カタログには、いまだに16F648Aが「最新最強18ピンPICマイコン!」と書いてあるが、直してほしいなあ。16F88の存在を知らずに、16F648Aをよぶんに買っちゃったよ。
まあ、16F88のほうにも「18ピン最強のPICマイコン」と書いてあるのですが、なんかこの文面じゃ16F648Aのほうが強そうに見える(笑)。
コメント