今回の例で具体的に気になる点は、8ビットのPICが計算した値で、7ビットの受信機であるAD5220とのやり取りはうまくいくのだろうかということです。/=327.4;これは100分割になるように割っていますよね?でも今回のデバイスは0〜127の範囲になるようにします。そこが大きな違いです。target/=128;でも良いです。8ビットのPICが計算した値で、7ビットの受信機であるAD5220操作自体は1ビットのシリアルです。中のカウンタのメモリが7ビットなだけです。(PICでも8ビットのタイマーと16ビットのタイマーがあるでしょ?レジスタの中には7ビットのものもあるかもしれません。それと操作は全くの別物です)7ビットのメモリというのは単に0〜127まで数えられる、という事です。x9cだって、使用メモリは7ビットでしょう。16ビットのパラレル操作だったとしても、16ピンを合わせてからクロックを入れるだけです。8ビットマイコンでは出来ない、というわけではありません。/=327.4;この327.4という数字は、10ビット1024等分の分解能なんだそうですね。以前でのやり取りで以下の通り説明してくれました。最大値が1023*4=4092です。これが100分割になるように40.9で割っています。※今気づきましたけど、最大値が99になるようにすべきですね。40.93で割った方が良いです。327.4は、32回のサンプリングの場合です。いろんな数字が出てきますが、>今回のデバイスは0〜127の範囲にこれは、抵抗値の段数でしょうか?サンプリング回数からくる数値と同じ考え方をして、結果どうなのですか?>target/=128;プログラムが変わりましたね。言われていますが、良くわからないのです。分解能という単語を調べたところですから。問題アリなら、プログラムは変えます。全体がこうで、内、変更箇所はこうだと言ってくれた方が良いのです。行き違いが少なくなります。それも、手間もかかるでしょうから、お任せします。10ビット1024等分の分解能なんだそうですね。以前でのやり取りで以下の通り説明してくれました。10ビット1024等分の分解能はPIC(16f1827)のADCの分解能です。0〜1023の値が返ってきます。これは、抵抗値の段数でしょうか?そうです。抵抗値の段数も、ワイパー位置も、128(100)ポジションも凡そ同じ意味です。X9Cでは値が0〜99の範囲になるように、AD5220では値が0〜127の範囲になるように割っています。サンプリング回数からくる数値と同じ考え方をして、結果どうなのですか?聞いている意味がよく判りません。Machから速度がPWMという形で送られてきます。それは設定した最高速度に対してのHIGHの時間/周期という形で、つまり最高速度に対しても割合で送られてきます。フィルターを付けてアナログ受信したとしても、同じことで、それはADC値/1023が最高速度に対しての割合になります。出力の方はその割合で、そのアナログポテンショ(のワイパー位置)を操作することになります。プログラムが変わりましたね。これも何のことを言っているのかよく判りません。<追記します>基本的に聞かれたことを答えた(説明した)だけで、新たに何かをしたつもりはありません。それと、上の確認用プログラムですけど、adconv()x9c_init()は要りません。(プログラムは書き換えなくても問題はありません)そして、MACH(SSボード、SECボード)とは繋ぎません。LEDもボリュームも繋ぎません。(こちらの方が重要です)X9Cの単体のテストですから、PICとX9Cを繋いで電圧を計測してください。PWMTRさん,猛牛ロックさん,こんばんは。このところ,実家の草刈りで,時間取られています。作業の途中で,激安の刈払機のネジがなくなったり,で,何度か中断です。後一日ぐらいで,終わるかなあ。AD5220ですが,そうです。https://jp.rs-online.com/web/c/semiconductors/data-converters/digital-potentiometers/?searchTerm=AD5220&redirect-relevancy-data=636F3D3126696E3D4931384E53656172636847656E65726963266C753D6A61266D6D3D6D61746368616C6C7061727469616C26706D3D5E5B5C707B4C7D5C707B4E647D2D2C2F255C2E5D2B2426706F3D31313326736E3D592673723D2673743D4B4559574F52445F53494E474C455F414C5048415F4E554D455249432677633D4E4F4E45267573743D414435323230267374613D41443532323026&r=f&searchHistory=%7B%22enabled%22:true%7Dで求めました。50個なんていりませんものね。暇見て,あれこれやってましたが,モニター用に作ったLCDを破損したり,手持ちの16F88全部破損したりと,トラブル続きでした。確認できるかと思います。モニター用に作ったLCDを破損したり,手持ちの16F88全部破損したりとあれあれ、どうしちゃったんですか?16F88に関しては機種変更のいい機会かもしれません。16Fで最強の16F17XXシリーズはどうですか?PIC16F1769やPIC16F1778辺りです。(USB以外の)全てが詰まっているので、他を探す必要が無くなります。※今回の件に関しては16F1579あたりが最適だと思っています。(16bitのPWMがあるので)PICF88も昔は「最強」だったのでしょうけど、今では「必要最低限が揃っているマイコン」という感じです。私としては(私が書いたものは)、どれもテスト(確認)用のプログラムです。Gコードのみ(おまけにMACHからという前提が付きます)でしかスピンドルを動かせない、という仕様はちょっとあり得ません。SSボードやSECボードが壊れる可能性もありますし、MACHのサポートも永久では無いでしょう。作業上でもちょっと手動で廻したい時はあると思います。スピンドル命令の書き忘れも含めて。実際には、添付図のような?インターフェイスを作って、ちゃんと手動も出来るようにした方が賢明です。・manual:完全手動。back:MACHからの速度になるように、フォトリフレクタからの実測値で合わせる。みたいな感じの物を想像しています。PWM猛牛ロックさん,TRさん,こんばんは。>あれあれ、どうしちゃったんですか?タクトスイッチ使って,アップダウンのできる基盤作成してたのですが,18ピンの手持ちのソケットがなかったんで,20ピンのソケット使ったのが大きな間違いでした。目元もあやふやなので,上の方をあけて挿すように配線したのですが,いつものくせて,上詰めで,さして,一発で破損です。ところで,いろいろやってみた結果です。AD5220の公証?100kのものですが,計測結果,約90kΩでした。それから,TRさん,AD5220の下記のプログラム→のような訂正が必要です。0)AD5220_val--;}AD5220はダウンのクロックで動作のようです。引き続き,いろいろ試してみます。******追記です。片側0.2kΩ程度残ります。AD5220の電源の入れ方で,コントロールできなくなる場合があるようです。PWMmaboさん、今晩は。>それから,TRさん,AD5220の下記のプログラム→のような訂正が必要です。0)AD5220_val--;}実は、その動作に係る真理値表は、x9cも、AD5220も同じなんですね。自分としては、maboさんと同じ意見でしたが、、、。No1535を見たらわかりますが、maboさんと同じ提案をしましたが、No1536で却下されました。いったいきさつがあります。抵抗値は、アップとダウンしました。maboさんの意見が事実だとすると、どちらでも構わないことになってしまうけど。猛牛ロックさんが、No1536で理由を述べていますので見て下さい。それと、共通理解のプログラムですが、事実は小説より奇なりです!実験結果から、訂正すべき点があれば、この件も含めて、もう一度書き込んでください。片側0.2kΩ程度残ります。自分のx9cは10kオームなんですよね、確か、210Ωから8.5kΩでした。割合で見たら、ほぼ一緒な感じですね!!抵抗値の誤差について、maboさんに話したでしょ。No1587で書き込みました。min20&〜max20%たぶん、そんなもんなんですよ、数打てば当たるかな(笑い)かの有名な、工作室売店の記事にも同様な書き込みがあります。「抵抗値もばらつきがある。5kΩの物を購入しても4〜6kΩにばらつく。このばらつきは分圧の時には気にならなくなります。AD5220の電源の入れ方で,コントロールできなくなる場合があるようです。x9cもそんなところがありました。自分は、x9cや、5220は、構造が大別して2つに分かれていると思います。入れるコツは、計算部門に最初に電源を入れると、動作は問題なかったと思います。ここまで来たので、自分が気になった点がもう一点あります。電源ONで、一瞬、大きな電流が流れてしまいました。LEDで確認していました。これは仕方がないかな〜。自分の改良したプログラムがあります。改良案のプログラムをお話しします。