« 136kHzBPFプリアンプの製作 | トップページ | 「LCD&タッチセンサ」のLCD時計の製作 »

2011年1月27日 (木)

秋月、新マイコン16F1938の動作確認

16f1938captest 秋月のサイトを見ていると、前から話を聞いていた、マイクロチップ社の新しい16F1000シリーズがありました。周辺機器が増えたこと以外に、内部アーキテクチャも若干増強されています。

新しいマイコンが出て、しかも安いときでも、なかなか新しいマイコンには移行できませんが、それは、なれたマイコンでは、すでに使ったことのある機能は、同じようにプログラムをすることで苦労なく動作するのですが、新しいマイコンでは、何かの違いで動作しないことがあります。

周辺機器が新たに追加されただけのマイコンなら、追加された機能を確認するだけで済みますが、基本アーキテクチャにも改良がある場合、全てを試して見なければなりません。それが、なかなか新しいマイコンに飛びつけない理由です。

しかし、一度確認してしまえば、要領をつかむことができると思い、PIC16F1938を購入して、動作確認を始めました。

始めに、クロックが32MHzになったので、内蔵発振器を使ってPLLにより32MHzで動作させることから始めました。32MHzで発振(動作)しているかの確認は、何命令かごとにポートを反転するなどして、外部で予定の周波数になっているかを確認します。簡単のため、ソフトウェアループにより、LEDが1Hzで反転するようにプログラムしました。しかし、LEDは、4Hzぐらいの遅さです。ソフトウェアループのサイクル数は合っているようなので、PLLが有効でないなどの原因があるようでした。結果的に、内部発振のクロックをポートに出力する設定となっていたため、PLLが有効でなかったようでした。

命令が増強される中、レジスタのバングの指定が以前と変わっており、BSRでバンクを指定するように変わっていました。以前は、バンク指定にマクロを使用していたので、マクロを変更しました。その時、Wレジスタを介してBSRを設定するようにしたのですが、これが間違いでした。バンク切り替えをするとき、Wレジスタが変わらないとしてプログラムしていたことを忘れていました。後で、BSRに即値を設定できる命令が追加されていることを知り、これに改め動作するようになりました。

16F1938は、16F88などと変わらないように見えますが、ハード的にずいぶん違っていました。割り込みのときにレジスタが自動的に退避され、また、FSRが2つになり16ビットになりました。レジスタの割り当てアドレスも若干変わり、すでにあるプログラムはいちいち見直す必要がありました。

使いそうな機能は、全て動作させてみる必要がありました。まだ全てを確認したわけではありませんが、16F88や16F886のプログラムを持ってきてもそのままでは動作しないようでした。チェックした基本的機能をモジュールとしてまとめておけば、使うときにずいぶん楽になります。

新しい機能を使うたびに動かずに悩むことが続きましたが、何とか動き始めました。そうなってくると、追加された命令のありがたみを感じることになりました。今まで面倒だったのが、ほとんど解決されているような気がします。それだけ、力の入ったプロセッサなのでしょう。

« 136kHzBPFプリアンプの製作 | トップページ | 「LCD&タッチセンサ」のLCD時計の製作 »

製作」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 136kHzBPFプリアンプの製作 | トップページ | 「LCD&タッチセンサ」のLCD時計の製作 »

フォト
無料ブログはココログ
2016年6月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    

USBとマイコンの参考書購入