PIC(4) 16F88

2008-06-27 :  PIC・マイコン
                                                     日記@BlogRanking
前回、ICPと書いたが、ICSP(In Circuit Serial Programming)と云うべきだったのかな。

 さて、ICSPもどきのコンパイル&ゴー環境が出来たので、PIC16F873A 以前の、PIC16F84A、PIC12F683、PIC16F648A はとりあえずお蔵行きかな。
各2ヶずつ買ったのに。

あと、AKI-PICライターで悩んだことを思い出した。
 PIC12F683 に対して書き込みが出来なかったことを思い出した。
結論としては、PICPGM6 のバグだったのだが。
 HPに載っているベータバージョンは、PIC18F2550 に移るまで必要ないと思っていたが、最後の行にPIC12F683 等のことが載っていた。
早速バージョンアップした。でも相当期間変わらないでいるナ。

 今度は、PIC16F88 を使ってみることにした。
ナニ、基板の回路修正が必要だって。ついに半田鏝を引っ張り出す羽目になった。
 ならばついでに、PICの(ブレッドボードの)電源を変えることにした。
相当前に、SCSI外付けMOドライブを廃棄する時に、電源モジュールは取っておいたのだが、これの+5Vラインの先にバナナピンを半田付けした。
 ブレッドボードの黒・赤・緑の端子(昔は陸軍ターミナルと云っていたと思うのだが今はそんな名前ではなかった)にこのバナナピンを指してPICへの電源供給とすることにした。
 で、レギュレーションに関しては、ケータイ充電器とどっちが良いのか解らないけど。これもとりあえず置いておいて、今後これを使うことにする。

 PIC16F88 では、当然 tiny bootloader ファームウェアをAKI-PICライタで書き込んだ。クロックは内蔵8MHzとした。
やっぱり、最初はgoo で、LEDの点滅プログラムである。

次は、PWMによるサウンド出力をやってみた。
CCP1-->R・R分割でグランド。分割点からCカップリングで、強引に8ohmマグネチックSPKをグランド。
 これでも音はでるんだ。PWMの勉強であり、音質や音量については後日じっくり考えることにする。(何時になることやら。)
 ドレミ音階を低音で行うため、プログラムで内蔵クロックを1MHzに変更している。
 なお、mikroBASIC では、組込Sound Library は、16F88 では正常に働かない?
16F873AではOKのよう?だが。

 そうそう、tiny bootloader の欠点?、私にとっての難点は、tiny bootloaderファームウェアを書き込んだ時点でのconfig ワードを変更できないことである。
なので、mikroBASIC プログラムでは、全て同じ値を指定している。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking

PIC(3) tiny bootloader

2008-06-27 :  PIC・マイコン
                                              日記@BlogRanking
コンパイル&ゴーもどきの手順は、以下の通りである。

1.PC上で、mikroBASIC IDE により、プログラミングし、コンパイルする。
 難を云えば、mikroBASIC では、デバイス/クロック/config 指定が
 ソース上でなく別メニューであることだ。

2.出来たHEXファイルを自作パッチプログラムによりパッチする。
 tiny bootloader では、PIC16F の場合、0番地からは
  CLRF PCLATH
  goto Main
 でなければならないが、mikroBASIC のオブジェクトは、
  goto Main
 となっているので、CLRF PCLATH を割り込ませる。
 幸い、2番地、3番地は空いているので、パッチプログラムは
 HEXファイルの1行目のみの書き換えで済む。

3.パッチ済みHEXファイルを、tiny bootloader でPICに書き込む。
 このときの操作手順は、
 1.tiny bootloader を立ち上げ、対象HEXファイルを開く。
 2.PIC側のリセットボタンを押す。(まだ離さない)
 3.tiny bootloader の Write Flash ボタンをクリックする。
 4.PICのリセットボタンを離す。(リセット実行)。
 で、書き込まれる。

4.書き込まれると、直ちにプログラムが実行される。

5.なお、232C接続されていなかったり、
 接続されていても (PC上の)tiny bootloader が立ち上がっていない状態で
 リセット実行しても、約1秒待つだけでプログラムは通常に実行される。

 また、(PIC内の)tiny bootloader はPICのプログラムROM領域の
 最上位アドレス100ワード分に常駐しているだけである。

と、PICライターを使わずに、ICPもどきでほぼコンパイル&ゴーになった。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking

PIC(2) 16F873A

2008-06-26 :  PIC・マイコン
                                                日記@BlogRanking
一通りPICに慣れたところであるが、ここで書き漏らしたことを補足する。

PICの電源+5Vはケータイ充電器を流用しているが、これも半田鏝は使っていない。
 PDCコネクタを分解したあと、ハンダ部分をニッパで持って強引に、かつ慎重に引っ張るとピン(1番と8番だったかな)が抜けるので、先っちょを伸ばすと、ブレッドボードに挿すのにちょうど良いものになる。

 また、PCとの232C通信は、(ケータイのデータエディタ用の)USB-PDCケーブルを使うと具合が良い。これもPDCコネクタを分解し、3線のピンを利用し、MAX232等を使わずに済む。
PDCの6番ピン(PC->PIC)、7番ピン(PC<-PIC)、1番ピン(グランド)である。
大抵は、あと1線(12番ピン)あるがこれは無視する。

 さて、次は16F873A に取り掛かりたいのだが、いちいちPICライターとブレッドボードを行ったり来たりするのは面倒くさい。と思っていたら、
上手く検索に引っかかったのが、tiny PIC bootloader であった。
mikroBASIC 等々にもブートローダは数々あるが、サイズが大きい。操作性が悪いなどで、いまいちであった。
 tiny PIC bootloader は僅か100Wで、PIC16F、PIC18F、dsPIC に対応している。
しかも、リセットSWだけで使える。
もちろんloader自体はAKIライターで書き込んでおかないといけないし、フラッシュメモリのプログラム書き込みをサポートしているPICでないとダメである。

 さっそく、tiny PIC bootloader をインストールし、16F873A 用のHEXファイルをMPLAB(MPASM)で作って、PICに書き込んだ。
ここでも、最初はLEDの点滅プログラムである。
結果は上々。

 そうそう、リセット回路は、10kohmプルアップしたMCLRピンとグランドとの間に、PC用リセットSWを繋いだだけである。
チャッタリング対策?・・・そうですね・・・。でも動いているよ。

 ということで、次はPS/2・KB入力->(232C)->PCを。
mikroBASIC には標準でKB入力がサポートされている。

 ここでも、1点補足。
tiny PIC bootloader を PIC16F で使うには条件があった。
mikroBASIC のオブジェクトはこの条件を満たさない。
mikroBASIC のフォーラムにこのことを投稿した人がいた。
回答は当然、なぜmikroBASIC のブートローダを使わないのかであった。
 私は、コンパイル後のHEXファイルを(PC上で)パッチするプログラムを作った。ActiveBASIC で。
ちょっと、手間は掛かるが、mikroBASIC の無料に免じて我慢することにした。
これで、PICは移動させずにコンパイル&ゴーに近い状態になりました。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking

PIC(1) 入門

2008-06-26 :  PIC・マイコン
                                             日記@BlogRanking
PICって面白そう。(遅れているかな)
先ずは、準備。何がいるの?
1.PC上でのソフト開発環境。
 やっぱりBASIC(Windows上ではActiveBASICで遊んでいる?)。
 mikroBASIC なら全PIC対応で、2kWまで無料だ。
2.ライターが必要。
 半田鏝はとりあえず止めといて。
 AKI-ライターVer.4完成品を購入。シリアルポート有、ケーブル有。
3.メインはchip。
 先ずPIC16F84A(Web上で事例が多い)。ついでに、12F683、16F648A
 どうせ買うなら(なかなかアキバに行けないので)16F873Aも、
 USBもやってみたいので、PIC18F2550まで買い込んだ。
4.HW環境。
 ブレッドボード(パン板?)なる便利なものが出回っていたんだね。
 R、Cを少々。
 LEDはジャンク箱(小さいけど)に入っている。
 電源は?PDC型ケータイの充電器(+5V版)をばらしてと。

早速、LED点滅の入門者プログラムを16F84A向けで書いてみる。
ライターで書き込み、ブレッドボード上で組み立てる。
配線したピンは、4、5、6、14だけ。
14ピン:+5V、5ピン:G、4ピン:MCLR 10kohmプルアップ、
6ピン:メインのLED出力 330ohmで10mAソース
みごと(?)完動した。感動した。(何事も最初は感動もの???)
(訂正:84A ではあと、セラロックが必須でした。15、16ピン)

次は、PIC12F683 に挑戦。
内蔵クロックを使用し、白色LEDで8色(7色?)表示だ。
OKOK。

さらにさらに、PIC16F648A へ。
ソフト的にPWMで明るさを徐々に変化させる。
これで、3種のchip制覇かな???
MPASM ではこうは行かない。高級言語(だよねBASICは)のおかげです。

この3chipでもう一巡、
PCのプリンタポートによるスイッチ入力。
PCとのRS232C通信(16F648A内蔵機能)。
ソフト232C通信(mikroBASIC内蔵ルーチン)で、PCからLED制御。
と、ココまでは昨年の成果でした。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking
おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
03 | 2018/04 | 05
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 - - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク