ひやしたです。
別件が一段落したので、P60の件を調査してみました。
質問を交えて投稿致します。
#BSC.WCR=0x00(WSCによるウェイト)としたときに
#P60が動作しない、という件です。
こんなプログラムを作り、誤診を避けるためROMに書き込んで実験しました。
3052は自作基板、3048はイエローソフトの基板を使用しました。
BSC.WCRの設定行の一つをコメントアウトして作成、オシロでP60を観察しました。
void main(void)
{
int ii;
P6.DDR = 0x07;
// 実験結果
// 3048 3052
// BSC.WCR = 0x00; // HI HI
// BSC.WCR = 0x01; // NG2 NG2
// BSC.WCR = 0x02; // NG2
// BSC.WCR = 0x03; // NG2
// BSC.WCR = 0x07; // NG2
// BSC.WCR = 0xF0; // NG1 NG1
// BSC.WCR = 0xF1; // OK OK
// BSC.WCR = 0xF2; // NG1 NG1
// BSC.WCR = 0xF3; // OK OK
// BSC.WCR = 0xF4; // NG1 NG1
// BSC.WCR = 0xF5; // OK OK
// BSC.WCR = 0xF6; // NG1 NG1
// BSC.WCR = 0xF7; // OK OK
for(;;){
for(ii=0; ii<10000; ii++);
P6.DR = 0x01;
for(ii=0; ii<10000; ii++);
P6.DR = 0x00;
}
}
実験結果は
HI=Hiになりっぱなし
NG1=Hi出力時は良いのですが、
Lo出力時に「鈍ったデータバス」を見ているような波形が出ます。
NG2=Hi出力時は良いのですが、
Lo出力時にゼロレベル付近に妙な波形が出ます。(表現しにくいです)
まず、BSC.WCRの上位4ビット(Bit4〜7)はマニュアルには
リザーブビットでリードで常に1,ライトは無効、初期値1と記載されています。
ライトは無効ということで、ゼロを書いても問題無いのだと思っていましたが、
ここはちゃんと1を書かなくてはならないようですね。
【質問1】これって常識なのでしょうか?
P60はマニュアルによるとWCERが全て1(初期値)
WMS1(BSC.WCRのビット3)がゼロならば入出力として使えると
記載されていますが、ビット0が1でないと動作しない結果となりました。
【質問2】何がどうなっているのでしょう・・・?
以上、ご存じの方がいらっしゃいましたらご指導お願いします。