2025.2.4
前へ
次へ
ホームページトップへ戻る


PICBASICコンパイラ

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
まるでインタプリタ。でもコンパイラです。超カンタン超シンプルです。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第210回]



●PIC16F84(6)デバイスが見つからない?

このところ書いておりますようにPIC16F84、PIC16F627のERASE問題に頭を悩ませられてきました。
前回ではやっととりあえずの解決策をみつけて少しはほっとしました。
もっともそれは前回書きましたように根本的な解決策というよりも言うなればちょっと苦しい合格点すれすれの解決策です。
それでとりあえずは一件落着したことにしてしまいましょうというようなものですが。
やっぱり納得できないのですよねえ。
ちゃんとドキュメントの通りにやっているつもりなのですけれど。
なぜそれがその通りにできないのか。
やっぱり諦めきれません。
そこのところを追求してすっきりしたい。
実に往生際が悪いと言いますか、まことに悲しい性(さが)なのであります。
そんなわけで。
なんとなく悶々とした数日を過ごしておりました。
ここで「おりました」と過去形で書いておりますのは。
そうなんです。
今日になって、やっと晴れてクリアできました!
久し振りにすっきりした気分になりました。
やっぱり最後まで諦めずにとことん粘ってみるものです。
ま。
そのことにつきましては近日中に書くことにいたします。

今回はそこに至る過程であれこれ試行錯誤をしている過程で経験してしまったハプニングといいますか事件についてであります。
あれこれ悩んでいるなかでちょいと確認してみたいことがあって、テストに使っていたPIC16F84を秋月のPICプログラマPICKIT2にかけてみたところ。
ぬあんと。
認識してくれません。



げっ。
えらいこっちゃあああ。
これはPIC16F84の話です。

’A’がついたPIC16F84Aはそこそこ所有しております。
まだ秋月でも入手できます…はず。
うわっ。
た、高い!
1個550円!
そらもう使えんわあ。
ですけれど。
とにかくまだ入手可能です。
でもPIC16F84はもう入手できません。
ま。今更探してまで入手する気はありませんけれど。
しかし。
テスト用には今や貴重なOnly oneです。

あれ?
でも確か今まで普通にテストに使っていたはす。

念のため開発中の自前のPIC WRITERで確認してみました。
テストプログラムのHEXファイルをロードして/PICWRコマンドを実行しました。
logfile piciolog\0203183440.txt open
*** pic i/o ***
picio-30 connected
>/hload 16f84test.hex
loading 16f84test.hex ...
i=167,binbfend=68
>/picwr
startcode=01
i=6,b=2,[04]0000
[05][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=12,b=2,[00]0000
[05][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=22,b=6,[00]000a
[05][00][06][00][0A][83][16][85][01][86][01][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[01]
i=42,b=16,[00]0010
[05][00][10][00][10][83][12][21][08][85][00][10][20][A2][0B][0B][28][A1][03][09][28]
[01]
i=58,b=12,[00]0020
[05][00][0C][00][20][3E][30][A0][00][86][06][A0][0B][12][28][08][00][FF][FF][FF][FF]
[01]
i=64,b=2,[00]400e
[05][00][02][40][0E][FB][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
[03]
picwrend

うーん。
普通に書けたようですが。
正しく書き込めたかどうか確認のためにVERIFYコマンドを実行しました。
>/verify
inbfend=0
startcode=01
i=6,b=2,[04]0000
[06][04][02][00][00][00][00][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(01)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)
i=12,b=2,[00]0000
[06][00][02][00][00][05][28][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(02)(05)(28)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)
[o][o]
i=22,b=6,[00]000a
[06][00][06][00][0A][83][16][85][01][86][01][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(06)(83)(16)(85)(01)(86)(01)(00)(00)(00)(00)(00)(00)(00)(00)(00)(00)
[o][o][o][o][o][o]
i=42,b=16,[00]0010
[06][00][10][00][10][83][12][21][08][85][00][10][20][A2][0B][0B][28][A1][03][09][28]
(10)(83)(12)(21)(08)(85)(00)(10)(20)(A2)(0B)(0B)(28)(A1)(03)(09)(28)
[o][o][o][o][o][o][o][o][o][o][o][o][o][o][o][o]
i=58,b=12,[00]0020
[06][00][0C][00][20][3E][30][A0][00][86][06][A0][0B][12][28][08][00][FF][FF][FF][FF]
(0C)(3E)(30)(A0)(00)(86)(06)(A0)(0B)(12)(28)(08)(00)(A1)(03)(09)(28)
[o][o][o][o][o][o][o][o][o][o][o][o]
i=64,b=2,[00]400e
[06][00][02][40][0E][FB][3F][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF][FF]
(10)(FB)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)(FF)(3F)
[o][o]
vfend
error=0

うまく書き込めているようです。

念のために/PICRDFコマンドで読み出してHEXファイルを作成しました。
>/picrdf 16f84test250203.hex
startcode=01
type=04,uadrs=00
[08]
0000[10][05][28][FF][3F][FF][3F][FF][3F][FF][3F][83][16][85][01][86][01]
0010[10][83][12][21][08][85][00][10][20][A2][0B][0B][28][A1][03][09][28]
0020[10][3E][30][A0][00][86][06][A0][0B][12][28][08][00][FF][3F][FF][3F]
0030[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0040[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0050[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
0060[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]

07B0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07C0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07D0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07E0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
07F0[10][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
type=04,uadrs=01
[08]
400C[10][00][00][FB][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>/exit

リモート接続を終了しました
logfile closed at Mon Feb 03 18:38:16 2025

冗長になりますから途中を省略してあります。

作成したHEXファイルをWinMergeでもとのファイルと比較しました。



特におかしいところはありません。
ちゃんと書き込めています。
さらに念のため[第207回]と同じテストをして正常に動作することを確認しました。

こうなるとどうして秋月のPICプログラマで認識できないのかそこが謎になってきます。
ひょっとするとあれこれテストをしている中で何かアクシデントが起きてDevice IDが消されてしまったなんてことが起きたのかもしれません。
PIC16F84AのDevice IDは下記に記されています。

[出典]Microchip Technology Inc.PIC16F8X EERROM Memory Programming Specification

しかしPIC16F84については書いてありません。
Older devices do not have device ID だそうです。
うーん。
じゃあどうやってPIC16F84を認識するのでしょう。
実はPIC WRITERプログラムを一部書き換えてDevice IDも読めるようにしてそこも確認してみました。
上でお見せしたログにもそれは表示されています。
最後のここのところです。
type=04,uadrs=01
[08]
400C[10][00][00][FB][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F][FF][3F]
[01]
>/exit

アドレス400CがDevice IDです。
0000になっています。

ひょっとするとDevice ID以外のところにも何かの認識コードが書かれていたのかもしれません。
なにしろPIC16F84はただ1個しか残っていませんからこれ以上確かめることはできません。
しかし。
よくよく考えてみますと。
なまじDevice IDだかなんだかというものがあってそのためにちゃんと使えるPICが認識できないためにプログラムの書き込みができないということからすると。
そんなものをはなから認識したりしなくてこうやってしっかり書込みができてしまう試作中のわがPIC WRITERのほうが使い勝手がよいのではありませんか?

以上。
手前味噌であります。

PICBASICコンパイラ[第210回]
2025.2.4 upload

前へ
次へ
ホームページトップへ戻る