DRAMで使われていた。。
2)のH8簡易モニタを修正して、PWM制御に使っているポートを初期化しようと思って、H8簡易モニタのソースをダウンロードしてみてみたところ、オールアセンブラでした。ぐた。アセンブラは子供のころにZ80、大学時代に80386をやっていたが、いまさらH8のアセンブラを覚える気になれない。あと気になっていたのが、ロード中の暴走は左車輪のみ暴走する。おかしいなと思ってピン配置をみてみたところ、PWM信号生成にH8-3069の「97番ピン TIOCA1」を使っているのだが、H8簡易モニタのソースをずっと追って行ったら、
_BeforeInit: mov.b #0xff, r0h mov.b r0h, @IOREG_P1DDR /* Enable A0 - A7 */ mov.b r0h, @IOREG_P2DDR /* Enable A8 - A15 */ mov.b r0h, @IOREG_P3DDR /* Enable D8 - D15 */ mov.b #P5DDR_A16, r0h /* Enable A16 */ mov.b r0h, @IOREG_P5DDR mov.b #P8DDR_CS1 | P8DDR_CS2, r0h mov.b r0h, @IOREG_P8DDR /* Enable CS1 - CS2 */ mov.b #PBDDR_UCAS, r0h mov.b r0h, @IOREG_PBDDR /* Enable Upper CAS */ /* DRAM: 2,048/32ms: 32ms / 2,048 = 15.625us */ /* 20MHz / 8 / 39 = 1 / 15.6us */ mov.b #(32*(CLOCK_RATE/1000))/(8*2048), r0h mov.b r0h, @IOREG_RTCOR mov.b #RTMCSR_CKS1, r0h mov.b r0h, @IOREG_RTMCSR /* clock / 8 */ mov.b #DRCRB_RCYCE | DRCRB_MXC1, r0h mov.b r0h, @IOREG_DRCRB /* CA: 10 bit, A23-A10 */ mov.b #DRCRA_BE | DRCRA_DRAS0, r0h mov.b r0h, @IOREG_DRCRA /* Enable Upper CAS */ mov.l #CLOCK_RATE/1000, er0 /* Wait for DRAM stable */ BeforeInit1: dec.l #1, er0 bne BeforeInit1 rts
BeforeInitという関数を見つけた。ここのコメントに「CA: 10 bit, A23-A10」とある。そして自分が使っている97番ピンは、A23と兼用ピン。ビンゴ!ぶつかっていました。H8-3069のデータシートを読んだところDRAMのデータ転送として使う模様。これが原因かな。
しかし、理解できないのが、その転送中に97番ピンにつながっているCN29をオシロで見ても信号が見えない。0V近くで細かく揺れている程度。ふーむ。H8の97番ピンとCN29の間がどうなっているのか手元にAKI-H8/3069F-LANの回路図がないので不明。