2012/07/07(SAT) 【Nチビ】ウインカーLED化(実験編)
さてプログラム設計までできたので
秋月でポチッ!となっ!
で、PICにプログラムを焼く機器が必要なんだけど・・・
秋月製のは高いし通信がシリアルなんで
USB-シリアル変換が必要ってのでさらに費用が掛かる・・・
ということで、いろいろ調べると
PICKIT2というUSBで接続できて
しかもブレッドボードで焼き焼き出来ちゃうらしい。
ということで、それをポチッ!

数日するとポチッ!とした部品等々が届いた。
まずはPICKITの設定から。
CD-ROMとかついて来たけど
完全無視で、MicrochipのHPから最新版を落とす。
PICkit 2 v2.61.00 Setup A.zip
MPLAB_IDE_v8_60.zip
の二つをPCへインストール
PICkit 2ってのはPICマイコンとのR/Wを可能にしてくれるツール
MPLAB IDE は、この前空想したプログラムをコンパイルしてくれるツール。
ん?コンパイルって表現は変だね・・・(^^;;;

ということで、それぞれインストールして
空想したプログラムをBuildするとSUCCESSだった。

じゃあ、ブレッドボードに配線していく。
ブレッドボードってのは半田付けしなくて回路が作れて便利だ。
いわゆる大人の科学の電子ブロックをさらにリアル化した感じね。
フォト
PIC12F629を中心にこんな風に配線
このブレッドボードはジャンパー線付きで
700円くらいだったので非常に便利だ。
で、PICKIT2はこんな風につないで
フォト
PICKIT2はPCにUSBで繋がっているのだ。
で、さっそく作ったプログラムを焼きこんでみる。
あ、そうそう、このPICKIT2は電源供給もできるのだ。
5Vで数mA程度らしいけど。
で、プログラムを焼いて5Vを供給してみると・・・
あり???LED点かないっす・・・
えっと〜焼き方は間違ってなさそうだ。
んじゃ、考えられるの次の二つ
@5Vの供給方法が間違ってる
Aプログラムが間違っている

さっそくデバッグですよ・・・(涙)
名探偵コナンか?金田一少年の事件簿っすよ。
犯人探しっすよ。
じっちゃんの名に掛けてっ!
ちなみにいうと、おいらのじっちゃんもプレス屋だけどね・・・(^^;;;

まず@の調査。
プログラムのメインループに
  MOVLW  B'00000001'
  MOVWF  GPIO
を追記する。
つまりLEDを点灯するようにGPIOのビットを立ててみる。
これでプログラムをbuildして焼いて5V供給してみる。
見事に点灯している。
つまり5Vの供給方法は間違っていない。
次はAだ。
まず考えられるのは次の二つ
@初期化ルーチンが間違ってる
Aタイマーが動いていない

@については、先のデバッグロジックでLEDが点灯したので
きっと問題ないだろう
AについてはISR(いんたーらぷと さーびす るーちん)
つまるところ割込みルーチンね。
そこのビット反転しているロジックの部分に
  MOVLW  B'00000001'
  MOVWF  GPIO
を書いてみる。
つまり初期化ではOFFで0.5秒後ONになりっぱなし
タイマーは動いていることの証明となるはず。
これでプログラムをbuildして焼いて5V供給してみる。
見事に5V供給して少ししてからLEDがONとなる。
つまりタイマー割込みはうまく動いているっぽい。
となると、一番怪しいのはビット反転ロジック。

MASK:  EQU B'11111110'
・・・・
  MOVF  GPIO,W
  XORLW MASK
  MOVWF GPIO
・・・・
机上で確認してみる。
XORなんで
「真」「真」は「偽」
いや「シンシン」と言えば出産おめでとう!か?
昨日、別の「シンシン」とも飲んだけど(笑)

「偽」「偽」も「偽」
「真」「偽」と「偽」「真」が「真」なのだ。
なんの話だって?
デジタルな世界では「真」が「1」で「偽」が「0」と置き換えてくれ。
というの確認してみると
んにゃ・・・「MASK:  EQU B'11111110'」のマスク値が見事に逆ですね。

MASK:  EQU B'00000001'

としないとトグルしないっすよ。
とほほ・・・
昔からMASK処理弱いんだよねぇ〜(^^ゞ;;;;;
言い訳言い訳・・・

ということで、プログラムを直してbuildして焼いて5V供給してみる。
フォト
見事に点滅してくれました。
点滅周期も大体500msec毎でウインカーとしてはOKっぽいな。

これを元に回路組めばいいね。
次は回路作るフェーズかな???