モータードライバみたいなものを作っています。PICは継続して作らないと作法を忘れてしまいます。。
とはいえ魅力的なお値段(80円)のPIC12F675を使ってみます(と思ったらさらに半額以下のモノもあり、、恐るべしPIC)。
今日つまずいたところ
・main.cの書き始め
FUSE設定の書き方を忘れました。
とりあえず内蔵クロックモード(クロック数がわかりませんでしたが、データシートを見ると4MHzとのこと)ということを指定してそれ以外はデフォルトなので不要かも。
3番pin(GP4)につないだLEDを点滅させようと思ったものの、中途半端な光量で光っていました。もしやショート→電圧ドロップと思ったのですが、オシロスコープを当ててみると非常に細かいパルスが出ていました。
内蔵クロックを使って、CLKOUTを切るにはINTRC_IOが必要なようです。
また、その後もスイッチの状態で出力を変えるだけのはずがパルス出力になってしまっていたので、#use fixed_io()を使いました。
この指定をしないといちいちOFFになるというのはいかがなものかと思いました。。
#include <12F675.h> #include#fuses INTRC_IO,NOWDT,NOPROTECT #use delay(clock=4000000) #use fixed_io(a_outputs=PIN_A0, PIN_A1, PIN_A2, PIN_A4) #define COM_CW 0x08 #define COM_CCW 0x00 #define ROT_CW 0x11 #define ROT_CCW 0x06 #define ROT_STP 0x00 void main() { set_tris_a(0xE8); output_a(0); char buff; while(1){ buff = input_a(); buff = buff & 0x28; if(buff == COM_CW){ output_a(ROT_CW); }else if(buff == COM_CCW){ output_a(ROT_CCW); }else{ output_a(ROT_STP); } } }
コメントを残す