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っぽいな。 これを元に回路組めばいいね。 次は回路作るフェーズかな??? |