2018/01/03(WED) | 【Nチビ】SPD2:新年なのにマイコンと格闘中 |
---|---|
あけましておめでとうございます。
引き続きサーボモーター制御に格闘中 正確には高性能すぎるPIC12F1822と格闘中 う〜む。相変わらずアセンブラでやっているんだけど デバッグ環境がないから、 動かないと何が悪いかまったくわからない・・・ なので、 プログラムを焼いては回路にマイコンを貼り付ける 失敗して プログラム焼くためマイコンを焼き用ボードに貼り付ける の繰り返しが面倒なんで ジャンパー線で回路に焼き器をくっつけました これで、焼くのと回路動かすのが両方できて便利 って・・・初めからそうすればよかった・・・ で、 PWMの設定にハマってて 試行錯誤でいろいろやってみると 単純にレジスタのBANKを間違ってたり とガックリな原因・・・ 一応、PWMの設定をメモっておこうかな? ここにはないけどクロックを2MHzに設定。 で、 まずは、APFCONの0bit目で PWMを使うPINをRA2に設定 で、 CCPR1LとCCP1CONの4〜5bit目で デューティーサイクルを初期化 あとはCCP1CONのbit3-0でPWMと設定 T2CONではbit1-0でプリスケールを1:64を指定して PR2を156として1周期20msを実現 周期 = (PR2+1) × 4 × 1クロックの時間 × プリスケーラ = (156+1)× 4 × (1/2MHz) × 64 = 20096 μsec = 20.096 ms という計算になってます。 ちなみにデューティーサイクルの指定は デューティーサイクル1つの時間 = 1クロックの時間 × プリスケーラ = (1/2MHz) × 64 = 32 μsec = 0.032 ms なので、16とすると 16 × 0.032 ms = 0.512 ms 75とすると 75 × 0.032 ms = 2.400 ms となります。 これが今回使うサーボモーターに入れるパルスの範囲となっています。 あとはホールICの割り込みと カウントするタイマーの設定と まだまだやること盛りだくさん・・・ とりあえずは、やっとサーボーモーターを 期待する角度に動かすことができるようになった。 つ、つかれた・・・ |