ハード部分は完成したので、
***PICにプログラムを書き込み
今回はPICライターに、秋月の”AKI-PICプログラマー Ver.4”を使用
(書き込みソフトは”PIC Programmerv4 ”)
ソース・ファイルがアセンブラで書かれているので、Microchip社のMPASMWINを使用してコンパイルします。
(PCにMicrochip社のMPLAB IDEをインストールすれば入っている、 私の環境ではv8.87)
私の使っている物は古いようで、最近はMPLABX IDEになっています。
書き込み用PIC(16F886)をセット
”PIC Programmerv4 ”を立ち上げた状態
アセンブラ・コンパイル設定
MPASMWINのインストール場所を指定
書き込むソース・ファイルを指定
”750RAM.ASM”を指定、訳あって別ファイルを指定(後述)
”生成 ReLoad(A)”をクリックしてコンパイルする、まだ書き込みはしない。
コンパイル処理情報
コンパイルが終わると、書き込むメモリー内容が表示される
また、PICのコンフィグ情報1と2も正しくセットされているか確認する
コンフィグ情報2
コンフィグ情報を確認したら、PICに書き込む”プログラム”をクリック
2度目からの書き込みでは、上書きで先に進む
下段のメッセージで、”プログラミング成功”を確認して書き込み完了。
PICは出来上がったので、PC側へ
”Serister Version 1.2.5” をインストール
古いソフトなので、COMポートは1~9しかサポートしていない
色々なUSB-シリアル変換を使って来ていると範囲外のポートが自動でセットされる
デバイス・マネージャーで確認して範囲外であれば、プロパティから強制的に1~9の使っていないと思われるポートへ変更する
”Serister”の設定
ポート番号、ボーレート(2400)、RTS制御/DTR制御を常にON、テキストモード
”監視開始”をクリック
受信待機になる
PIC側のタクトスイッチを押して緑LEDのみ点灯にすると、
RAMから読みだしたデータが送られて来て表示される
緑LED点灯 -> 緑LED点滅 -> 赤/緑LED点滅になれば読み出し終了
右上”保存”をクリックして適当に名前を付けてデータを保存
データ書き込みは
PIC側のタクトスイッチを長押しして赤LEDのみ点灯にする
下段”送信”ボタンの上の欄に復元データを貼り付け(保存データからコピー)
”送信”をクリック
赤LED点灯 -> 緑LED点滅 -> 赤/緑LED点滅になれば書き込み終了
これで、RAMデータの保存と復元が出来るようになりました。
読み出しデータは改行が含まれていないので、編集時に改行を入れないように注意
昔作った方(N2CBU版)で保存したデータはコッチ
専用ソフトなのでプログラム画面で内容の編集が出来るため、
保存テキスト・データも見やすいようになっています。
このソフトの開発目的は、もう一つ・・・・周波数拡張も有ったようです!
この保存データを今回使うには、逆に編集で余分なものを削除しなければなりません
★ソース・ファイルの修正
今回、なぜかすんなりと動作しませんでした。
読み出しデータが、毎回異なります。
配線を何回も確認しましたが、間違いは無い・・・・
アセンブラのプログラム開発する能力は最初から無し・・・・!
途方に暮れてしばらく放置
フッと思った・・・・PIC側が速すぎるのでは
RAM読み出しのステップに”NOP"を追加してみたら大正解!!!
安定して読み出し出来るようになった。(何回読んでも同じ内容で一安心)
(RAMユニットの相性が有るのか? 今回確認しているのは1個だけなので不明)
読み出しOKになったので、早速書き込み。。。こっちは問題無し
確認にはファイル内容比較ソフトを使うと一瞬で判り便利
(DFとかその他色々なフリーソフトがある)
ソースのCONFIG設定が一部間違っていると思われるので修正した。
オリジナルの 750RAM.ASM の
35-36行目
修正後
__CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _CPD_OFF & _LVP_OFF & _BOR_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _IESO_OFF & _FCMEN_OFF
__CONFIG _CONFIG2, _WRT_OFF & _BOR40V
580-585行あたり(RAMRDサブルーチン内)
修正後
BCF RAMCS ;CS=ON
NOP ;今回追加(必須)
MOVF PORTB,W ;RAM READ
ANDLW B'00001111' ;上位マスク
MOVWF RDDATA ;READ DATA SET
BSF RAMCS ;CS=OFF
NOP ;今回追加(こっちは追加しなくてもOKみたい)
RETURN ;
追記:2番目のNOPは、追加しなくても動作OKでした。
どちらでも大勢に影響はないようです
すぐ忘れてしまう私への備忘録です。
0 件のコメント:
コメントを投稿