DRO01用入出力ユニット、全部配線しました。おかげでCR85の整備ができず。
CR85はこの前のレースから走ってないので腰上だけで済むし。問題はピストン
のナラシ日程、最後の練習を富士にするか筑波にするか...。週間天気予報を
見ながら唸るだけで、まだ決まってない。

左側がLEDユニット。青いラインがソース、オレンジがシンク。18桁ダイナミッ クなので、ソースの引きまわしが大変。
M/B側はソースのTD62783とシンクのTD62006。ゼロリセットのボタン用の74HC14。 そして、AKI-H8/3694F
一番下のTD62006の横に二つついてる10Kの抵抗は、P56,P57用のプルアップ用。 このポートはI2C共用でオープンドレインなので。(最初つけなかったらLEDがつ かなかくてちょっと焦った。)

裏側からもとりつけた抵抗が哀愁を漂わせています。これはソースのLEDの抵抗。 当初330Ωにしてたところ、どうも輝度が足りない気がして、LEDの限界まで流 すことにして、330Ωを並列にして165Ωにしました。7セグLEDは秋月で買った C-533SR。Vccは実測で4.3V程度。

スイッチは入力専用ポートのBに接続。これが結構はまった。このポートは A/Dコンバータと共用。A/Dコンバータのチャネルセレクトが常に有効なので ポートBのどこかのビット(ADCSRで設定)はI/Oポートとして使えないのだ。
デフォルトで0が入力チャネルなので、そこに継げていたスイッチがとれず... てっきりハード側を疑っていて、7414交換したり配線を変更したり...ちょっと はまりました。A/Dコンバータ使ってなければ全部I/Oポートとして使えるだろ うと思っていたのだ。
その後もちょくちょくハマり。久々にH8でintを16bit(gccのオプションによっ てはint 32bitにもできるけれど、このOSでは16bit。その方がいいコードを吐 くので)にしてたのを忘れていた。

左側がLEDユニット。青いラインがソース、オレンジがシンク。18桁ダイナミッ クなので、ソースの引きまわしが大変。
M/B側はソースのTD62783とシンクのTD62006。ゼロリセットのボタン用の74HC14。 そして、AKI-H8/3694F
一番下のTD62006の横に二つついてる10Kの抵抗は、P56,P57用のプルアップ用。 このポートはI2C共用でオープンドレインなので。(最初つけなかったらLEDがつ かなかくてちょっと焦った。)

裏側からもとりつけた抵抗が哀愁を漂わせています。これはソースのLEDの抵抗。 当初330Ωにしてたところ、どうも輝度が足りない気がして、LEDの限界まで流 すことにして、330Ωを並列にして165Ωにしました。7セグLEDは秋月で買った C-533SR。Vccは実測で4.3V程度。

スイッチは入力専用ポートのBに接続。これが結構はまった。このポートは A/Dコンバータと共用。A/Dコンバータのチャネルセレクトが常に有効なので ポートBのどこかのビット(ADCSRで設定)はI/Oポートとして使えないのだ。
デフォルトで0が入力チャネルなので、そこに継げていたスイッチがとれず... てっきりハード側を疑っていて、7414交換したり配線を変更したり...ちょっと はまりました。A/Dコンバータ使ってなければ全部I/Oポートとして使えるだろ うと思っていたのだ。
その後もちょくちょくハマり。久々にH8でintを16bit(gccのオプションによっ てはint 32bitにもできるけれど、このOSでは16bit。その方がいいコードを吐 くので)にしてたのを忘れていた。
H8/3694のI/Oポートの設定。
void
ioport_init ()
{
// Port 1
ポート1の設定にSCI3と共用のポート2の設定があるのに注意。そしてこれが
優先する。
*PMR1 = PMR1_TXD; // Port 1 I/O port(Disable IRQ, TRGV, TMOW), P22 is TXD.
*PCR1 = 0xff; // Output.
*PUCR1 = 0x0; // No pull-up
ポート2は全てSCIに設定。
// Port 2 (SCI3)
*PCR2 = 0x0; // SCI3
ポート5はI2Cの設定が優先する。
// Port 5 (I2C)
*I2C_ICCR = 0; // Disable I2C (P56,P57 are I/O port)
*PCR5 = 0xff;
// Port 7 (Timer V)
ポート7はタイマーVの設定が優先する。その他に常時共用ポートあり(P75,P74)
*PCR7 = 0xff;
*TCSRV = 0; // Timer V/ Disable TMOV (P76 is I/O port)
// Port 8 (Timer W)
ポート8はタイマーWの設定が優先する。その他に常時共用ポートあり(P80)
*PCR8 = 0xff;
*TMRW = 0; // Timer W/ Disable FTIOD,FTIOC,FTIOB,FTIOA
*TCRW = 0;
*TIERW = 0;
*TIOR0 = 0;
*TIOR1 = 0;
ポートBはADCSRの設定によりどれか一つはアナログ入力チャネルになる。
// Port B (ADC)
*ADC_ADCSR = 7; // Set ADCSR port (bit 7)
// Set default.
*PDR1 = 0;
*PDR5 = 0;
*PDR7 = 0;
*PDR8 = 0;
}
