
2026/09/18 4:00
マイクロコントローラー回路のデバッグへの冒険
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
新規製造された Floppy Emu ディスクエミュレーターの一批が品質保証検査に失敗し、起動不能、「幽霊的」な振る舞い(ランダムなコードセクションへジャンプ)、およびスローモーション動作という 3 つの主要症状を呈しました。調査の結果、これらのユニットは共通の製造欠陥を持っており、新しい下請け業者が NDK クロック結晶を類似の ECS パーツで置き換え、かつ規定の約 8pF の値ではなく誤った 18pF のコンデンサを装着していることが判明しました。診断手順により、電源供給は安定しており、ATMEGA1284 マイクロコントローラーが正常にプログラミングされていること、および良品チップへの交換では問題が解決しないことを確認しました。さらにテストでは、故障した外部結晶からのクロックソースを内部発振器へ切り換えることでデバイスの起動が可能となり(低速動作)、外部回路がコンデンサの不一致により本質的に不安定であることが証明されました。また、ファームウェアのフューズ変更による是正を試みた結果、デバッグ通信を無効化してデバイスを永続的にブリークするリスクがあることも判明しました。決定的な解決策は、板を物理的に修正し、18pF のコンデンサを正しい値(例えば 8pF または 10pF)のものに交換することですが、これは新しいテスト部品待ちの状態です。このインシデントからは重要な品質管理の教訓が得られます:オシレーター要件に対する規格が厳密に適合していない場合、ごく少量の部品置き換えでもシステム全体の故障を引き起こす可能性があります。
本文
Floppy Emu の不具合解析:外部クロッククリスタル回路の疑点
問題の概要
数か月前に製造された新しいロットの Floppy Emu において、工場内での品質検査(QA)で多数の不合格事例が発生しました。開発経験上見たことがない以下の異常症状が確認されました。
- 起動不能: 電源と MCU プログラムは正常なのに、単に起動しない状態。
- 「幽霊現象」: MC ップのランダムなアドレスへジャンプしたり、無意味なメッセージを表示したりする乱暴な動作。
- スローモーション化: LED の点滅やディスプレイ更新が著しく鈍慢になる。
これらはすべて ATMEGA1284 マイクロコントローラーおよび回路構成に関する既知の症状とは異なり、契約製造元での下請け変更によるプロセス変化、部品置き換え、あるいは不良部品の混入が疑われました。
探査と仮説構築
「起動しない」デバイスを優先的に調査しました。以下の手順を行いました。
-
初期診断
- 試験用ハネスへの取り付けおよび電源・ハードウェアデバッガ接続。
- 電源電圧は正常、ハンダ付けの目立った不良なし(念のため再フロー実施)。
- 結果: 何ら改善は見られず。
-
状況確認
- デバッガとの通信は可能で、チップ構成・プログラム内容は正しいことが確認できるが、プログラム実行自体は観測できない。
- 一部の基板では、デバッガ自体もチップを検出できず通信不能。
-
原因候補の検討 (ブレインストーミング)
- 電力供給不良(測定結果で否定)。
- チップの誤プログラム(再プログラミングで改善せず)。
- チップ自体の不良。
- リセット状態への固定。
- クロック問題。
- サブシステム(SD カード、CPLD など)による電気的故障やプログラムクラッシュ。
-
チップ交換実験
- 最も可能性が高いと判断した「不良なチップロット」説を検証。
- 基板から ATMEGA1284 をハンダ取りし、新品に交換。
- 結果: 起動不能の症状は改善せず。チップ自体の問題ではないことが確定。
クロッククリスタルに関する発見と考察
マイクロコントローラーが正常な電源・チップ環境下で動作しない場合、残された可能性は リセット信号と クロック の二つに限られました。ここで焦点が外部クロック回路上に移りました。
実験結果:内部オシレーターへの切り替え
- チップのフュース設定を変更し、外部クリスタルから内部 8MHz オシレーターへクロック源を強制変更。
- 結果: デバイスは起動し正常に動作するが、通常速度の 40% まで減速。
- 同様の現象がデバッガ通信可能な他の基板でも確認され、外部クリスタル回路に深刻な不具合があることが示唆されました。
回路設計とコンデンサ値の不整合
問題の焦点は「ピアスオシレーター(Pierce Oscillator)」回路にあると考えられました。
-
回路構成: クリスタル端子をピンに短距離で接続し、外部コンデンサを追加する構造。
-
理論的な設計値:
- 公式: $C_{ext} = 2 \times (C_{load} - C_{stray})$
- $C_{load}$(クリスタルの負荷容量): 8pF
- $C_{stray}$(寄生容量の推定値): 4pF
- 計算結果: $2 \times (8 - 4) =$ 8pF の外部コンデンサを使用すべき。
-
実際の使用品:
- メーカー変更により、NDC クリスタルから類似の ECS クリスタルへ切り替えられていた。
- しかし、理論値である 8pF ではなく、18pF の外部コンデンサが実装されていた。
- この値は当初の設計仕様(霞んだ記憶)に基づくものであった。
不具合の原因分析
- ATMEGA ドライバアンプは広い容量範囲でも動作するが、回路は限界付近で稼働している可能性が高い。
- 18pF という不適切な値により、正常な ECS クリスタルとも相性が悪化し、回路を快適ゾーンから押し出して完全に止めてしまったのではないか。
- 内部オシレーターでも動作したことから、外部クリスタル自体の欠陥というよりは、容量設定とクリスタルの組み合わせによる共振問題である可能性が高い。
次のステップと結論
理論的な不整合が示唆されるが、決定的な証拠は得られていません。
- フュースバイト変更の試行: クロックドライバモードを「フルスイング」に変更した試みだったが、基板は起動せず「ブリック(石版)」化して失敗。
- 交換作業の必要性: 基板再ワークにより、外部コンデンサを正しく8pFに交換する必要がある。あるいは 10pF〜12pF 等の低容量品を使用する方法も検討される。
現在、適正なコンデンサの注文および検証実験を進めており、この謎の解決に向けた続報をご報告いたします。