はじめてのPIC(16F648A) その①
まずはいじってみました編
お断わり(2018年現在)
このコーナーは「当局にとってはじめてのPIC」と言う意味で、そのトタバタ顛末記です。
使用したPICもツール類も古く、これからPICを弄ってみようと考えている各局様にとって読む価値が無いと思います。
よろしければ、「PICキットコーナー」を閲覧して頂ければ幸いです。
↑基礎からしっかりと解説されており、
この本と著者のHPで完璧?です。
このコーナーは「当局にとってはじめてのPIC」と言う意味で、そのトタバタ顛末記です。
使用したPICもツール類も古く、これからPICを弄ってみようと考えている各局様にとって読む価値が無いと思います。
よろしければ、「PICキットコーナー」を閲覧して頂ければ幸いです。
↑基礎からしっかりと解説されており、
この本と著者のHPで完璧?です。
動機
再開局から1年が過ぎ、古いラジオや無線機の修理やジャンク部品の収集を楽しんできましたが、各局様のホームページを見てみると、PICと言う単語が頻繁に出てきます。
どうもフラッシュROMを搭載し、それにプログラムを何度も書込みが出来、I/O制御が簡単に出来るらしい、その他にもAVR等似たようなマイコンがあるらしい・・・
何よりも、開発環境も含めて、非常に安価らしい・・・
などと、うすうす感づいてはいました。
マイコンは昔から存在しているのは知っていましたが、アマチュアにとって、こんなに身近で利用(開発)できる存在では無いと思っていました。
事実そうでしたし、CPUやメモリの製造技術進化の流れを思いっきり感じてしまいました。
5球真空管ラジオの修理から始まったこの1年間は、気持ち的にもレベル的にも余裕が無く、PIC等マイコンは見てみぬ振りをしていましたが、だんだん好奇心の虫が騒ぎ出し、少しずつでも実験しながら、現在のポピュラーかつ、すばらしいマイコンシステムをも楽しんでみようと思い始めています。
と言う訳で、当局にとって再開局1周年記念イベントで~す。
参考文献
①「電子工作のためのPIC16F活用ガイドブック」 後閑 哲也 著 技術評論社
②ホームページ「電子工作の実験室」 後閑 哲也 著
③PIC16F627A/628A/648Aデータシート MICROCHIP
③ELD512データシート EVERLIGHT
④99' 74シリーズIC規格表 CQ出版社
参考文献①は隣町への買い物ついでに本屋さんに行ったら、これしかなかったので、とりあえず購入してみたのですが、PIC16Fシリーズについてハードやソフトについて詳細に書いてあり、当局にとっては、「ビンゴ!!」的な一冊でした。
新潟市の本屋さんに行けば、色々な著書があると思われますが、この本で必要十分です。
田舎の本屋恐るべし・・・
当局の本による電子回路お勉強タイムは、布団に潜って寝るまでの時間です。
いつも5分も掛からず寝てしまうのが欠点ですが、チリも積もればゴミになる・・・いっいや山になるで、結構覚えます。(当局比)
そんな訳で、今回は枕元でちょっかいを出して来る、わんこズ(2匹のわんこの意)にも目もくれず、半分寝ながら1ヶ月位この本を読んだのでした。
再開局から1年が過ぎ、古いラジオや無線機の修理やジャンク部品の収集を楽しんできましたが、各局様のホームページを見てみると、PICと言う単語が頻繁に出てきます。
どうもフラッシュROMを搭載し、それにプログラムを何度も書込みが出来、I/O制御が簡単に出来るらしい、その他にもAVR等似たようなマイコンがあるらしい・・・
何よりも、開発環境も含めて、非常に安価らしい・・・
などと、うすうす感づいてはいました。
マイコンは昔から存在しているのは知っていましたが、アマチュアにとって、こんなに身近で利用(開発)できる存在では無いと思っていました。
事実そうでしたし、CPUやメモリの製造技術進化の流れを思いっきり感じてしまいました。
5球真空管ラジオの修理から始まったこの1年間は、気持ち的にもレベル的にも余裕が無く、PIC等マイコンは見てみぬ振りをしていましたが、だんだん好奇心の虫が騒ぎ出し、少しずつでも実験しながら、現在のポピュラーかつ、すばらしいマイコンシステムをも楽しんでみようと思い始めています。
と言う訳で、当局にとって再開局1周年記念イベントで~す。
参考文献
①「電子工作のためのPIC16F活用ガイドブック」 後閑 哲也 著 技術評論社
②ホームページ「電子工作の実験室」 後閑 哲也 著
③PIC16F627A/628A/648Aデータシート MICROCHIP
③ELD512データシート EVERLIGHT
④99' 74シリーズIC規格表 CQ出版社
参考文献①は隣町への買い物ついでに本屋さんに行ったら、これしかなかったので、とりあえず購入してみたのですが、PIC16Fシリーズについてハードやソフトについて詳細に書いてあり、当局にとっては、「ビンゴ!!」的な一冊でした。
新潟市の本屋さんに行けば、色々な著書があると思われますが、この本で必要十分です。
田舎の本屋恐るべし・・・
当局の本による電子回路お勉強タイムは、布団に潜って寝るまでの時間です。
いつも5分も掛からず寝てしまうのが欠点ですが、チリも積もればゴミになる・・・いっいや山になるで、結構覚えます。(当局比)
そんな訳で、今回は枕元でちょっかいを出して来る、わんこズ(2匹のわんこの意)にも目もくれず、半分寝ながら1ヶ月位この本を読んだのでした。
PIC16F活用ガイドブックを読んだら・・・
となれば、まずは弄って経験および実験してみない事には、先に進みません。
扱うマイコンはすべて8ビットマイコンです。
当局にとって、それ以上のビット数のマイコンは、無理ですし、必要性もありません。
秋月にPICマイコン、12pin12F683、14pin16F688、18pin16F648A、28pin16F886とAKI-PIC2プログラマボードを注文しました。
このPICを選んだ基準は、秋月の超簡単な商品紹介文を読んで、
①間違えて壊しても良いように安い事、200円以上は対象外 (^_^;)
そもそも良く分かっていないので、無線用途では結局使えなくても後悔しない価格
②安くても何やら機能が豊富(よく解っていないけど)で、使えるI/Oピン数が多い事
と、自分なりに、その時の勢いで決めてみたのでした。
MICROCHIPの日本語サイトに行って、各PICマイコンのデータシートと開発ソフトを無料で入手しました。
所が、PICデータシートが英語で、詳細が良く解りません・・・ (ーー;)
まあ、兎に角やってみよう、おーっ・・・ ちょっと意気消沈・・・
PIC関連サイトをチェックしてから、PIC16F84等の勉強用PICを選べばよかった・・・反省
開発ツールのインストール
当局の使用OSはWindouwsXP(SP3)です。
以前、Vistaや7(64bit版)も試しに買っては見たものの、未だにXPです。
Vistaは一度もインストールしない内に黒歴史の中に埋もれました・・・
どうしてくれんだMicroSoftさんよ
HomeNetworkを構築し、クライアントPC数が個人の割りに多いので、
必要性の無い所に多額の出費は不可能です。
無理やり移行せざるを得ないようにするのでしょうけど・・・
そうこうしている内に、さらに新Windowsが出そうですね、HiHi
MPLAB IDE ver8.76
これはインストールしても素直には起動してくれませんでした。
参考文献①の著者、後閑さんのHPに対策方法が紹介されていましたので、それを実行してみました。
まず最初にユーザー名を変更してみたのですが、効果はありませんでした。
次にトラ技の対処方法(環境変数「TMP」の変更)を行う事により、起動しました。
結局、ユーザー名は元の漢字に戻した状態で、インストールしましたが、大丈夫でした。
作業フォルダの確保
作業場所(セーブする場所等)をマイドキュメント内にしては、フリーズしてしまいます。
すでにフォルダ名に2バイト文字が入っているので、駄目なようです。
とりあえず、ハードディスクの直下に英文字でフォルダを作り、そこで作業する事としました。
となれば、まずは弄って経験および実験してみない事には、先に進みません。
扱うマイコンはすべて8ビットマイコンです。
当局にとって、それ以上のビット数のマイコンは、無理ですし、必要性もありません。
秋月にPICマイコン、12pin12F683、14pin16F688、18pin16F648A、28pin16F886とAKI-PIC2プログラマボードを注文しました。
このPICを選んだ基準は、秋月の超簡単な商品紹介文を読んで、
①間違えて壊しても良いように安い事、200円以上は対象外 (^_^;)
そもそも良く分かっていないので、無線用途では結局使えなくても後悔しない価格
②安くても何やら機能が豊富(よく解っていないけど)で、使えるI/Oピン数が多い事
と、自分なりに、その時の勢いで決めてみたのでした。
MICROCHIPの日本語サイトに行って、各PICマイコンのデータシートと開発ソフトを無料で入手しました。
所が、PICデータシートが英語で、詳細が良く解りません・・・ (ーー;)
まあ、兎に角やってみよう、おーっ・・・ ちょっと意気消沈・・・
PIC関連サイトをチェックしてから、PIC16F84等の勉強用PICを選べばよかった・・・反省
開発ツールのインストール
当局の使用OSはWindouwsXP(SP3)です。
以前、Vistaや7(64bit版)も試しに買っては見たものの、未だにXPです。
Vistaは一度もインストールしない内に黒歴史の中に埋もれました・・・
どうしてくれんだMicroSoftさんよ
HomeNetworkを構築し、クライアントPC数が個人の割りに多いので、
必要性の無い所に多額の出費は不可能です。
無理やり移行せざるを得ないようにするのでしょうけど・・・
そうこうしている内に、さらに新Windowsが出そうですね、HiHi
MPLAB IDE ver8.76
これはインストールしても素直には起動してくれませんでした。
参考文献①の著者、後閑さんのHPに対策方法が紹介されていましたので、それを実行してみました。
まず最初にユーザー名を変更してみたのですが、効果はありませんでした。
次にトラ技の対処方法(環境変数「TMP」の変更)を行う事により、起動しました。
結局、ユーザー名は元の漢字に戻した状態で、インストールしましたが、大丈夫でした。
作業フォルダの確保
作業場所(セーブする場所等)をマイドキュメント内にしては、フリーズしてしまいます。
すでにフォルダ名に2バイト文字が入っているので、駄目なようです。
とりあえず、ハードディスクの直下に英文字でフォルダを作り、そこで作業する事としました。
当局にとっての初めてのPIC
これには18pinのPIC16F648Aとしました。
手頃なピン数でI/Oポート数も多く、7セグ等の制御も十分出来そうです。
このPICには多くの機能があるようですが、一気には理解は出来ませんので、まずは欲張らず、デジタルI/Oポートとしての使い方から練習する事としました。
このPICの18個のピンを、
・電源2ピン
・OSC2ピン外部レゾネータ(内部OSCもあるのですが)
・Bポート8ピンすべて出力(LEDコントロール)
・Aポート6ピンを入出力
と機能を単純化し、まずは初歩的な開発方法に慣れる事としました。
練習課題
まずは、簡単そうなLEDのコントロールに挑戦してみる事としました。
単体のLED発光ではつまんないので、7セグLEDを表示させる事としました。
PICを無線工作に応用するとしたら、7セグコントロールは必須事項と思われますしね。
練習用回路の設計
PIC16F648AのBポートに7セグLEDを接続としました。
以前にヤフオクで大量(数百個ある)の7セグLEDを超安価に入手してまして、それがすべてアノードコモンでした。
どんどん使用しないと、残りの人生でも使い切れません・・・
今回は練習用回路なので、これを8個(8桁)使用しました。
この7セグのカソードは、RB0~7に接続としましたので、I/Oポート出力「0」でLEDが発光する事となります。
7セグの桁セレクトはポート数が足りないので、3→8デコーダ、74HC138APを使いました。
桁選択の使用出力I/OポートはRA0~RA2の3ピットとしました。
残りのRA3~RA5の3ポートは、とりあえず入力ポートとし、プルアップしてプッシュスイッチ3個を取り付けました。
このポートとSWをどう言う風に使うかは、プログラムしながら考えるとします。
よって、これは外部ポートとして、他機器とも接続できます。
この実験ボードは、実用性はありませんが、(見た目も悪いし・・・)しばらくは色々なプログラム作成(練習)実験をして遊べるのでは?とは皮算用しています。
これには18pinのPIC16F648Aとしました。
手頃なピン数でI/Oポート数も多く、7セグ等の制御も十分出来そうです。
このPICには多くの機能があるようですが、一気には理解は出来ませんので、まずは欲張らず、デジタルI/Oポートとしての使い方から練習する事としました。
このPICの18個のピンを、
・電源2ピン
・OSC2ピン外部レゾネータ(内部OSCもあるのですが)
・Bポート8ピンすべて出力(LEDコントロール)
・Aポート6ピンを入出力
と機能を単純化し、まずは初歩的な開発方法に慣れる事としました。
練習課題
まずは、簡単そうなLEDのコントロールに挑戦してみる事としました。
単体のLED発光ではつまんないので、7セグLEDを表示させる事としました。
PICを無線工作に応用するとしたら、7セグコントロールは必須事項と思われますしね。
練習用回路の設計
PIC16F648AのBポートに7セグLEDを接続としました。
以前にヤフオクで大量(数百個ある)の7セグLEDを超安価に入手してまして、それがすべてアノードコモンでした。
どんどん使用しないと、残りの人生でも使い切れません・・・
今回は練習用回路なので、これを8個(8桁)使用しました。
この7セグのカソードは、RB0~7に接続としましたので、I/Oポート出力「0」でLEDが発光する事となります。
7セグの桁セレクトはポート数が足りないので、3→8デコーダ、74HC138APを使いました。
桁選択の使用出力I/OポートはRA0~RA2の3ピットとしました。
残りのRA3~RA5の3ポートは、とりあえず入力ポートとし、プルアップしてプッシュスイッチ3個を取り付けました。
このポートとSWをどう言う風に使うかは、プログラムしながら考えるとします。
よって、これは外部ポートとして、他機器とも接続できます。
この実験ボードは、実用性はありませんが、(見た目も悪いし・・・)しばらくは色々なプログラム作成(練習)実験をして遊べるのでは?とは皮算用しています。
↑表示基板、穴あけがいい加減なので、LEDが綺麗に並んでいません。
↑CPU基板、穴あき基板で作っています。
↑CPU基板、裏配線
画像左側がRBポートおよびRA0,1,2ポート
右側がSWおよびRA3,4,5ポート
↑配線終了した所、ICは未装着
基板作成
部品点数が少ない割りに配線がやたら多く、穴あき基板では超面倒くさそうなので、プリント基板とする事にしました。
基板面のマスクは、悪い製作例の筆頭、マジックインクによる手書きです・・・
最初、1枚基板で作製するつもりでプリント基板パターン設計をし始めたのですが、予定変更し表示基板とPIC基板との2枚に分けて作成する事にしました。
よって、回路図では1枚基板に見えます。
表示基板のみにしておけば、実験終了後も今後の別の何かの実験にも使えそうです。
PICマイコン部分は穴あき基板に乗っける事としました。
結果、両者は電源線も入れて、13本のリード線で接続する事となりました。
表示基板
追い出したPIC部分も入るつもりだったとしても、9cm×15cmの割と大きな基板になってしまいました。
これは、手書きパターンの限界もあり、細くは出来ず、両面にも出来ず、結果としてパターン結線がどうにもうまくいかず、大量のジャンパ線だらけとなってしまいました・・・
LED表示器の位置も基板上部にしたかったのに基板下部になってしまいました。
このまま使う実験用ですし・・・まあいいか (^_^;)
この基板の作製は「プリント基板の作製方法」コーナーで、作業例として表示しています。
いい加減な製作方法ですし、見ても多分つまんないです・・・
さて比較的大きな基板の割りに、表面の部品点数は少なく、簡単な基板に見えるのですが、
半田付け箇所は百数十箇所となり、途中で飽きてきました・・・ (-_-;)
これを穴あき基板で作っていたら、途中で配線作業を飽きらかしていたに違いありません。
CPU基板
名前は偉そうですが、小さい穴あき基板にICソケット1個と付属部品数個を付けただけ・・・
すごいですね、こんな程度の穴あき基板にコンピュータが乗るんですね。
これがPIC(や、現在の他マイコン)の特徴なのでしょうね。
PIC12Fシリーズを使用すれば、ピン数が少ないので、もっと簡単になりますしね。
しかし、今回の18ピンと言えども、結構な半田付け及び配線数となりますので、穴あき基板ではこの程度前後のピン数が、適当に行なう配線作業の限界かも知れません。
今回の基板は練習用ですので電源回路はありません、DC5Vを外部から供給です。
と、ここまでは良かったのですが・・・
部品点数が少ない割りに配線がやたら多く、穴あき基板では超面倒くさそうなので、プリント基板とする事にしました。
基板面のマスクは、悪い製作例の筆頭、マジックインクによる手書きです・・・
最初、1枚基板で作製するつもりでプリント基板パターン設計をし始めたのですが、予定変更し表示基板とPIC基板との2枚に分けて作成する事にしました。
よって、回路図では1枚基板に見えます。
表示基板のみにしておけば、実験終了後も今後の別の何かの実験にも使えそうです。
PICマイコン部分は穴あき基板に乗っける事としました。
結果、両者は電源線も入れて、13本のリード線で接続する事となりました。
表示基板
追い出したPIC部分も入るつもりだったとしても、9cm×15cmの割と大きな基板になってしまいました。
これは、手書きパターンの限界もあり、細くは出来ず、両面にも出来ず、結果としてパターン結線がどうにもうまくいかず、大量のジャンパ線だらけとなってしまいました・・・
LED表示器の位置も基板上部にしたかったのに基板下部になってしまいました。
このまま使う実験用ですし・・・まあいいか (^_^;)
この基板の作製は「プリント基板の作製方法」コーナーで、作業例として表示しています。
いい加減な製作方法ですし、見ても多分つまんないです・・・
さて比較的大きな基板の割りに、表面の部品点数は少なく、簡単な基板に見えるのですが、
半田付け箇所は百数十箇所となり、途中で飽きてきました・・・ (-_-;)
これを穴あき基板で作っていたら、途中で配線作業を飽きらかしていたに違いありません。
CPU基板
名前は偉そうですが、小さい穴あき基板にICソケット1個と付属部品数個を付けただけ・・・
すごいですね、こんな程度の穴あき基板にコンピュータが乗るんですね。
これがPIC(や、現在の他マイコン)の特徴なのでしょうね。
PIC12Fシリーズを使用すれば、ピン数が少ないので、もっと簡単になりますしね。
しかし、今回の18ピンと言えども、結構な半田付け及び配線数となりますので、穴あき基板ではこの程度前後のピン数が、適当に行なう配線作業の限界かも知れません。
今回の基板は練習用ですので電源回路はありません、DC5Vを外部から供給です。
と、ここまでは良かったのですが・・・
当局用の変換表(PDF)
ソースの作成
①PIC作業フォルダを作成
例 C:\pic_project
作業フォルダまで、およびそれ以降のすべてのフォルダ名やファイル名に2バイト文字を使用してはいけない。
このフォルダ内に各プロジェクトフォルダを収納する
②プロジェクト・フォルダの作成
例 C:\pic_project\7seg_test0
ここでは、7seg_test0と言うプロジェクトフォルダを作成した。
この7seg_test0フォルダ内にソースファイルをセーブする。
③ソースファイルを作成
MPLAB IDEを起動し、左上の「File」をクリック、
「New」クリックで、エディタが起動します。
そして、「Save_As」で、ファイルネーム
例 7seg_test0.asm
を付けて「7seg_test0」フォルダ内にセーブします。
その後、ソースを作成し、「Save」して終了となります。
④その他
この7seg_test0フォルダに使用するPICのインクルード・ファイル
例 P16F648A.INC
をコピーして置くと良いです。
インクロードファイルは、普通にインストールしていれば、
C:\Program Files\Microchip\MPASM Suite\
にあります。
今回のソースファイル[7seg_test0」
右クリックで、「対象をファイルに保存」にてダウンロードして下さい。
ダブルクリックでは、オープンしますが読めません。
メモ帳で開いて、7seg_test0.asmにコピペしてね。
そのままプロジェクトフォルダに入れても大丈夫だとは思います。
プロジェクトの作成
①ツールバーの「Project」をクリック、
「Project Wizard」をクリックします。
そのまま進行しますが、
②Step One
ここでPICを選びます。
例 PIC16F648A
③Step Two
余計な事をせずにそのまま進行
④Step Three
「Browse」ボタンをクリック、
そして、先ほど作成しておいたプロジェクトフォルダ、「7seg_test0」内に入ります。
ここで、プロジェクトファイル名
例 「7seg_test0」
と入力し、「保存」ボタンを押します。
すると、Step Three画面に戻りますので、そのまま進行します。
⑤Step Four
作成した7seg_test0.asmを加えるのですが、ここは無視して進行しても構いません。
その場合、「Project」ウインドウ内の
「Source files」を右クリックします。
そして、[Add Files]をクリックするとファイル選択画面になりますので、先ほど作成した、
7seg_test0.asmをクリックし、「開く」をクリックで、
「7seg_test0プロジェクトファイル」に、
「7seg_test0.asmソースファイル」が認識されました。
これで、アッセンブルおよびデバッグが可能となります。
もちろん変更、追加等自由です。
以下、この「7seg_test0」フォルダ内ですべてのオブジェクトファイルが生成可能です。
⑥プロジェクトを開く
ツールバーの「Project」の「Open」で、プロジェクトフォルダ内のプロジェクトファイルをクリックすれば、ソースファイルを含めた、これまでのファイルが表示されます。
ソースの作成
①PIC作業フォルダを作成
例 C:\pic_project
作業フォルダまで、およびそれ以降のすべてのフォルダ名やファイル名に2バイト文字を使用してはいけない。
このフォルダ内に各プロジェクトフォルダを収納する
②プロジェクト・フォルダの作成
例 C:\pic_project\7seg_test0
ここでは、7seg_test0と言うプロジェクトフォルダを作成した。
この7seg_test0フォルダ内にソースファイルをセーブする。
③ソースファイルを作成
MPLAB IDEを起動し、左上の「File」をクリック、
「New」クリックで、エディタが起動します。
そして、「Save_As」で、ファイルネーム
例 7seg_test0.asm
を付けて「7seg_test0」フォルダ内にセーブします。
その後、ソースを作成し、「Save」して終了となります。
④その他
この7seg_test0フォルダに使用するPICのインクルード・ファイル
例 P16F648A.INC
をコピーして置くと良いです。
インクロードファイルは、普通にインストールしていれば、
C:\Program Files\Microchip\MPASM Suite\
にあります。
今回のソースファイル[7seg_test0」
右クリックで、「対象をファイルに保存」にてダウンロードして下さい。
ダブルクリックでは、オープンしますが読めません。
メモ帳で開いて、7seg_test0.asmにコピペしてね。
そのままプロジェクトフォルダに入れても大丈夫だとは思います。
プロジェクトの作成
①ツールバーの「Project」をクリック、
「Project Wizard」をクリックします。
そのまま進行しますが、
②Step One
ここでPICを選びます。
例 PIC16F648A
③Step Two
余計な事をせずにそのまま進行
④Step Three
「Browse」ボタンをクリック、
そして、先ほど作成しておいたプロジェクトフォルダ、「7seg_test0」内に入ります。
ここで、プロジェクトファイル名
例 「7seg_test0」
と入力し、「保存」ボタンを押します。
すると、Step Three画面に戻りますので、そのまま進行します。
⑤Step Four
作成した7seg_test0.asmを加えるのですが、ここは無視して進行しても構いません。
その場合、「Project」ウインドウ内の
「Source files」を右クリックします。
そして、[Add Files]をクリックするとファイル選択画面になりますので、先ほど作成した、
7seg_test0.asmをクリックし、「開く」をクリックで、
「7seg_test0プロジェクトファイル」に、
「7seg_test0.asmソースファイル」が認識されました。
これで、アッセンブルおよびデバッグが可能となります。
もちろん変更、追加等自由です。
以下、この「7seg_test0」フォルダ内ですべてのオブジェクトファイルが生成可能です。
⑥プロジェクトを開く
ツールバーの「Project」の「Open」で、プロジェクトフォルダ内のプロジェクトファイルをクリックすれば、ソースファイルを含めた、これまでのファイルが表示されます。
アッセンブラ・ソースの作成
参考文献①をよく読みながら、まずは勢いで作ってみました。
マイコンにやらせる動作は単純なのですが、いつの間にかソースリストが、だらだら長くなって、見づらくなってしまいます。
1Kステップのプログラム空間があれば、無線工作には十分かと思っていましたが、50の手習い状態の素人おじさんが作るプログラムでは、そう簡単にはスマートなプログラミングとは行かないようです。
因みに、当局同様小さい字が見づらい各局は、
ツールバー「Edit」の「Properties」をクリックでダイヤログを表示
「Text」の「Select Font」で文字の大きさを変えられます。
当局は12ポイントで表示、印刷しています。
今回の製作目的は、PIC16Fシリーズのアッセンブラ・プログラミングの方法を、ある程度理解する事にあります。
よって、いくらHPで公表すると言っても、今現在はスマートさは不要ですし、思いつきでプログラムを組んでみて、そして大量に発生するであろうエラーの対処を行なう事の方が、当局のような初心者には早くPICを理解するのに役立つのでは思っています。
また、これからPICを弄ってみたい各局様にとっても、失敗談は役に立つかも知れませんしね。
プログラミングを行なうにあたり、10進←→16進←→2進の変換表は必須です。
Windowsアクセサリの電卓でも可能ですが、関数電卓や変換一覧表が便利です。
CASIOのfx-373ESと言う関数電卓が一番安かったので使ってみましたが、結構便利です。
当局用の変換表(PDF)をアップしてありますので、壁に貼っておくと通常便利です。
何をやっているのか分かんなくなりそうだったのが、16進バイナリから10進バイナリにする、8桁BCD変換ルーチンです。
これは当局の様な初心者が、いきなり手を出す部位では無かったようです。
どう言う「計算」でやれば良いのか思い浮かばないし、調べる(MicrochipのHPに各種ライブラリソースがあるらしい)のも面倒なので、練習がてら両者のビット列を比較しながら、単純に「考え」て作ろうとしてみたのでした。
何故なら、このルーチンは避けて通れ無い、必要なプログラムですから。
よって、今回最も時間をかけて考え込んだ部分なのですが・・・
中々上手くいかず、今後もじっくり考えて、実用的なルーチンにしたいと思っています。
実用的なものが出来ましたら、いずれ「はじめてのPIC」シリーズで公表します。
当局同様PIC初心各局様は、玄人各局様のソースを使わせて頂く事をお勧めします。
今回は「初めてのPIC」ですので、欲張らずに未完成変換部分他はソースからカットし、8桁のBCDアップカウンタのみとしました。
このBCDアップカウンタを必要数ループさせれば、BCDに変換できますが、このままでは遅くて実用性ゼロです。
BCDデータから7セグ用ポート出力データを出力する方法は、参考文献①に例文として掲載されていた方法を利用しました。
これは表示させたい数字とプログラムカウンタの値を加算して、そのポート出力データを記述するアドレステーブルにジャンプすると言う、極めてシンプルな方法で、使わない手はありません。
と言いながら、このルーチンのデバッグにしっかりハマったのでした・・・(-_-;)
その理由は後述します。
今回の仕様(結果的ですが)
7セグLED8桁表示可能、プッシュSW3,SW4,SW5の3つ
SW3 アップカウント スタート ボタン
SW4 ポーズ/ストップ ボタン
SW4 未使用
電源を入れると1桁目から最上位8桁目まで、0.5秒ずつ順番に、すべてのセグメントを点燈し、その後スタート(SW3)入力待ちとなる。
その際1桁目のドットを点滅しながらのスイッチ入力待ちとなる。
SW3を押すと0から1個ずつアップカウントしてゆく
途中ポーズボタン(SW4)で、カウントを一時ストップ
ポーズ中にSW3を押すとアップカウント再開となり、ポーズボタンを押した場合は、カウント終了し、それまでのカウントをクリアし、スタート入力待ちとなる。
当初、SW4をダウンカウントボタンとして、プログラムしていたのですが、今回の目的として、あまり意味が無さそうなので、削除しました。
動作検証に時間が掛かり過ぎるのが、最大の理由です。
また、プログラミングしていると、「機能変更しよう」とか「新たな機能を付けよう」とかどんどん欲が出てきて、いつまでもけりが付かないので、まずはLEDが機能的に光って終りとしました。
ソースファイルですが、メモ帳で見ると何故かTAB位置がずれてしまいます。
初心者作業なので、多分どこかに間違いや非効率的な部分が多々あると思います。
その他諸々を含めて、御容赦をお願いします。
参考文献①をよく読みながら、まずは勢いで作ってみました。
マイコンにやらせる動作は単純なのですが、いつの間にかソースリストが、だらだら長くなって、見づらくなってしまいます。
1Kステップのプログラム空間があれば、無線工作には十分かと思っていましたが、50の手習い状態の素人おじさんが作るプログラムでは、そう簡単にはスマートなプログラミングとは行かないようです。
因みに、当局同様小さい字が見づらい各局は、
ツールバー「Edit」の「Properties」をクリックでダイヤログを表示
「Text」の「Select Font」で文字の大きさを変えられます。
当局は12ポイントで表示、印刷しています。
今回の製作目的は、PIC16Fシリーズのアッセンブラ・プログラミングの方法を、ある程度理解する事にあります。
よって、いくらHPで公表すると言っても、今現在はスマートさは不要ですし、思いつきでプログラムを組んでみて、そして大量に発生するであろうエラーの対処を行なう事の方が、当局のような初心者には早くPICを理解するのに役立つのでは思っています。
また、これからPICを弄ってみたい各局様にとっても、失敗談は役に立つかも知れませんしね。
プログラミングを行なうにあたり、10進←→16進←→2進の変換表は必須です。
Windowsアクセサリの電卓でも可能ですが、関数電卓や変換一覧表が便利です。
CASIOのfx-373ESと言う関数電卓が一番安かったので使ってみましたが、結構便利です。
当局用の変換表(PDF)をアップしてありますので、壁に貼っておくと通常便利です。
何をやっているのか分かんなくなりそうだったのが、16進バイナリから10進バイナリにする、8桁BCD変換ルーチンです。
これは当局の様な初心者が、いきなり手を出す部位では無かったようです。
どう言う「計算」でやれば良いのか思い浮かばないし、調べる(MicrochipのHPに各種ライブラリソースがあるらしい)のも面倒なので、練習がてら両者のビット列を比較しながら、単純に「考え」て作ろうとしてみたのでした。
何故なら、このルーチンは避けて通れ無い、必要なプログラムですから。
よって、今回最も時間をかけて考え込んだ部分なのですが・・・
中々上手くいかず、今後もじっくり考えて、実用的なルーチンにしたいと思っています。
実用的なものが出来ましたら、いずれ「はじめてのPIC」シリーズで公表します。
当局同様PIC初心各局様は、玄人各局様のソースを使わせて頂く事をお勧めします。
今回は「初めてのPIC」ですので、欲張らずに未完成変換部分他はソースからカットし、8桁のBCDアップカウンタのみとしました。
このBCDアップカウンタを必要数ループさせれば、BCDに変換できますが、このままでは遅くて実用性ゼロです。
BCDデータから7セグ用ポート出力データを出力する方法は、参考文献①に例文として掲載されていた方法を利用しました。
これは表示させたい数字とプログラムカウンタの値を加算して、そのポート出力データを記述するアドレステーブルにジャンプすると言う、極めてシンプルな方法で、使わない手はありません。
と言いながら、このルーチンのデバッグにしっかりハマったのでした・・・(-_-;)
その理由は後述します。
今回の仕様(結果的ですが)
7セグLED8桁表示可能、プッシュSW3,SW4,SW5の3つ
SW3 アップカウント スタート ボタン
SW4 ポーズ/ストップ ボタン
SW4 未使用
電源を入れると1桁目から最上位8桁目まで、0.5秒ずつ順番に、すべてのセグメントを点燈し、その後スタート(SW3)入力待ちとなる。
その際1桁目のドットを点滅しながらのスイッチ入力待ちとなる。
SW3を押すと0から1個ずつアップカウントしてゆく
途中ポーズボタン(SW4)で、カウントを一時ストップ
ポーズ中にSW3を押すとアップカウント再開となり、ポーズボタンを押した場合は、カウント終了し、それまでのカウントをクリアし、スタート入力待ちとなる。
当初、SW4をダウンカウントボタンとして、プログラムしていたのですが、今回の目的として、あまり意味が無さそうなので、削除しました。
動作検証に時間が掛かり過ぎるのが、最大の理由です。
また、プログラミングしていると、「機能変更しよう」とか「新たな機能を付けよう」とかどんどん欲が出てきて、いつまでもけりが付かないので、まずはLEDが機能的に光って終りとしました。
ソースファイルですが、メモ帳で見ると何故かTAB位置がずれてしまいます。
初心者作業なので、多分どこかに間違いや非効率的な部分が多々あると思います。
その他諸々を含めて、御容赦をお願いします。
アッセンブル
①プロジェクトファイルを開く
ツールバーの「Project」の「Open」で、プロジェクトフォルダ内のプロジェクトファイルをクリックすれば、ソースファイルを含めた、これまでのファイルが表示されます。
②アッセンブル
ツールバーの「Project」の「Build All」クリックで、アッセンブルが始まります。
アッセンブルエラーが無ければ、HEXファイルが生成されます。
③アッセンブル・エラーの修正
Outputウインドウにエラー番号とエラー行が表示されますので、エラー行をダブルクリックすると、エディタの該当行にカーソルが行きます。
超便利です。
「BUILD SUCCEEDED」と表示されるまで、繰り返します。
①プロジェクトファイルを開く
ツールバーの「Project」の「Open」で、プロジェクトフォルダ内のプロジェクトファイルをクリックすれば、ソースファイルを含めた、これまでのファイルが表示されます。
②アッセンブル
ツールバーの「Project」の「Build All」クリックで、アッセンブルが始まります。
アッセンブルエラーが無ければ、HEXファイルが生成されます。
③アッセンブル・エラーの修正
Outputウインドウにエラー番号とエラー行が表示されますので、エラー行をダブルクリックすると、エディタの該当行にカーソルが行きます。
超便利です。
「BUILD SUCCEEDED」と表示されるまで、繰り返します。
いよいよアッセンブル
さ~て、とりあえず出来たソースファイルをアッセンブルしてみました・・・
ところが、エラーの嵐・・・
その殆どが、error[113]未定義ラベルで、"status"等のインクルードファイルによって定義されていると思っていたものばかりです。
P16F648A.incファイルまでの、直接パスを書いてもだめ、作業ファイルの中に置いてもだめ、ファイルは読み込んでいるようですが、アッセンブラがインクルードファイルの定義を認識して居ない様に見えます。
P16F648A.inc定義をメモ帳で直接読んで見ると、ちゃんと定義された文章が書いてあります。
PC操作で思うように行かない時は、闇雲に弄ってもハマるだけです。
よって、ソースファイルとP16F648A.incファイルの両方をPCのモニターで見ながら、何でだろうと考えながら のんびり休憩している内に、そのまま居眠りしちゃいました・・・
ふっと目が覚めて、そのままのモニタを見ると、当局の書いたソースファイルは小文字、P16F648A定義ファイルはすべて大文字で記してある事に気が付きました。
違いはそれしかありません。
もしかして、アッセンブラは大文字と小文字を、しっかり区別しているのでは?
そこで、”status”等をすべて大文字の"STATUS"等に変換した所・・・うまくいきました。
後はそそくさに細かいシンタックス・エラーを修正すると、"error"や"warning"は消滅しました。
だからと言って、希望通りに動作する訳では無いですが・・・
ニーモニックは大文字小文字どちらでも大丈夫の様ですが。
因みに、MPLAB IDEの設定部分を探してみたのですが、大文字小文字を区別しない、と言う様な設定箇所は見つけられませんでした。
参考文献①では、アッセンブラ・サンプルソースはすべて大文字で記してある理由がこれで判明しました。
と言う訳で、今回のソースファイルは大文字や小文字がごちゃごちゃと混ざってしまいましたが、今後ソースファイルは大文字で書く事にしようかな・・・
さ~て、とりあえず出来たソースファイルをアッセンブルしてみました・・・
ところが、エラーの嵐・・・
その殆どが、error[113]未定義ラベルで、"status"等のインクルードファイルによって定義されていると思っていたものばかりです。
P16F648A.incファイルまでの、直接パスを書いてもだめ、作業ファイルの中に置いてもだめ、ファイルは読み込んでいるようですが、アッセンブラがインクルードファイルの定義を認識して居ない様に見えます。
P16F648A.inc定義をメモ帳で直接読んで見ると、ちゃんと定義された文章が書いてあります。
PC操作で思うように行かない時は、闇雲に弄ってもハマるだけです。
よって、ソースファイルとP16F648A.incファイルの両方をPCのモニターで見ながら、何でだろうと考えながら のんびり休憩している内に、そのまま居眠りしちゃいました・・・
ふっと目が覚めて、そのままのモニタを見ると、当局の書いたソースファイルは小文字、P16F648A定義ファイルはすべて大文字で記してある事に気が付きました。
違いはそれしかありません。
もしかして、アッセンブラは大文字と小文字を、しっかり区別しているのでは?
そこで、”status”等をすべて大文字の"STATUS"等に変換した所・・・うまくいきました。
後はそそくさに細かいシンタックス・エラーを修正すると、"error"や"warning"は消滅しました。
だからと言って、希望通りに動作する訳では無いですが・・・
ニーモニックは大文字小文字どちらでも大丈夫の様ですが。
因みに、MPLAB IDEの設定部分を探してみたのですが、大文字小文字を区別しない、と言う様な設定箇所は見つけられませんでした。
参考文献①では、アッセンブラ・サンプルソースはすべて大文字で記してある理由がこれで判明しました。
と言う訳で、今回のソースファイルは大文字や小文字がごちゃごちゃと混ざってしまいましたが、今後ソースファイルは大文字で書く事にしようかな・・・
↑デバッグしている所、結構楽しいです。
画像に見えませんが、英和辞書を傍に置いての作業でした。
しかし、弄ってる内に、何となくメッセージで言っている事は分かってきます。
シミュレーションデバッガの起動
①ツールバーの「Debugger」をクリックし、
「Select Tool」から「MPLAB SIM」をクリック
これでツールバーにボタンが追加され、ステップ動作等可能となります。
②ツールバーの「View」をクリック
「Special Function Registers」と
「Watch」をクリックし、ウインドウを開きます。
③ツールバーの「Debugger」を再度クリック
そして「Stimulus」をクリックし、ウインドウを開きます。
必要に応じて、その他のウインドウも開きます。
今回のプログラムのデバッグには、とりあえずこれで対応できます。
④「Special Function Registers」ウィンドウ
SFRをモニターできます。
ビット列も表示させておくと超便利です。
⑤「Watch」ウィンドウ
ワークとして使用しているファイルレジスタを表示させます。SFRも表示できるようですが、③があるので不要です。
ワークをモニターします。
⑥「Stimulus」ウインドウ
「Pin/SFR」でポート等をセレクト
「Action」で状態設定
「Fire」でセットされますが、デバッグ実行状態で無いとセットされないようです。
今回のソフトでは、RA3~RA5の入力ポートのセッティングに使用しました。
デバッグ シミュレーション デバッガを弄ってみる
う~む、こいつはかなり遊べる優れものソフトです。
PIC回路やプログラマ等、ハードウエアが何にも無くとも、プログラミングしアッセンブルしたファイルを、のんびりとその動作をシミュレートできます。
以前nintendoDSの「脳トレ」買ってすぐ飽きましたが、このデバッガは老化が進みつつある当局にとって、「脳トレ」に最適で、なおかつ非常に面白いです。(当局比)
何より、じっくりとレジスタやデータそしてフラグの変化を見ながら、アッセンブラソースの動作確認が可能なので、当局の様な高速動作が出来ない脳でも、背伸びさえしなければ十分対応できます。
そもそも実際のCPUは動作が早いので、レベルの高いプログラミング・テクニックが無くても、目的の動作をするソースが、何とか記述できれば問題無です。
前置きが長くなりましたが、このデバッガで遊んでいれば、自然とPICの概要を理解できると思いますし、自由にそこそこのプログラミングが可能となると思います。
MPLAB IDEは無料なのですから、各局様もダウンロードして、まずは遊んでみましょう。
初心者(当局の事です)のハマり原因
これは当局がプログラミングしてみて、まずはハマった原因の一覧です。
その1
各サブルーチンで使用する一時的なワーク(ファイルレジスタ)は共用しない方が良い。
環境変数的(広域変数的)なワークは大丈夫な事が多いですが、一時的ワークは、ついダブって使用してしまい、目的の動作を一見「何故か」しない羽目に陥ります。
どうせ大きなプログラムは当分作れませんので、各サブルーチン専用ワークを確保しましょう。
少ないと言われるRAMエリア(ファイルレジスタ領域)ですが、初心者には十分広いです。
その2
サブルーチンは、最初に詳細仕様、つまり目的、入力方法、出力方法、専用ワーク等を冒頭に、誰が見ても判る様に、明確に記載しましょう。
作成時は覚えているのですが、意識が離れるとすぐ忘れてしまいます。(老化現象ですHi)
これを間違えて呼び出すと、ろくな事になりません。
その3
各サブルーチンは単独あるいは少数のサブルーリン群をチェックするためのミニプロジェクトを作成し、それをシミュレーションデバッガでステップ動作させると、動作確認と間違いが一目でチェックできます。
それをブロックの様に積み上げて、目的のプロジェクトとする方が、総合デバッグで路頭に迷う可能性が大幅に減ります。
その4
SFR(スペシャルファンクションレジスタ)を利用したプログラムは、そのSFRの挙動を十分理解しないと、動かない所か暴走します。
レベルアップするまでは、無理は禁物ですが、STATUSレジスタの理解は必須です。
当局は、STATUSレジスタのC(キャリーフラグ)で騙されました・・・
しかし、シミュレーションデバッガ等で実験しながらレベルアップし、どんどん応用範囲を広げたい所です。
前述した失敗例もレジスタを理解していないために陥ったハマりでした。
失敗例 「7seg_get」サブルーチンハマりの理由
PCLレジスタ、これにはPC(プログラムカウンタ)の下位8ビットが常に反映されている上に、書込みが可能なので、PCLにリテラルリターン・テーブルまでへのアドレス値を加算してジャンプする、と言うスマートなルーチンなのですが、初心者にとっては大きな落とし穴がありました。
それは、PCLにMOV等で書込むとPCの下位8ビットに即反映され、と同時にPCLATHの下位5ビットがPCの上位5ビットに反映され、結果次回はそのアドレスから実行されます。
落とし穴は、PCの上位5ビットはPCLATHに対してはまったく反映されていないと言う事です。
電源投入後、呼び出し側と呼び出される側のプログラムアドレスが最初の0FFH内にあれば問題無いですが、0100Hを超えていると、首尾よくPCLATHにデータを入れないと、暴走します。
この失敗に関しては、シミュレーションデバッガで再現できます。
そして、PCの上位5ビットの取得方法が解りません。
リストファイルでサブルーチンアドレスを確認してから、PCLATHに固定値を入れるか、
最初の0FFH内にサブルーチンを配置し、メインプログラム本体は0100Hから始める、とか配置工夫で解決とかは思いつきますが・・・
256バイトで良いので相対ジャンプ命令が欲しいですよね。
今回のこんな小さな練習プログラムでも、一気にソースを作成し、一気にデバッグする事は、危険な事を悟りました・・・
そうです、当局はしっかりと路頭に迷いました。
最初に思いつくまま作成したソースファイルは思うように動作しなかったですし、何処が悪いのかチェックに時間が取られるばかりで、一向に収束しないので、破棄しました。
結局、上記「その2」そして「その3」からやり直しました。
今回の実験過程の中でこの、「デバッグ→修正orやり直し→デバッグ」作業がほとんどの時間を費やしています。
結局、構想とハードウエア作製は短時間で終了し、コンピュータはソフトがメインだと言う事を、当たり前なのですが、改めて思い知りました。
う~む、こいつはかなり遊べる優れものソフトです。
PIC回路やプログラマ等、ハードウエアが何にも無くとも、プログラミングしアッセンブルしたファイルを、のんびりとその動作をシミュレートできます。
以前nintendoDSの「脳トレ」買ってすぐ飽きましたが、このデバッガは老化が進みつつある当局にとって、「脳トレ」に最適で、なおかつ非常に面白いです。(当局比)
何より、じっくりとレジスタやデータそしてフラグの変化を見ながら、アッセンブラソースの動作確認が可能なので、当局の様な高速動作が出来ない脳でも、背伸びさえしなければ十分対応できます。
そもそも実際のCPUは動作が早いので、レベルの高いプログラミング・テクニックが無くても、目的の動作をするソースが、何とか記述できれば問題無です。
前置きが長くなりましたが、このデバッガで遊んでいれば、自然とPICの概要を理解できると思いますし、自由にそこそこのプログラミングが可能となると思います。
MPLAB IDEは無料なのですから、各局様もダウンロードして、まずは遊んでみましょう。
初心者(当局の事です)のハマり原因
これは当局がプログラミングしてみて、まずはハマった原因の一覧です。
その1
各サブルーチンで使用する一時的なワーク(ファイルレジスタ)は共用しない方が良い。
環境変数的(広域変数的)なワークは大丈夫な事が多いですが、一時的ワークは、ついダブって使用してしまい、目的の動作を一見「何故か」しない羽目に陥ります。
どうせ大きなプログラムは当分作れませんので、各サブルーチン専用ワークを確保しましょう。
少ないと言われるRAMエリア(ファイルレジスタ領域)ですが、初心者には十分広いです。
その2
サブルーチンは、最初に詳細仕様、つまり目的、入力方法、出力方法、専用ワーク等を冒頭に、誰が見ても判る様に、明確に記載しましょう。
作成時は覚えているのですが、意識が離れるとすぐ忘れてしまいます。(老化現象ですHi)
これを間違えて呼び出すと、ろくな事になりません。
その3
各サブルーチンは単独あるいは少数のサブルーリン群をチェックするためのミニプロジェクトを作成し、それをシミュレーションデバッガでステップ動作させると、動作確認と間違いが一目でチェックできます。
それをブロックの様に積み上げて、目的のプロジェクトとする方が、総合デバッグで路頭に迷う可能性が大幅に減ります。
その4
SFR(スペシャルファンクションレジスタ)を利用したプログラムは、そのSFRの挙動を十分理解しないと、動かない所か暴走します。
レベルアップするまでは、無理は禁物ですが、STATUSレジスタの理解は必須です。
当局は、STATUSレジスタのC(キャリーフラグ)で騙されました・・・
しかし、シミュレーションデバッガ等で実験しながらレベルアップし、どんどん応用範囲を広げたい所です。
前述した失敗例もレジスタを理解していないために陥ったハマりでした。
失敗例 「7seg_get」サブルーチンハマりの理由
PCLレジスタ、これにはPC(プログラムカウンタ)の下位8ビットが常に反映されている上に、書込みが可能なので、PCLにリテラルリターン・テーブルまでへのアドレス値を加算してジャンプする、と言うスマートなルーチンなのですが、初心者にとっては大きな落とし穴がありました。
それは、PCLにMOV等で書込むとPCの下位8ビットに即反映され、と同時にPCLATHの下位5ビットがPCの上位5ビットに反映され、結果次回はそのアドレスから実行されます。
落とし穴は、PCの上位5ビットはPCLATHに対してはまったく反映されていないと言う事です。
電源投入後、呼び出し側と呼び出される側のプログラムアドレスが最初の0FFH内にあれば問題無いですが、0100Hを超えていると、首尾よくPCLATHにデータを入れないと、暴走します。
この失敗に関しては、シミュレーションデバッガで再現できます。
そして、PCの上位5ビットの取得方法が解りません。
リストファイルでサブルーチンアドレスを確認してから、PCLATHに固定値を入れるか、
最初の0FFH内にサブルーチンを配置し、メインプログラム本体は0100Hから始める、とか配置工夫で解決とかは思いつきますが・・・
256バイトで良いので相対ジャンプ命令が欲しいですよね。
今回のこんな小さな練習プログラムでも、一気にソースを作成し、一気にデバッグする事は、危険な事を悟りました・・・
そうです、当局はしっかりと路頭に迷いました。
最初に思いつくまま作成したソースファイルは思うように動作しなかったですし、何処が悪いのかチェックに時間が取られるばかりで、一向に収束しないので、破棄しました。
結局、上記「その2」そして「その3」からやり直しました。
今回の実験過程の中でこの、「デバッグ→修正orやり直し→デバッグ」作業がほとんどの時間を費やしています。
結局、構想とハードウエア作製は短時間で終了し、コンピュータはソフトがメインだと言う事を、当たり前なのですが、改めて思い知りました。
プログラマ
当局が購入したのは秋月の「PICKIT2互換プログラマ」でZIPソケットが付いていて便利です。
PICをソケットに差込むだけでOKでした。
パソコンにUSBで接続し、MPLAB IDEやPICKIT2プログラマソフトで書込み出来ます。
同梱CD内の「PIC kit 2 Programmer」の方が簡単で解り易く書き込み出来ました。
当局はMPLAB IDEでHEXファイル作成まで行い、「PIC kit 2 Programmer」で書込み、
試運転してみて、MPLABで修正、・・・繰り返しで、最後は調整しました。
当局が購入したのは秋月の「PICKIT2互換プログラマ」でZIPソケットが付いていて便利です。
PICをソケットに差込むだけでOKでした。
パソコンにUSBで接続し、MPLAB IDEやPICKIT2プログラマソフトで書込み出来ます。
同梱CD内の「PIC kit 2 Programmer」の方が簡単で解り易く書き込み出来ました。
当局はMPLAB IDEでHEXファイル作成まで行い、「PIC kit 2 Programmer」で書込み、
試運転してみて、MPLABで修正、・・・繰り返しで、最後は調整しました。
試運転
やはり、シミュレーションデバッガと実際の実行結果は、かなり雰囲気が違います。
結果的には書き込んだ後も、何度もプログラムを修正しています。
しかし、とりあえず動作はしているようで、一安心しています。
と言うのは、一度ピン位置を間違えてPICをソケットに差込んでしまい、実験用電源の電流制限(なるべく少なくしていたのが良かったのかも)が掛かり、壊れたかと思っていたからです。
PICは意外と丈夫なようです。
後、アップカウントにやたら時間が掛かり、最上位桁までカウント終了させるのを諦めました。
よって、最後まで動作を検証できませんでした・・・
何と、オシロとSSGがここ1ヶ月起動していないなあ・・・
こんな事は初めてです・・・
修正記録
2011年12月02日変換表が一部間違えていましたので、修正しました。
2011年12月02日表示基板の回路図に間違いがありましたので、修正しました。
追記
2013年08月01日MPLAB IDEはVer8.92に変更しています。
2013年08月01日PICKIT2はVer2.61、デバイスファイルはver1.62.14に変更しています。
このページに関して追記・修正は終了しています
PIC入門に関しては「PICキット」コーナーを読んで頂ければ幸いです <m(__)m>
①MPLAB IDE、PICKIT2の追加サポート終了、
②PIC16F1シリーズの安価な提供および大幅な機能アップ
以上の理由にて、当局もMPLAB'X IDE、PICKIT3へ移行しました。
特に②に関してアマチュアでも追従した方が大きなメリットがあります。
やはり、シミュレーションデバッガと実際の実行結果は、かなり雰囲気が違います。
結果的には書き込んだ後も、何度もプログラムを修正しています。
しかし、とりあえず動作はしているようで、一安心しています。
と言うのは、一度ピン位置を間違えてPICをソケットに差込んでしまい、実験用電源の電流制限(なるべく少なくしていたのが良かったのかも)が掛かり、壊れたかと思っていたからです。
PICは意外と丈夫なようです。
後、アップカウントにやたら時間が掛かり、最上位桁までカウント終了させるのを諦めました。
よって、最後まで動作を検証できませんでした・・・
何と、オシロとSSGがここ1ヶ月起動していないなあ・・・
こんな事は初めてです・・・
修正記録
2011年12月02日変換表が一部間違えていましたので、修正しました。
2011年12月02日表示基板の回路図に間違いがありましたので、修正しました。
追記
2013年08月01日MPLAB IDEはVer8.92に変更しています。
2013年08月01日PICKIT2はVer2.61、デバイスファイルはver1.62.14に変更しています。
このページに関して追記・修正は終了しています
PIC入門に関しては「PICキット」コーナーを読んで頂ければ幸いです <m(__)m>
①MPLAB IDE、PICKIT2の追加サポート終了、
②PIC16F1シリーズの安価な提供および大幅な機能アップ
以上の理由にて、当局もMPLAB'X IDE、PICKIT3へ移行しました。
特に②に関してアマチュアでも追従した方が大きなメリットがあります。