_★
CPU基板デバッグ
Ethernetの状態を表示するLEDの点灯がヘンだったので修正。
まず、石からのインジケータ信号のロジックが逆だったので修正。
それでも、点灯の仕方というか想定していたものと違っていたので調査。
当初、内部レジスタでLEDを設定するのかと思ったがどうも違うみたい。
で、仕方ないので石のマニュアルを読む
*1
。
すると、LEDの設定をするピンがあるのを発見。
プルダウンしてあったんで抵抗を外してみたら見事に期待通りの点灯をした。
次に昨日から懸案になっていたSIO(16550)の動作確認。
相変わらずレジスタは読める。
テストプログラムをいじって石の動作をみれば、どうやら送信は出来るみたい。
だが、受信が全く駄目。
ロジックプローブで石のデータラインを見るが、そもそも受信データが吐き出されいない。
バスタイミングの問題かと思い、ロジアナでバス-IC間のタイミングを測定しても問題ないみたい。
当該の石のマニュアル読みまくっても埒が開かんので互換製品のマニュアルも読む。
で、丁度参考回路図が付いていたヤツがあったので見る。
なにゅ?オレの回路では未接続な部分が接続してある。
えっ。16550ってBAURATE#とRCLKを接続せにゃイカンのかよ。
内部でループバックしていないのか!
16650とか16552なんかは未接続でも使えるのにぃ。やられた。<マニュアル良く読め
つーことで、ジャンパー線を飛ばしてテストプログラムを動かしたらキチンと動作。
遂にジャンパー線が1本飛んでしまった。はぁ〜。
もう、そんなこんなしていたんで16550の使い方を覚えてしまった。
あと、先週から動作がヘンな電気錠I/F。
CR時定数回路とCPLDでパルスを作成しようとしていたが、どうしても出ない。
論理上では絶対に出るハズなのに出ない。
CPLDへの入力をロジアナで見ると少くとも正常波形であった。
もうどうにもならないのでCPLD内部信号を一旦外部に出して、それをロジアナで見た。
すると、入力信号のハズが出力信号の波形になっていた。
あれ?と思い、回路図とCPLDのソースを比較してみると、何とピン番を間違えていた。
そらぁ、出んわな。
もうね、アフォかとヴァカかと。
これを正しいピン番にしたらパルスが出た。
でもまぁ、今日は1日で大前進したんで良しとするか。
あとは、A/D変換終了割り込みが上らないバグを修正するだけだな。
これもポカミスっぽいなぁ。
*1: Ethernetの部分は上司の回路図を丸々写したのでマニュアルなんか見ていない。