Darkside(リンクエラー修正しました)

2020年2月15日(土) 19:57

dsPICの使い所

 ほぼ、PIC16F1779 の高速版として使える。
 PIC16F1779 が32MHz 動作で8MIPSなのに対し、dsPIC33EV は140MHz 動作で70MIPS だから、これだけでも処理が間に合いそうである。外付けにコンデンサーが多数必要なのは、同一パッケージで性能差を考えるとまあ仕方ない。

 PWMに関しては、DUTYを変更したときにPWM境界まで待ってから変更を反映する機能がある。8ビットPICはこの同期変更機能がなく、DUTY変更時に異常幅のパルスが良く発生した。これだけでも、かなり価値は大きい。
 また、16ビットPWMが使える8ビットPICは、DUTY変更とその反映を別命令で行う必要があり、つまりは変更に時間が掛かった。しかし、dsPIC33EV は一発変更できそうである。

 概してXC16だと、MCCがサービスルーチンをあまり作ってくれず、自前でレジスターを書き換えるのがメインっぽい。しかしどっちみち、8ビットPICでも処理速度の問題からレジスターを直接書き換えるコードにしていた。
 サービスルーチンがピンの別名を反映してピンアサインの変更を吸収してくれていた、のが無くなるが、今回のように処理速度を優先させたい場合は別にハンデにならない。

 ただし、動作確認は機能1つ1つ順番に、念入りに必要だ。I2Cによる液晶表示も、SPIハードウェア通信も、動作実績がない。

 いざMCCで設定を開始したところ、dsPIC の選定を誤ったことに気付いた。本で使われている dsPIC33F と異なり、PWM出力アサインを1命令で切り替える機能が無いのだ。説明に使用されているレジスターが、dsPIC33E には無い。ところが、dsPIC33F はMCCに対応していない。どういう嫌がらせだ?
 dsPIC33F は16〜50MIPSしか出ない旧機種である。しかし70MIPSの dsPIC33E は、ブラシレスモータ−の制御に余分の命令を要する。PIC16F1779 に近いコードを書かねばならない。だが、PIC16F1779 の10倍近い速い機種だと考えれば、目的には適合する。どっちみちMCCに対応していない機種の使用はあり得ないので、このまま dsPIC33E で開発を進める。

 ハイサイドとローサイドのPWMを独立制御できないため、ローサイドは普通に GPIO で制御する。完全に、「モーター制御用」PICを選んだ意味が失せている。
 また、ホールセンサーを一度に読めるよう、3入力をポートAに集めた。

 ついでに、dsPIC を8ビットPICの代わりに使うと便利そうな用途について、調べてみる。
 まず第一に、送信機用PIC。これは現状、メモリー容量不足が深刻である。送信機は液晶表示を多用し、sprintf が大活躍なので、膨大なメモリーを必要とする。8ビットPICでは根本的にメモリーが足りないし、3.3V動作させるので dsPIC との相性も良い。そうすると、dsPIC33CK256MP202 などが適合する。28ピンで256KBのメモリーを持つ。これなら、Sタンク専用送信機+αも余裕で作れるだろう。

 あと受信機PICも、SPIだI2CだUARTだと通信が飛び交うので、dsPIC にしてしまうのも手である。
 ただし dsPIC は最小でも28ピンだから、実装できる数が減る。また、5V系の選択肢が少ない。現状Sタンクの制御系は5V系で統一されていて、3.3V系は例外扱いである。5V系と3.3V系がほぼ対等に混在するようになると、煩雑だ。ラジコンでは制御系電源が6Vなど、むしろ5Vより高くなる傾向にあるため、ラジコン制御用PICは断然5V系が扱い易い。

 もう1つ、dsPIC の有力用途がアクティブサスの制御。8ビットPICでは簡略処理しか出来ない。しかし高速な乗除算命令を持つ dsPIC ならば、遥かにスマートで強力な制御が可能だ。ところが、ここで思わぬ落とし穴。28ピンの dsPIC では、大半がPWMが3系統しか使えないのだ。PIC16F1575 なんて、14ピンで4系統の16ビットPWMが使えるというのに。5系統使える dsPIC もあるが、5V動作のものがない。サーボモーターに信号を送るので、できれば5V系が望ましい。3.3V系でも動きそうなのだが、電圧マージンが不安になる。
 現状でもシリアルPWM変換に PIC16F1575 を使っているが、もう1つ増やして8つのサーボを2系統のシリアル送信だけで制御できるようにしてしまう手はある。そうすれば、ブラシレス制御用に買った dsPIC33E でアクティブサスも制御できる。だが、28ピンというのかいかにも邪魔過ぎる。20ピンのPICを5つ搭載できるメイン基板を、丸ごと作り直さねばならなくなる。

 まてよ・・・ソケットから抜かずに5ピンヘッドだけ引き出せば、プログラムは可能だ。そうすれば、アクセス困難な場所にPIC基板を置くこともできる。電動マガジン駆動用モーター周辺には、PIC基板を置く空間はある。そこに dsPIC 基板を置いてSPI受信だけさせれば・・・さて、どうしたものか。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4