HEW でIDの設定がうまく行きません。そこで、別のプログラムに代えてやってみるといとも簡単にIDが設定できます。
#include "sfr_r8m12a.h"
void main(void);
void main(void){
volatile int i, j;
// ポート1の1bit目を出力に設定
pd1_0 = 1;
_asm(" .id ""\"#1234567890abcd\" ");
while(1){
// ポート1の1bit目をHIGH
p1_0 = 1;
for(i = 0; i < 1000; i++){
for(j = 0; j < 3; j++);
}
// ポート1の1bit目をLOW
p1_0 = 0;
for(i = 0; i < 1000; i++){
for(j = 0; j < 3; j++);
}
}
}
そして.id ファイルの中味は下記です。
-ID#1234567890abcd -ofsregx FF
0FFDF : 12
0FFE3 : 34
0FFEB : 56
0FFEF : 78
0FFF3 : 90
0FFF7 : AB
0FFFB : CD
0FFFF : FF
ちゃんとIDが代わっています。
一体何がおかしいのか??、、、、
mot info IDは設定の値になっています。
Reserve ID、 ALL 0xFF。
IDは新しいIDになる。
Reserve ID ALL 0xFFでverifyをクリック、設定後のIDを表示。
Reserve ID ALL 0xFF で Read Dataをクリック。
上記の二つはDEVICEのIDとr8cprogu-GUIのIDが異なるのでIDエラーにならないのかな?
M12AのIDはデフォルトでFF(7バイト)になっている。これが何かの都合でFF以外に書き換わると一切のアクセスが出来なくなってしまう。
確かに、敢えてIDを書き換えた訳ではないのにアクセスを拒絶されてしまう状況は経験した。HEWでコンパイルを実行すると「*.id」が.motファイルのあるフォルダに出来る。これをテキストエディタで見ると
*.idの中味。
-ID#FFFFFFFFFFFFFF -ofsregx FF
0FFDF : FF
0FFE3 : FF
0FFEB : FF
0FFEF : FF
0FFF3 : FF
0FFF7 : FF
0FFFB : FF
0FFFF : FF
上記の様にID は all FFである。
IDを書き換えるにはプログラムに組み込む必要があるらしい。そこで下記のようにやって見た。(このやり方がいいのか、、、は、不明)
#include "sfr_r8m12a.h"
void main(void);
void main(void)
{
int i;
prc0 = 1; //Protect off
xrcut = 1; //purge XIN-XOUT feedback register
//locodis = 0; //Low speed on-chip oscillator on
hocoe = 1; //High speed on chip OSC select
exckcr = 0x02; //system clock --> P4_7
//ckpt1 = 1;
//ckpt0 = 0;
for(i= 0; i<50; i++);
phisel = 0x00; //clock分周比選択(分周なし)
hscksel = 1; //High spped on chip OSC
scksel = 1; //System base clock select
locodis = 1; //stop low-speed on-die oscilator
prc0 = 0; //Protect on
_asm(".id ""\"#1234567890abcd\"");
asm("nop");
}
赤字の部分が書き込むIDで1234567890abcde。これをコンパイルするとwarningが出るが一応パスする。(下記がそれ)
L1180 (W) Directive command ".ID" is duplicated in "C:\WorkSpace\test_clock\test_clock\Debug\test_clock.obj"
*.id の中味は相変わらずFFのまま。どうもこの中味は変化せず、.motの中にIDが組み込まれるらしい。兎に角、motを書き込んでID チェックをやるとFFと表示され期待の 1234567890abcd とは表示されない。
.motをバイナリエディタで見るがモトローラ形式で見ずらい。ID書き換えについては検索してもこれと云った情報はなさそう。
バイナリエディタで書き換えてもサムチェックの変更があるので面倒。プログラムで書き換えが出来れば、その方がいいはず。
今度はM12Aとキャラクタ タイプのLCDをつないで何か表示させてみるかな、このLCDはAVRではやったのですが。
異なるCPUでやってもショウガナイか、、、、。I2Cタイプの温度センサーで温度表示、これもAVRでヤッタシなー、どうも今一、モチベーションが上がらないですね。
それに倒立ロボ、リモコンで制御する方法が分かったのですが、ArduinoでIR部分の記述がコンパイルエラーで先へ進まず停止中。
これもなんとかしたいのですがね。
関係ないですが、倒立状態は1時間は持続します、ただそれだけ、まあ倒立させるまでのチューニングにかなり苦労しましたが。
梅雨明けで急に暑くなり涼しくなるまで暫く休憩ですね。頭の中はオールリセットされてしまうでしょう。