忍者ブログ

あやの

NゲージをベースとしたDCCについての日記を 書いています。 ある程度貯まりましたら、鉄道模型のDCCのまとめサイトに まとめています。 DCC館 http://1st.geocities.jp/dcc_digital/ DCC2号館 http://dcc.client.jp/

2017/03    02« 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  31  »04
【今日も難しい話です】
SmileWriter5in1を使って、PIC12F1822用のPICライターを作ろうと試行錯誤しています。

今日は、Arduinoのスケッチ:Ardpicprog、Windows7用ホストアプリ:ProgramPicが
GitHubに登録されているので、Fork(デットコピー)して自分のアカウントでリポジトリしました。


Windows7用ホストプログラム
ArdPicProgHost.exe
extended segment address に対応。

Arduino用シールド
ProgramPIC.ino
PIC12F683 と PIC12F1288に対応。


まだGitHubの使い方がよく分からない(^^;

拍手[0回]

PR
【今日も難しい話です】
SmileWriter5in1を使って、PIC12F1822用のPICライターを作ろうと試行錯誤しています。

先日までの調査した結果から、プログラムを変更していきます。

1、Extended segment addressに対応させました。
   従来のプログラムは RECTYPE=04 を無視していたので、処理を追加しました。
2、EEPROMdump表示部分で、アドレスが0xF000だと、FFFFF000で表示されてしまうので、
  とりあえず何も考えずに、myRightという関数作って右から4文字を表示する様に変更。


3、ProgramPICスケッチ側
pic12F1822のdeviceInfoを確定させました。

EEPROMのアドレスの件は、
KO-IBO project blogさんの、Pic12F1822のデータEEPROMに書き込むのは
を参考にしました。
結局PIC12F1822のEEP-ROM領域は0xF000〜です。



完成〜!!!
Erase → Write とボタンを押すと、Program,Config,EEP-ROMが正常に書き込めました。


あとは電車に実装して、動作確認です。
でも、手頃な電車が無いな〜

ちなみに、書き込み電圧は12Vのままです。

これで、PIC12F683とPIC12F1822用のPICライタ部が完成したので、当初考えていた機能が
全部実装できました。パチパチ。

拍手[3回]

【今日も難しい話です】
SmileWriter5in1を使って、PIC12F1822用のPICライターを作ろうと試行錯誤しています。
ほぼ調べたメモ代わり状態ですw

 
HEX ファイル上のLOAD OFFSETが0008の時、PICのアドレスは4なのですね。
だから、ArdPicProgHostのソースでアドレスを取り込む部分で、
intDataAddress = Val("&H" + strSourceFileIntelHex.Substring(intFilePointer, 4)) >> 1
の様に「>>1」で右に1bitずらしていたのですね。

このint型への変換でValを使っていますが、これは負号付き16bitなので、
0xE000が来ると、16bit負号ありで10進数に変換されると、「-8192」になって、
おかしくなってしまうのですね。

int型から、Long型に変えて、
longDataAddress = Clng("&H" + strSourceFileIntelHex.Substring(intFilePointer, 4)) >> 1
10進数変換は、Clng()を使うと良さそう。

あとは、 RECTYPE = 02 の時の、拡張セグメントアドレスレコードの演算部分を追加して
あげればPIC12F1822の対応ができそう。

!!!

えーPIC12F1822の,VIHHって、Min8.0V 〜 Max9.0Vなんですか!
詰みました。
PIC12F683は12Vで良いのに、電圧変えないといけないのかぁ・・・



拍手[0回]

【今日も難しい話ですw】
 SmileWriter5in1で、PIC12F1822ライタが作れないかなの調査です。
 PIC HEXファイルを分析していたところ、先日赤枠で囲ったところは、実はConfiguration Wordの
 値でした。


MPLAB IPE をMacにインストールして、HEXファイルを覗いてメモリマップを確認したのと、
HEXファイルを分析してわかりました(^^;

レコードタイプが04だと拡張リニアアドレスという事なので、アドレスを算出するには、
32bitに拡張する計算が必要です。
((0x0001<<16) + 0x0000+0x0001) / 2 = 0x8000
0x0001 を左に16bitシフトして、LoadOffset(0x0000)を加算
Data(0x0001)を加算して、2で割ります。

というわけで、現状のHostProgramであるArduino Pic Programmer
拡張張リニアアドレスレコードに対応していないんだなー。
この辺を調べましょう。

【追記】Ardiono Pic Programmerのソースファイルを眺めて・・・



'process extended segment address -> not required

そかー・・・・むむむむむ


拍手[0回]

【今日は難しい話のブログですw】
SmileWriter5in1を使って、PIC12F1822用のPICライターを作ろうとしています。
自前で作る人って居ないようですね(^^;
ググっても、情報がありません;
腰を据えて作業するために、PIC12F1822 Memory Programming Specificationの
PDFファイルを紙に印刷しましたw

1、書き込み途中でエラーになってしまう原因調査
 ぬっきーさん配布のHEXファイル構造でFLASHデータとEEPROMデータの間に
 先頭アドレス付近に書き込むデータが設定されている(赤枠内)
 ライタはファイルの先頭から順に書き込んでいるため、先頭付近を再度書き込めと
 言われても、イレースしないと書き込めないので、エラーになっていました。
 赤枠の3行を削除すると書き込めます。要調査ですね。


2、EEPROM領域のアドレスは?
PIC12F1822のデータシートには、0x1E000-0x1E1FFと書かれているけど、
HEXファイルは0xE000だし、
ぬっきーさんのソースは、
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;    CV初期値の設定(EEPROMへのデータ定義)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	org	0xF000	;
;----- 初期データ -------- CV値 ----------------------
なので、0xF000となっている。
ちょっと謎です。要調査。
http://koibo.blog.fc2.com/blog-entry-34.html

3、書き込みツール修正
Windowsの書き込みツールはVB.NETで作られているのですが、EEPROMアドレス0xE000の
様に最上位bitがONになっているとうまく処理できていないところがありました。



例えば、16進数->10進数変換で val("&H" ・・・を使うと、整数では負極になったりします。
valからCLngに変更しました。
元々の >>1 が何のためにあるのやら。

調査継続です・・・


拍手[0回]

ブログ内検索

プロフィール

HN:
あやのすけ
性別:
非公開
| HOME Next >>
Copyright ©  -- あやの --  All Rights Reserved
Design by CriCri / Material by もずねこ / powered by NINJA TOOLS / 忍者ブログ / [PR]