ฉันมีบอร์ด Arduino ATMega328 ที่กำหนดเองซึ่งโดยทั่วไปทำงานที่ 5V @ 8MHz (ใช้โปรไฟล์ Arduino Pro 3.3V 8MHz และ bootloader) เหตุผลหลักที่ฉันใช้การตั้งค่านี้คือเพื่อให้ฉันสามารถวางบอร์ดเข้าสู่โหมดสลีปเมื่อไฟหลักถูกตัดการเชื่อมต่อและเริ่มทำงานโดยใช้พลังงานจากแบตเตอรี่ (3V จากเซลล์เหรียญ) แหล่งจ่ายไฟ 5V และ 3V เป็นไดโอด OR'ed เข้าด้วยกันและอินพุต 5V เชื่อมโยงกับ INT0 ในโค้ดเมื่อตรวจพบว่า INT0 ต่ำลงมันจะเริ่มต้นโหมดสลีปและทุกอย่างจะปิดตัวลงยกเว้นตัวจับเวลาจ้องจับผิดที่เก็บรอบ 1Hz เพื่อรักษาจำนวนภายในและตรวจสอบว่าชิปควรจะสำรองไว้ นี้ทำงานได้อย่างสวยงามเมื่อ 5V พลังงานถูกนำไปใช้ก่อนแล้วแบตเตอรี่จะถูกแทรกแล้ว5V ถูกตัดการเชื่อมต่อ มันเข้าสู่โหมดสลีปและเมื่อ 5V ถูกนำกลับมามันจะทำงานขึ้นและฉันจะเห็นว่ามันไม่ได้หายไปไหน
แต่ปัญหามาเมื่อ 3V ถูกนำมาใช้เป็นครั้งแรก ฉันไม่แน่ใจว่ามันเป็นบูทจริงหรือเปล่า แต่สิ่งที่ควรทำคือบู๊ตตรวจสอบว่า INT0 (Digital 2) ต่ำหรือไม่ถ้าใช่ให้เข้าสู่โหมดสลีป จากการดูการจับฉลากปัจจุบันฉันเห็นว่ามันให้พลังงานสูงถึงไม่กี่ mA เป็นเวลาสองสามวินาทีจากนั้นลดลงเหลือประมาณ 0.3mA (ยังคงสูงกว่าที่ควรจะเป็นในโหมดสลีป) แต่เมื่อผมสมัครใหม่ 5V, ไม่มีอะไร กำลังดึงกลับขึ้น แต่มันไม่ตอบสนอง (ผ่าน FTDI อนุกรม)
อาจมีบางอย่างที่ฉันขาดไปว่ามันไม่สามารถบู๊ตได้ใน 3V ... ตามทฤษฎีแล้วมันน่าจะใช้ได้ดี
อัปเดต:ฉันลด LED ไปที่ D13 และลองร่างภาพกะพริบ ทำงานได้ดีเมื่อเริ่มต้นจาก 3V หรือ 5V อย่างไรก็ตามเมื่อฉันเรียกใช้เฟิร์มแวร์ของฉันและเริ่มต้นจาก 3V LED ก็เริ่มกระพริบอย่างดุเดือด ฉันไม่รู้ว่าเกิดอะไรขึ้นเพราะฉันไม่เคยติดตั้ง D13 เป็นอะไรในรหัสของฉัน แต่มันทำให้ฉันเป็นสิ่งที่เกี่ยวข้องกับ bootloader ...