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の割り込みと
カウントするタイマーの設定と
まだまだやること盛りだくさん・・・

とりあえずは、やっとサーボーモーターを
期待する角度に動かすことができるようになった。
つ、つかれた・・・