- ฟิวส์ใน AVR คืออะไร - คำอธิบายโดยละเอียด
- Fuse Bits ใน Arduino
- ส่วนประกอบที่จำเป็นในการทดสอบฟิวส์ใน AVR
- แผนผังสำหรับการทดสอบ Fuse Bits ใน AVR
- การทดสอบฟิวส์ใน AVR
ในบทช่วยสอนนี้เราจะพูดถึงฟิวส์ ย้อนกลับไปตอนที่ฉันอยู่ในวิทยาลัยและเรียนรู้เกี่ยวกับสิ่งดีๆในอุปกรณ์อิเล็กทรอนิกส์ฉันได้ยินคำว่าฟิวส์ใน AVR เป็นครั้งแรกความคิดแรกของฉันในหัวข้อนี้คือโอ้! มีบางอย่างใน AVR ที่จะระเบิดถ้าฉันทำอะไรผิดพลาด ในตอนนั้นมีทรัพยากรบนอินเทอร์เน็ตไม่มากนัก ผมค้นหาไม่น้อยที่พบว่าฟิวส์เหล่านี้เรียกว่าบางบิตพิเศษภายในไมโครคอนโทรลเลอร์ตระกูล AVRบิตเหล่านี้เปรียบเสมือนสวิตช์เล็ก ๆ ภายใน AVR และเมื่อเปิด / ปิดเราสามารถเปิด / ปิดคุณสมบัติพิเศษบางอย่างของ AVR ได้ การเปิดและปิดหมายถึงการตั้งค่าและการรีเซ็ต
เราจะใช้โอกาสนี้เพื่อหารือเกี่ยวกับทั้งหมดที่มีเกี่ยวกับบิตน้องฟิวส์ใน AVR สำหรับความเรียบง่ายเราจะนำตัวอย่างของบอร์ด Arduino ที่บ้านได้รับความนิยมATmega328P ไมโครคอนโทรลเลอร์ ที่นี่คุณจะได้เรียนรู้วิธีตั้งค่าฟิวส์เหล่านี้สำหรับการเปิดและปิดคุณสมบัติบางอย่างซึ่งมีประโยชน์อย่างมากในการใช้งานในชีวิตจริง ดังนั้นเรามาดูกันดีกว่า
ในโพสต์ก่อนหน้านี้เราได้สร้างโครงการไมโครคอนโทรลเลอร์ AVR จำนวนมากเช่นโมดูล Interfacing GSM กับไมโครคอนโทรลเลอร์ AVR และการเชื่อมต่อ HC-05 กับไมโครคอนโทรลเลอร์ AVR คุณสามารถตรวจสอบได้หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโครงการเหล่านั้น
ฟิวส์ใน AVR คืออะไร - คำอธิบายโดยละเอียด
ดังที่เราได้กล่าวไปก่อนหน้านี้ฟิวส์ในไมโครคอนโทรลเลอร์เป็นเหมือนสวิตช์เล็ก ๆ ที่สามารถเปิดและปิดเพื่อเปิดและปิดใช้งานคุณสมบัติต่างๆในไมโครคอนโทรลเลอร์ AVR นี่คือส่วนที่เกิดคำถามต่อไปเราจะตั้งหรือรีเซ็ตฟิวส์เหล่านี้ได้อย่างไร? คำตอบสำหรับคำถามนี้เป็นเรื่องง่าย: เราทำมันด้วยความช่วยเหลือของการลงทะเบียนฟิวส์
ใน ATmega328P IC มีฟิวส์ทั้งหมด 19 บิตและแบ่งออกเป็นสามไบต์ของฟิวส์ สิ่งเหล่านี้ถูกกำหนดให้เป็น"Extended Fuse Bytes", "High Fuse Byte"และ"Low Fuse Byte"
หากคุณดูตาราง -27 ของแผ่นข้อมูล ATmega328 / P Rev: 7810D – AVR – 01/15 คุณจะพบรายละเอียดเล็กน้อยทั้งหมดเกี่ยวกับบิตของฟิวส์ แต่ภาพด้านล่างนี้จะช่วยให้คุณมีความคิดที่ดีขึ้นเกี่ยวกับส่วนบิตฟิวส์ของแผ่นข้อมูล
เมื่อคุณได้เรียนรู้เล็กน้อยเกี่ยวกับบิตของฟิวส์แล้วเรามาดูแผ่นข้อมูลและค้นหารายละเอียดที่จำเป็นทั้งหมดเกี่ยวกับ IC นี้
บิตฟิวส์ขยาย:
เมื่อคุณคลิกที่แท็บ Fuse Bits และเลื่อนลงมาเล็กน้อยคุณจะพบตารางที่ 27-5: ซึ่งแสดงตารางสำหรับ"Extended Fuse Byte" ที่เรียกกันทั่วไปว่า " EFUSE" ภาพด้านล่างแสดงให้เห็นว่า
ในตารางนี้มีบิตที่ใช้งานได้เพียงสามบิตและอีกสามบิตถูกสงวนไว้ ทั้งสามบิตจัดการกับระดับ Brownout การตรวจสอบ ดังที่คุณเห็นในหมายเหตุหากเราดูตารางที่ 28-5 เราสามารถหารายละเอียดเพิ่มเติมได้
ที่คุณสามารถดูในตารางข้างต้นเรามีตารางสำหรับBrownout การตรวจสอบ การตรวจจับ Brownout เป็นคุณสมบัติที่รีเซ็ตไมโครคอนโทรลเลอร์เมื่อแรงดันไฟฟ้าลดลงต่ำกว่าระดับแรงดันไฟฟ้าที่กำหนด ใน ATmega328P IC เราสามารถปิดใช้งานการตรวจจับการปิดหน้าจอโดยสมบูรณ์หรือเราสามารถตั้งค่าเป็นระดับที่แสดงในตารางด้านบน
ไบต์ฟิวส์สูง:
ดังที่คุณเห็นในภาพด้านล่างตารางที่ 27-6: ของแผ่นข้อมูลแสดงบิตฟิวส์ที่สูงขึ้นของ ATmega328P IC
ฟิวส์สูงจัดการกับงานต่างๆภายใน ATmega328 ไมโครคอนโทรลเลอร์ ในส่วนนี้เราจะพูดถึงบิตฟิวส์ที่สูงขึ้นและการทำงานของมัน เริ่มต้นด้วยบิต BOOTRST, BOOTSZ0 และ BOOTSZ1 ทั้งสามบิตมีความรับผิดชอบในการตั้งค่าขนาดบูต; ขนาดบูตหมายถึงจำนวนหน่วยความจำที่สงวนไว้สำหรับติดตั้งbootloader
bootloader เป็นซอฟต์แวร์พิเศษที่ทำงานบนไมโครคอนโทรลเลอร์และจัดการงานต่างๆ แต่ในกรณีของ Arduino นั้น bootloader จะใช้ในการอัพโหลดร่าง Arduino ภายในไมโครคอนโทรลเลอร์ ในบทความก่อนหน้านี้เราได้แสดงวิธีเบิร์น Bootloader ใน ATmega328P โดยใช้ Arduino คุณสามารถตรวจสอบได้หากคุณสนใจในหัวข้อนี้ กลับมาที่หัวข้อของเราจุดประสงค์ของบิตอื่น ๆ ในไบต์สูงนั้นชัดเจนพอสมควรบิต EESAVE คือการเก็บรักษาหน่วยความจำ EEPROM ในขณะที่ดำเนินการตามรอบการลบชิป บิต WDTON คือการเปิดหรือปิดการจับเวลา Watchdog
นาฬิกาจับเวลาแบบ watchdog เป็นตัวจับเวลาพิเศษใน ATmega328P IC ซึ่งมีนาฬิกาแยกต่างหากและทำงานอย่างอิสระ หากเปิดใช้งานตัวจับเวลาจ้องจับผิดคุณจะต้องล้างด้วยช่วงเวลาหนึ่งมิฉะนั้นตัวจับเวลาเฝ้าระวังจะรีเซ็ตไมโครคอนโทรลเลอร์ นี่เป็นคุณสมบัติที่มีประโยชน์ที่มาพร้อมกับไมโครคอนโทรลเลอร์จำนวนมากหากโปรเซสเซอร์ติดขัด สุนัขเฝ้าบ้านจะรีเซ็ตเพื่อป้องกันความเสียหายใด ๆ กับแอปพลิเคชันสุดท้าย
บิต DWEN จะมีการเปิดใช้งานสายตรวจแก้จุดบกพร่อง; นี่คือโปรโตคอลเตรียมการที่สร้างขึ้นภายในฮาร์ดแวร์ซึ่งใช้ในการเขียนโปรแกรมและดีบักโปรเซสเซอร์ เมื่อเปิดใช้งานคุณสมบัตินี้คุณสามารถแฟลชและดีบักโปรเซสเซอร์ได้ด้วยการต่อสายไฟเส้นเดียว แต่ในการใช้งานคุณจะต้องมีฮาร์ดแวร์พิเศษที่เตรียมไว้สำหรับ Atmel
อีกสองบิตที่เหลือคือบิตที่คุณต้องหลีกเลี่ยงเว้นแต่คุณจะรู้แน่ชัดว่าคุณกำลังทำอะไรอยู่ นี่คือ RSTDISBL bit-7 และ SPIEN bit-5 RSTDISBL (External Reset Disable) เป็นชื่อที่แสดงถึงปิดใช้งานพินรีเซ็ตฮาร์ดแวร์ภายนอกและใช้บิต SPIEN เพื่อปิดใช้งานอินเทอร์เฟซการเขียนโปรแกรม SPI การปิดใช้งานสองบิตใด ๆ เหล่านี้สามารถทำให้ AVR ของคุณสมบูรณ์ ดังนั้นการปล่อยให้พวกเขาอยู่คนเดียวจึงเป็นความคิดที่ดี
ไบต์ฟิวส์ต่ำ:
ดังที่คุณเห็นในภาพด้านล่างตารางที่ 27-7: ของแผ่นข้อมูลแสดงบิตฟิวส์ล่างของ ATmega328P IC
ไบต์ฟิวส์นี้ทำหน้าที่ในการตั้งค่าแหล่งสัญญาณนาฬิกาและพารามิเตอร์อื่น ๆ ของนาฬิกาภายใน AVR ในส่วนนี้เราจะเรียนรู้ทั้งหมดนั้น
บิตที่ 7 หรือแฟล็ก CKDIV8 สามารถตั้งค่าให้หารแหล่งสัญญาณนาฬิกาด้วย 8 สิ่งนี้มีประโยชน์มากซึ่งคุณอาจรู้อยู่แล้วหากคุณได้ลองเขียนโปรแกรม AVR ด้วยตัวเอง บิตถัดไปคือบิต CKOUT และเป็นบิตที่ 6 ใน Low Fuse Byte การเขียนโปรแกรมจะส่งออกสัญญาณนาฬิกาภายในบน PORTB0 ของไมโครคอนโทรลเลอร์
บิต -5 และบิต -4 SUT1 และ SUT0 ควบคุมเวลาเริ่มต้นของไมโครคอนโทรลเลอร์ สิ่งนี้จะป้องกันการดำเนินการเริ่มต้นใด ๆ ซึ่งอาจเกิดขึ้นหรือไม่เกิดขึ้นก่อนที่แรงดันไฟฟ้าจะถึงระดับแรงดันไฟฟ้าเกณฑ์ขั้นต่ำที่ยอมรับได้ และสี่ CKSEL0 - 4 บิตสุดท้ายใช้เพื่อเลือกแหล่งสัญญาณนาฬิกาของไมโครคอนโทรลเลอร์ ตารางที่แสดงด้านล่างช่วยให้คุณเข้าใจมากขึ้นเกี่ยวกับสี่บิตเหล่านี้ซึ่งมีหน้าที่ในการตั้งค่าแหล่งสัญญาณนาฬิกาคุณสามารถค้นหาตารางนี้ได้ในส่วนแหล่งสัญญาณนาฬิกาของแผ่นข้อมูล
ตอนนี้ก่อนที่เราจะไปไกลกว่านั้นมีอีกสิ่งหนึ่งที่ฉันควรทำคือตารางสำหรับการหน่วงเวลาเริ่มต้นออสซิลเลเตอร์ โดยการหน่วงเวลาเริ่มต้นเราหมายถึงบิต 4 และ 5 ของไบต์ฟิวส์ที่ต่ำกว่า ต้องตั้งค่าความล่าช้าขึ้นอยู่กับเงื่อนไขที่วงจรจะทำงานและประเภทของออสซิลเลเตอร์ที่คุณใช้ ค่าดีฟอลต์ถูกกำหนดให้กำลังเพิ่มขึ้นอย่างช้าๆโดยมี 6 รอบนาฬิกาเมื่อดำเนินการตามลำดับการเปิดเครื่องหรือการปิดเครื่อง ถัดไปมีการหน่วงเวลาอีก 14 รอบนาฬิกาโดยมีการหน่วงเวลา 65 Ms หลังจากเริ่มต้นระบบ
วุ้ย นั่นเป็นข้อมูลมากมายที่จะย่อย แต่ก่อนที่จะดำเนินการต่อไปขอจบส่วนนี้ด้วยบันทึกย่อ
บันทึก:
หากคุณดูแผ่นข้อมูลอย่างละเอียดคุณต้องสังเกตว่าการเขียนโปรแกรมบิตฟิวส์หมายถึงการตั้งค่าให้ต่ำนั่นคือ 0 (ศูนย์) ซึ่งตรงข้ามกับสิ่งที่เราทำโดยทั่วไปในการทำให้พอร์ตสูงหรือต่ำ คุณต้องจำไว้ในขณะที่กำหนดค่าฟิวส์ของคุณ
Fuse Bits ใน Arduino
เราได้พูดคุยเกี่ยวกับฟิวส์ในส่วนด้านบนไปแล้ว แต่ในส่วนนี้เราจะมาพูดถึงวิธีกำหนดค่าและวิธีการเขียนในไมโครคอนโทรลเลอร์ สำหรับสิ่งนั้นเราจะต้องมีเครื่องมือที่เรียกว่าAvrdude เป็นเครื่องมือที่สามารถใช้ในการอ่านเขียนและแก้ไขหน่วยความจำในไมโครคอนโทรลเลอร์ AVR ทำงานร่วมกับ SPI และมีรายการสนับสนุนมากมายสำหรับโปรแกรมเมอร์ประเภทต่างๆ คุณสามารถดาวน์โหลดเครื่องมือได้จากลิงค์ด้านล่าง นอกจากนี้เราจะใช้ Arduino ไมโครคอนโทรลเลอร์ตัวโปรดของเรา
- ดาวน์โหลด Avrdude เวอร์ชัน 6.3 Windows-ming32.2
ตอนนี้คุณมี Avrdude แล้วคุณต้องแตกไฟล์นั้นและเปิดหน้าต่างคำสั่งในโฟลเดอร์นั้น นอกจากนี้หากคุณวางแผนที่จะใช้ในภายหลังคุณสามารถเพิ่มเส้นทางโฟลเดอร์ในส่วนตัวแปรสภาพแวดล้อม windows ของคุณได้ แต่ฉันจะวางไว้บนเดสก์ท็อปและเปิดหน้าต่างคำสั่งที่นั่น เมื่อเราทำเสร็จแล้วเราจะเชื่อมต่อโปรแกรมเมอร์ USBaspกับพีซีของเราและเราจะตรวจสอบให้แน่ใจว่าเรามีไดรเวอร์ที่เหมาะสมสำหรับโปรแกรมเมอร์ USBasp ของเรา เมื่อเราทำเช่นนั้นเราก็พร้อมและเราจะอ่านค่าฟิวส์เริ่มต้นก่อน ในการทำเช่นนั้นคุณต้องรันคำสั่งต่อไปนี้
avrdude.exe -c usbasp -p m328p -U lfuse: r: low_fuse_val.txt: h -U hfuse: r: high_fuse_val.txt: h -U efuse: r: ext_fuse_val.txt: h
หากทุกอย่างถูกต้องคำสั่งนี้จะอ่านฟิวส์ไบต์และใส่ลงในไฟล์ข้อความสามไฟล์แยกกัน ภาพด้านล่างจะช่วยให้คุณเข้าใจกระบวนการได้ดีขึ้น
อย่างที่คุณเห็น Avrdude อ่านฟิวส์บิตบน Arduino nano และบันทึกเป็นไฟล์ข้อความสามไฟล์แยกกัน ตอนนี้เราเปิดมันและมีค่าสามค่า สำหรับEFUSE: 0xFDสำหรับHFUSE: 0XDAสำหรับLFUSE: 0xFF นี่คือค่าฟิวส์เริ่มต้นที่เราได้รับสำหรับ Arduino nano ตอนนี้เรามาแปลงบิตเหล่านี้เป็นไบนารีและเปรียบเทียบกับค่าเริ่มต้นจากแผ่นข้อมูล ตารางด้านล่างแสดงให้เห็นว่า
เพื่อความสะดวกบิตฟิวส์จะถูกเขียนด้วยค่าฐานสิบหก แต่ถ้าเราแปลงเป็นค่าไบนารีและเปรียบเทียบกับแผ่นข้อมูลเราจะรู้ว่าเกิดอะไรขึ้น เริ่มจากฟิวส์ไบต์ล่าง ดังที่คุณเห็นจากสตริงด้านบนมันถูกตั้งค่าเป็น0XFFและค่าไบนารีจะเป็น0B11111111
เปรียบเทียบสต็อกที่ต่ำกว่าฟิวส์ไบต์กับ Arduino:
ไบต์ฟิวส์ต่ำ |
หมายเลขบิต |
ค่าเริ่มต้นใน AVR |
ค่าเริ่มต้นของ Arduino |
CKDIV8 |
7 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
CKOUT |
6 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
มท. 1 |
5 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
มท. 0 |
4 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
CKSEL3 |
3 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
CKSEL2 |
2 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
CKSEL1 |
1 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
CKSEL0 |
0 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
ไบต์ฟิวส์ที่สูงกว่าถูกตั้งค่าเป็น0XDAในไบนารีนั่นคือ0B11011010
ไบต์ฟิวส์ที่สูงขึ้นในไบนารี:
ไบต์ฟิวส์สูง |
หมายเลขบิต |
ค่าเริ่มต้นใน AVR |
ค่าเริ่มต้นของ Arduino |
RSTDISBL |
7 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
DWEN |
6 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
SPIEN |
5 |
0 (โปรแกรม) |
0 (โปรแกรม) |
WDTON |
4 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
ประหยัด |
3 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
บูต |
2 |
0 (โปรแกรม) |
0 (โปรแกรม) |
บูต |
1 |
0 (โปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
BOOTRST |
0 |
1 (ไม่ได้ตั้งโปรแกรม) |
0 (โปรแกรม)) |
การตั้งค่าสำหรับ Extended Fuse Byte ถูกตั้งค่าเป็น 0XFD ในไบนารีคือ0B11111101
ขยายฟิวส์ไบต์ในไบนารี:
ขยายฟิวส์ไบต์ |
หมายเลขบิต |
ค่าเริ่มต้นใน AVR |
ค่าเริ่มต้นของ Arduino |
- |
7 |
1 |
1 |
- |
6 |
1 |
1 |
- |
5 |
1 |
1 |
- |
4 |
1 |
1 |
- |
3 |
1 |
1 |
BODLEVEL2 |
2 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
BODLEVEL1 |
1 |
1 (ไม่ได้ตั้งโปรแกรม) |
0 (โปรแกรม) |
BODLEVEL0 |
0 |
1 (ไม่ได้ตั้งโปรแกรม) |
1 (ไม่ได้ตั้งโปรแกรม) |
ตอนนี้นี่คือจุดสิ้นสุดของส่วนนี้ ณ ตอนนี้เราได้เรียนรู้มากมายเกี่ยวกับไมโครคอนโทรลเลอร์ AVR และฟิวส์บิต ดังนั้นเรามาสรุปบทความนี้โดยนำทฤษฎีของเราไปทดสอบโดยการแก้ไขและทดลองกับฟิวส์บิตใน Arduino Nano
ส่วนประกอบที่จำเป็นในการทดสอบฟิวส์ใน AVR
เราได้พูดคุยมากมายเกี่ยวกับฟิวส์ในส่วนข้างต้น แต่ในการดำเนินการเพิ่มเติมในบทความเราจำเป็นต้องมีส่วนประกอบฮาร์ดแวร์และเครื่องมือซอฟต์แวร์บางอย่าง ในส่วนนี้เราจะพูดถึงสิ่งเหล่านั้น รายการส่วนประกอบที่จำเป็นพร้อมรูปภาพแสดงอยู่ด้านล่าง
- เขียงหั่นขนม - 1
- Arduino นาโน - 1
- โปรแกรมเมอร์ USBasp AVR - 1
- สาย USB - 1
- AVR 10-Pin ถึง 6- Pin Converter - 1
- Avrdude (เครื่องมือซอฟต์แวร์สำหรับการเขียนโปรแกรม AVR)
- LED - 1
- ตัวต้านทาน 330R - 1
- สายจัมเปอร์
แผนผังสำหรับการทดสอบ Fuse Bits ใน AVR
การตั้งค่าการทดสอบฮาร์ดแวร์แสดงอยู่ด้านล่างในการตั้งค่านี้ เราได้เชื่อมต่อ Arduino Nano กับพีซีด้วยสาย USB และเราได้เชื่อมต่อโปรแกรมเมอร์ USBasp เข้ากับพีซีด้วย บทความนี้มีวัตถุประสงค์เพื่อตั้งโปรแกรมฟิวส์บิตใน AVR ด้วยเหตุนี้เราจึงเชื่อมต่อโปรแกรมเมอร์ USBasp กับ Arduino ภาพด้านล่างจะช่วยให้คุณมีแนวคิดที่ดีขึ้นในการตั้งค่า
การทดสอบฟิวส์ใน AVR
การตั้งค่าการทดสอบแสดงอยู่ด้านล่าง อย่างที่คุณเห็นเราได้เชื่อมต่อ Arduino และโปรแกรมเมอร์ USBasp กับ USB ของแล็ปท็อปของฉันแล้ว
ตอนนี้ให้เปิด Arduino IDE และอัปโหลดร่างกะพริบพื้นฐาน เนื้อหาของภาพร่างการกะพริบเบื้องต้นอธิบายได้ในตัวเองดังนั้นฉันจึงไม่ได้ใส่รายละเอียดใด ๆ
คุณจะเห็นในวิดีโอว่าไฟ led ที่ขาหมายเลข 13 กะพริบตามที่ควรจะเป็น ตอนนี้เรามาปรับแต่งการตั้งค่าฟิวส์และตั้งเป็นค่าเริ่มต้น และอย่างที่เราได้เห็นก่อนหน้านี้ในแผ่นข้อมูล EFUSE เป็น 0xFF; HFUSE คือ D9; LFUSE คือ: 62 ตอนนี้ให้กำหนดค่าด้วย Avrdude แฟลชและดูว่าเกิดอะไรขึ้น รหัสที่เราจะใช้คือ -
avrdude -c usbasp -p m328P -U lfuse: w: 0x62: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
เมื่อฉันทำสิ่งนี้คุณจะเห็นว่า LED จะกะพริบช้ามากเพราะเราได้คำนวณและตั้งโปรแกรมค่าสำหรับนาฬิกา 16Mhz และตอนนี้หลังจากเผาฟิวส์แล้วมันเป็นเพียงออสซิลเลเตอร์ RC ภายใน 1Mhz นี่คือสาเหตุที่ไฟ LED กะพริบช้ามาก ตอนนี้เรามาลองอัปโหลดร่างอีกครั้ง เราจะเห็นว่า Arduino แจ้งข้อผิดพลาดและไม่ได้อัปโหลดรหัส เนื่องจากการเปลี่ยนฟิวส์ทำให้การตั้งค่า bootloader ยุ่งเหยิงไปด้วย คุณสามารถดูได้จากภาพด้านล่าง
ในการแก้ไขปัญหานี้และเพื่อให้ Arduino กลับมาเหมือนเดิมเราต้องเบิร์น bootloader อีกครั้งสำหรับ Arduino ในการทำเช่นนั้นไปที่ Tools -> Programmer- USBasp และเมื่อเราทำเช่นนั้นเราสามารถไปที่เครื่องมืออีกครั้งและเราสามารถคลิกที่ตัวเลือกเบิร์น bootloader สิ่งนี้จะเบิร์น bootloader สต็อคบน Arduino ของคุณอีกครั้งและทุกอย่างจะกลับไปเป็นเหมือนเดิม
หลังจากที่ bootloader ถูกแฟลชกลับไปที่ Arduino มันจะกลับสู่สถานะเดิมและภาพสุดท้ายจะแสดง LED กะพริบหลังจากที่ bootloader ถูกเบิร์นอีกครั้ง
และนี่คือจุดสิ้นสุดของบทความนี้ ฉันหวังว่าคุณจะสนุกกับบทความนี้และเรียนรู้สิ่งใหม่ ๆ หากคุณมีคำถามใด ๆ เกี่ยวกับบทความนี้อย่าลังเลที่จะแสดงความคิดเห็นด้านล่าง