回答編集履歴

1 追記

nac_tnk

nac_tnk score 322

2021/02/05 09:19  投稿

スケッチを見るかぎり、
・Stepper_L6470_ResetCMD()とは?
・Stepper_L6470_setup()とは?
・初期設定をしていない
といった問題があります。
> getsutasの値を取得してみましたが
getsutasなんてありませんよ。
STATUSレジスタの値を取得してみた、或いは、GetStatusをしてみた、でしょうけど、
それが出来ないというのは一番先に来ます。
つまり、それはどんな状況でも通用するコマンドだからです。
(勿論ちゃんと配線、給電が出来ている事が前提です。)
ただし、このスケッチ中にGetStatusをしているコードが書かれていません。
なので、どこが悪いのかは判りません。
スケッチに問題はあるけど、配線にも問題があるかも。
スケッチに問題はあるけど、配線にも問題があるかも。
<追記>
ちょっと繋いでみたので書いておきます。
・モータ用電源も、接続する必要がある。※ジャンパー次第なのかもしれません。
 ジャンパーを2つ付けた状態では、モータ電源を繋がないと動きません。
 また、モータ電源を切った途端に通信は終わります。
・コードは
 SPI.begin(PIN_SPI_SCK, PIN_SPI_MISO, PIN_SPI_MOSI, PIN_SPI_SS);
 の前に、
 pinMode(5,OUTPUT);//PIN_SPI_SS
 といれたら、getStatusは取得出来ました。
・getStatusは、ビジーウェイト関係無しに、いつでも取得出来る命令です。
 なので、busyピンの状態を見ない
 Stepper_L6470_Send_u(0xD0);
 が適当です。
 
・getStatusの戻り値(レジスタ)は16ビットです。なので、3バイト取り込む必要はありません。
 まぁ、問題は無いですけど。
※上記で通信は出来ます。ただし、初期設定はしていないのでモータは動かないでしょう。
モータを動かす「前に」、初期設定をする必要があります。
・kvalの4つ。
・ストール電流、過電流の値
これは、今回の条件では必須です。
あとは、加速度とかも、最高速/最低速とかも設定しておいた方が良いです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る