attiny85-headlight-toggle

除錯紀錄

製作過程中實際遇到的問題,照遇到的順序整理。

通電後偶爾開機失敗

症狀:通電後遠燈、近燈都不亮,狀態燈沒反應。斷電時狀態燈反而會閃一下。把晶片從 IC 座拔起來再插回去才會恢復。兩顆晶片都會,只是頻率不同。

量測:卡住時 IC 座第 8 腳對第 4 腳 4.98V、第 1 腳(RESET)4.98V、晶片不熱。所以不是閉鎖(latch-up),也不是 RESET 被拉低。

原因:晶片內建的掉電偵測(BOD)把它卡在重置狀態。

  1. 原本唯一的 104 焊在 7805 旁邊,離晶片有一段細線。通電瞬間(尤其用鱷魚夾接電,會反覆接觸彈跳)的電壓抖動到了晶片腳上沒有被濾掉,三用電錶量不到,但 BOD 看得到。
  2. 斷電後晶片一重置就幾乎不耗電,1000µF 的電放得很慢,電壓會在 1~3V 停很久。這時再通電,晶片不一定能乾淨地重置。
  3. BOD 4.3V 檔位每顆晶片的實際門檻不同,門檻偏高的那顆比較容易卡住(改成 2.7V 就正常,一度被誤判為瑕疵品)。

解法:

加上之後兩顆晶片都正常,斷電時也不會再閃。

斷電時狀態燈閃一下

電容放電慢,電壓經過 BOD 門檻時晶片被重置、耗電變小,電壓又彈回門檻以上,晶片短暫重開機跑出開機閃燈。加了 R14 之後放電很快,就不會發生。

遠燈永遠不亮

原型板焊接面有一條 U 形的線,同時接到遠燈 SS8050 的射極和基極,再接到地線,基極被直接接地。剪掉基極那段多出來的線就好。焊接時要注意 SS8050 中間腳(基極)不能碰到地線。

確認方法:電錶切電阻檔,紅棒接地、黑棒接 SS8050 中間腳,應該約 10kΩ(R5);量到 0 就是短路。

麵包板上一通電就快閃 5 下

第 2 腳(PB3)浮接,讀到的電壓亂飄,被當成遠燈開了超過 2 秒。測試時第 2 腳要經 10k 接地。

麵包板測切換,撥回去不會切換

確認時間只有 0.8 秒(快閃那 5 下),在麵包板上換線太慢。改成「第 2 腳經 10k 接地,另一條線從 5V 碰第 2 腳,看到快閃就拿開」,或暫時把 CONFIRM_MS 改成 3000 測試。

晶片反應慢 8 倍

只上傳了程式,沒有做「燒錄 Bootloader」,晶片還在出廠的 1MHz。按住遠燈要 16 秒才提示,開機閃燈變成亮 1.2 秒。插上 JP3 補做「燒錄 Bootloader」。

IC 座接觸不良

換晶片後開機不穩,重插就好。機車會震動,建議:

燒錄相關

訊息 原因 解法
開發板管理員搜尋不到 ATTinyCore drazzy.com 憑證過期 改用 GitHub 備用網址,見 燒錄說明
Failed to install platform ... 13 INTERNAL micronucleus 工具下載失敗 手動安裝 ATTinyCore
unknown token / syntax error(avrdude.conf) ATTinyCore 1.5.2 的設定檔太舊,avrdude 8 讀不懂 換成 avrdude 8 的 avrdude.conf
cannot open USB device: Permission denied 驅動不合 Zadig 改裝 libusbK
cannot set sck period USBasp 韌體舊 忽略;用 JP3 降速
target doesn't answer / initialization failed 接線錯,或晶片在 1MHz 卻沒降速 檢查六條線、短接 JP3