電子工作を始めてから、ずっとやってみたいと思っていた、PICマイコンを始めました。 PICマイコンをするためには、PICライターが必要になります。 PICライターを自作してみようと思っていましたが、確実に動くものを持っておいたほうがいいと思い、AKI-PICプログラムキットと電源&ケーブルのセットを購入しました。 バージョンアップキットを購入し最新のPICにも対応できるようにしました。Ver4になりました。 本来、テスト用のボードが必要ですが、これくらいならと思い汎用基板でテスト用のボードを作成しました。 早速、SAMPLEのプログラムを書き込み動かしてみました。 LCDの手持ちがあったのでLCDのサンプルプログラムも動かしてみました。 次は、SWなどで入力をしてその内容によって動作を変化させるようなプログラムを作成してみたいと思います。 HPからいいソースを見つけうまく動きました。 次は、割り込みやタイマーを使ったプログラムを作成してみたい(探して)と思います。 現在、アセンブラの勉強中です。 《MPLAB》 最初はAKI-PICプログラマーキットに添付されていた、秋月製のアセンブラを使用していましたが、ネット上でPIC関連のHPを見るとどうもPICのメーカーの(MICROCHIP)MPLABで記述されたものが多いようです、このMPLABをセットアップしてみることにしました。 このMPLABはAKI-PICプログラマーキットにも別のCDで添付されていますが、最新版をネット上から入手したほうが良いようです。 マイクロチップ・テクノロジー・ジャパンから入手しました。(12MBと結構ファイルサイズが大きいのでそのつもりでDLしてください) セットアップをするときに注意が必要のようです、Windows2000という環境のせいかも知れませんが、セットアップするフォルダーを規定値のProgram Filesではなくd:\MPLABのように指定しないと上手く動きませんでした。(HPを見ていたらセットアップするフォルダーには2バイト文字(漢字)を使用しないほうがいいように書いてありました) HP上にサンプルがたくさんあるのでHP上のソースをコピー、ペーストして試してみました。 どう見てもエラーが無いように思えるのにどうしても先頭あたりでエラーになり上手く動きませんでした。 色々やって、やっと動きました、いろんな事を一度にやってしまったので本当の原因がつかめていません、また時間を見つけて調べておきたいと思います。 以下の3点をやって動くようになりました。 (1)日本語のコメントを全部はずす。 (2)他のエディッタで全角スペースを半角スペースに置換する。 (3)他のエディッタでスペースをタブに変換する。 おそらく、HPから直接コピーをしたので、目に見えていないけど変なコードがついていたのだと思います。 《MPASSIST》 トランジスタ技術の11月号に掲載されていたMPASSISTを試してみました。 これはMPLABの中にアシストウインドウが組み込まれソースやデバッグ用のウインドウが簡単に呼び出せるようになります。 結構便利なので一度試してみたらいいと思います。 MPLAB ver.5.xに対応しています、もしバージョンが古い場合はマイクロチップ・テクノロジー・ジャパンからMPLAB ver.5.xを入手しセットアップしてください。 MPASSIST自体はトランジスタ技術から入手できます。 最新版は電子工作の実験室から入手できます。 MPLABはver.6.xも出ていますが、こちらで動作するかどうかは確認が取れていません。 ver.6.xは新しいPICにも対応出来ているのでMPASSISTが動作してほしいと思いますので、DLして確認をしておきたいと思います。 MPLABのver.6.xはプロジェクト管理が出来るようになりMPASSISTもいらなくなっています。 環境はそろったので勉強を頑張らないといけませんね。 色々勉強をして作成課題を決めました、「自動車のオートライト」です。 ソースはプロジェクト管理をして、機能別にファイルを分けるようにしました。 簡易A/D変換、EEPROM読み書き、LCDモニタ、LEDダイナミック表示などのテクニックを使用しています。 |
||||
回路図 | ||||
特になし | ||||
写真1 | ||||
左側の写真(中央の基板)がPICプログラマキットです。 右側は自作したテストボードです。 PICのチップより上部がモニター用のLED12個です。 PICのチップより下部右側が入力用DIP.SWでプルアップ、プルダウンの動作が出来るように抵抗もつけています。 PICのチップより下部中央が入力用のPUSH.SW2個です。 PICのチップより下部左側が外部引き出し用のコネクタピンです。 |
||||
写真2 | ||||
SAMPLEのプログラムを書き込んで動作させて見ました。 写真は点灯パターンを変更して書き込んだものです。 |
||||
写真3 | ||||
手持ちのLCDを接続して「16X2LCD.ASM」のプログラムを書き込んで動かしてみました。 汎用USB-IOのテストに使ったLCDの配線のまま使用しました、そのため素直な順番ではなく、2度見直しをしてやっと動きました。 汎用USB-IOでコントロールしていたときと違って瞬時に表示がされて気持ちいい!! |
||||
写真4 | ||||
HPを探していたら、RA0〜RA4までの入力の状態によってLEDの光り方を変えるサンプルが有ったので試してみました。 このソースはMPLAB用に記述されており、MPLABでアセンブルしています。 実はMPLABをセットをしてみてみたものの、上手く動かず(MAKEでエラーばかり)頭を悩ましていましたが、このソースのおかげで解決しました。 趣味の電子回路工作から入手できます。 |
||||
PICの勉強のために課題を決めてすることにしました「自動車のオートライト」です。 簡単なものであればトランジスタとリレーでできてしまいますが、PICであるため以下のような仕様にしました。 ・ライトのスモールと全点灯の2段階で制御する。 ・ライトがONになる明るさ、OFFになる明るさを設定し、設定内容は電源を切っても覚えておく。 ・LCDでモニタ表示ができるようにする。 ・PIC16F84Aを使用する(手持ちのPICは最初についていたPIC16F84Aぐらいしかないため) Step1 LCDでファイルレジスタの内容を表示したり、文字列を表示する。 HPでファイルレジスタの内容を5桁までの十進で表示するものをみつけ、使っています。 文字列の表示は独自に作りました。 このときに機能別にソースのファイルを分けられることを学びました。 Step2 簡易A/D変換でVR(可変抵抗)の値を読み取る。 これもHPからでゲームの製作記事を参考にしました。 調整用のVRと明るさの検出用のCDSと両方同時に取得できるようにした。 このときにLCDに値を表示できたのでデバッグの役に立ちました。 Step3 実際にCDSから値を読み取りLEDを点灯制御する。 誤動作を防ぐため、ON,OFF動作は実際の値より遅れて(変化をして一定時間同じ状態であれば)動作するようにした。 Step4 EEPROMからONになるレベル、OFFになるレベルを取得する。 VR、CDSの結線に直接SWをつけてショートさせることにより値が最小になり、それを判断してそのときのVRの値を入力できるようにした。 入力した値をEEPROMに書き込む(ONになるレベル、OFFになるレベル) ここまでくるとほぼ完成 とりあえず 現段階のソースです。 lcd_led.lzh (46k) 未完成バージョンをUPしていましたので更新しました。(それでもまだ未完成ですけど) あとで流用しやすいように機能別にソースのファイルを分けて作成してあります。 割り込みの関係のソースが残っていますが、使用していません。 簡易A/Dは割り込みが入ると上手く処理できなかったので割り込み関係はコメントにしてあります。 LEDでモニタをしていますが実際は空いているRB6,7で出力にする予定です、まだそこのコーディングが出来ていません。 回路図は作成中です、ポートの節約のため、少し複雑になりました。 また時間をみてUPします。 |
||||
ここに関連するキーワードやリンクを検索表示 | ||||