Floppy Emuが起動しない謎、犯人はクリスタルだった

Adventures in Microcontroller Circuit Debugging

Floppy Emuが起動しない謎、犯人はクリスタルだった

Floppy Emuの新ロットで、起動しない・幽霊のような動作・極端に遅いといった不可解なQA不良が多発。電源やチップを疑って交換しても改善せず、LEDを点滅させる原始的なデバッグでも反応なし。最後に内蔵8MHzオシレータへ切り替えると起動したことから、外部20MHzクリスタルの不具合が判明する。

はい、私は持てるハードウェアツールをすべて使って、LEDを点滅させる原始的なデバッグに逆戻りしていた。
  1. kosma

    量産ロットでも同じことが起きたよ。ただし、クリスタルは同じメーカーで同じ型番、ただロットが違うだけだった。原因を突き止めるのは楽しかったね。

  2. in_absentia

    著者の言う通りなのかどうか気になる。クロック用に少しだけ値の違うコンデンサを使うと(工場出荷時点で通常±10%かそれ以上あることを念頭に置いても)、発振速度が変わることはあっても、普通は完全に動かなくなることはない。これらのチップはかなり広い範囲のクロック周波数を受け付ける。

    そしてコメント欄で著者はこう書いている:

    「動かないボードの1つで18pFのコンデンサを10pFに交換したが、それでも起動しないしデバッガにも応答しない。これは驚いたよ——これが答えだと思っていたのに!急ぎのリワーク作業で少し失敗してしまい、誤ってクリスタルを外して付け直したりもしたので、後で別のボードで再挑戦するつもりだ。しかし結局、コンデンサの値は問題ではなかったようだ。10pFが悪い値なのか、クリスタル自体が原因なのか、あるいは私のトラブルシューティングの推論のどこかが間違っているのか。うーん」

    私の経験では、原因不明の安定性問題はしばしばコンデンサが原因だが、種類が違う。電源ピンのデカップリングコンデンサだ。モーターやデジタルスイッチングから生じるノイズに追いつくだけの数がなければ、まさにそういう問題が起きるだろう。一部のボードで断続的に「ありえない」CPU状態になるが、規則性も理由もない(時にはその±10%が救いになり、時にはならないからだ)。もっとコンデンサを増やし、フェライトビーズもいくつか試してみるだろうね。

  3. mrlambchop

    電気エンジニアではないが、2文読んだところで心の中で「これは外部クロック源だ」と確信し、そして過去に携わったプロジェクトで、契約製造業者が古びたクリスタルやサードパーティの部品ソースを使い、それに見合うコンデンサを更新しなかったために、非常によく似た問題が何度も起きたことを思い出して、身体が震えた。最も最悪なのは経年劣化したクリスタルだ——暖かい風が吹くだけで、いつまで動くかわからない状態になる。工場が26℃前後で暖かく稼働していて、そのロットを初期の冬を迎えるヨーロッパに出荷してしまったら、もう大変だ…

この日のほかの記事

2026-09-19