PICの環境を整えたのでメモ。
PICプログラミングの統合開発環境:MPLAB IDE
PIC書き込み:秋月PICプログラマVer.4
OS: Windows 7
MPLAB IDEのインストールについては問題無し。
AKI PICプログラマver.4についてはいくつか補足。
(1)ver4のPICライティング用PICへの換装購入したのはPICプログラマver3.5完成品と
ver.4バージョンアップキット。
説明書が分かりにくいのだが(この界隈ではこれが普通?)
ライティング用のPICをver3.5→ver4に交換しないといけない。
ver3.5のPICが堅くはまっていて「本当にこれ抜くの?」と思ったが
なんとかてこの原理で外してver4に換装した。
(2)最新版ソフトウェアを使うにはファームウェアのアップデートが必要付属のCDに入っているPICプログラマV4ver.6.6.56は問題なく使えるが、
最新版ネットからダウンロードしてインストールすると、
ファームウェアをアップデートしろと言ってくる。
アップデートはとりあえず保留にしてver6.6.56を使い続けることにした。
(3)COMポートの指定付属のUSB Serial Driverをインストールする。
なんかつまづいたけど結局できたらしい。
インストールが終了すると、デバイスドライバのCOMポートから
現在接続しているポートが表示されるので
それを通信ポートに指定する。
(4)通信エラー?さっきまでうまくいっていたのにいきなり
「ライタが接続されていません」という表示がでるようになった。
ソフトウェアのインストールを試したり、ポートを変更してみたりしたが
結局ver4の書き込み用PICがしっかりはまっていないのが原因だった。
強く押さえつけると解決した。
まずPIC16F628を使用してコードをアセンブルする。
list p=16f628 #include<p16f628> __CONFIG _CP_OFF & _BODEN_ON & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _LVP_OFF w_temp EQU 0x70 status_temp EQU 0x71 CNT1 EQU 0x20 CNT2 EQU 0x21 ;****************************** ORG 0x000 goto main ORG 0x004 movwf w_temp movf STATUS,w movwf status_temp ;ISR Codes movf status_temp,w movwf STATUS swapf w_temp,f swapf w_temp,w retfie main bcf STATUS,RP0 bcf STATUS,RP1 clrf INTCON clrf PORTA movlw 0x07 movwf CMCON bsf STATUS,RP0 bsf PCON,OSCF clrf TRISA clrf TRISB bcf STATUS,RP0 clrf PORTA clrf PORTB main_loop bsf PORTB,3 call DLY_250 bcf PORTB,3 call DLY_250 goto main_loop ;Delay Routine DLY_250 ;250ms movlw 0xfa movwf CNT1 DLP1 ;1ms movlw 0xf0 movwf CNT2 DLP2 nop nop decfsz CNT2,f goto DLP2 decfsz CNT1,f goto DLP1 return END
アセンブラとかわくわくしますね。
無事にビルドが通ったのでPICに書き込む。
OK。
実際に回路に組み込んでスイッチON。
点灯しない。
ここで原因究明。以下のトラブルシュートを行った。
(1)コード的な問題一語ずつ確認したが問題なさそう。
敢えて言えば、はじめ16F628としていたが、実は購入したのは16F628Aだった。
はじめのインクルードの行を訂正した。
(2)ライタの問題はじめ、書き込む際に「拡張機能」>「CMDプログラム」というボタンを押していた。
同じパネルにある「EEPROM DATAプログラム」のクリックも必要なのか?とか思っていたら
メインパネルに「プログラム」という大きなボタンを発見した。
以後これを使用するようにした。
(3)回路的な問題最終的にこれが原因だった。
(a)DCジャックの+-が逆完全に思い込みで正負をとらえていた。
テスター使うときは電圧だけでなく、ダイオードを入れて方向を確かめないといけないと学習した。
(b)ダイオードのアノードとカソードが逆長い方がアノードと覚えていたのに前述のDCジャックが逆という問題もあって逆に考えていた。
(c)実体配線が複雑
指示された回路図
実際にこのように組んでみた。
両方とも回路的には等価だと思うけど、実際はシンプルな後者の方しか動かなかった。
どこかで短絡しているのでしょうか。
シンプルな形を取ることで問題が発生する箇所をあらかじめ減らすという教訓を得た。
理論と実践のギャップですね。
(補足:後閑さんの本を読んでたら、大電流が流れると同電位に設計しても電圧降下が起こるらしい。
GNDは太く短く、が基本とのこと)
動作中の様子。Hello World!にあたるもの。
PIC16F648Aを使用
ちなみに動くのに2日かかり、16F628Aは途中で焼損した。
知ってはいたけどハードウェアってソフトウェアと違って自分を破壊して暴走するから怖い。
たぶん10秒も立たないうちに煙が上がってた。
この理由は
ー正負を逆にしていたこと
ー配線が違ったこと
の両方があると思う。
とても勉強になった。