Arduino MEGA328P

Started by tha, September 10, 2017, 10:04:41 AM

Previous topic - Next topic

tha

ได้บอร์ด ET-BASE AVR EASY32U4 คืนจากการส่งซ่อมมาแล้ว มาลองกับ AVR Studio 4.17 และ ET-AVR ISP mkII เลย โปรแกรมไฟกระพริบ พร้อมทั้งเซท Fuse Bit ไม่รู้ถูกต้องหรือเปล่า ยังไม่ค่อยแน่ใจ แต่ก็ทำงานได้ปกติแล้ว ไมรู้ bootloader ลบไปหรือเปล่า?อย่างนี้






tha

ลองใช้มืถือจับเวลาดูก็ตรงครับ พอเอา hex ไฟล์ bootloader ที่ทาง ETT ให้มาพร้อมกับบอร์ด โปรแกรมด้วย AVR Studio 4.17 กับ mkII ตั้ง fuse bit ตามที่ ETT ให้ข้อมูลมา บอร์ดก็กลับมาทำงานร่วมกับ arduino IDE ได้เหมือนเดิมครับ

นี้คือ fuse bit ที่ทาง ETT ให้มาครับ





ยังเป็นงงเรื่อง Fuse Bit  ???

tha

พอดียังไม่ได้กด program fuse bit พอกดโปรแกรมไปแล้ว ขึ้น Entering programming Mode FAILED! เหมือนเดิม บอร์ดเงียบสนิทไปเลย ไม่รู้แก้ตรงไหน  :'(
http://www.mediafire.com/file/n93n7gzc3dsyn6j/bootloader.rar
bootloader ของบอร์ด  ET-BASE AVR EASY32U4 ครับ


wlasoi

ไปที่ Auto ครับ ตั้งลำดับการทำงาน .. Fuse bit  จะเป็นขั้นตอนสุดท้าย ..

tha

บอร์ดเงียบไปแล้ว ไม่รู้เป็นไร คงต้องรอถามทาง ETT วันจันทร์

ดูแต่ data sheet ของ atmega328p ลืมดูของ 32u4 clock มันไม่เหมือนกันสักเท่าไหร่เพราะ 32u4 มันมี usb ด้วย

tha

พอจะทราบสาเหตุของการเสียแล้วครับ น่าจะมาจาก clock selected มันไม่ต้องกลับบิทครับ ถ้าเราเลือกเป็น Low Power Crystal Oscillator บิท CKSEL[3:1] = 111, ก็ใส่ให้ตรงตามนั้นเลยไม่ต้องกลับบิท บิท SUT[2:1] ด้วย คือ FUSE LOW BYTE กำหนดเป็น 0xFF เลย ไม่ต้องกลับบิทเป็น 0xC0

ถ้าเราโปรแกรมด้วย FUSE LOW BYTE เป็น 0xC0 clock ก็จะกลายเป็น External Clock ไป ต้องเอาสัญญาน clock จากภายนอกเข้าที่ขา XTAL1 ไป จึงทำให้บอร์ดไม่ทำงาน

ทาง ETT แนะนำให้ใช้ oscillator 2MHz ตัวนี้ https://www.es.co.th/detail.asp?Prod=009901724 เป็น External Clock เข้าที่ขา XTAL1 เพื่อให้บอร์ดทำงาน แล้วทำการแก้ CKSEL[3:1] = 111 เลือก clock เป็น  Low Power Crystal Oscillator 16MHz โดยโปรแกรม FUSE LOW BYTE ให้เป็น 0xFF ต่อไป  >:(

รอสั่งซื้อของอีกแล้ว  ;D

az

Quote from: tha on November 13, 2017, 01:12:36 PM
พอจะทราบสาเหตุของการเสียแล้วครับ น่าจะมาจาก clock selected มันไม่ต้องกลับบิทครับ ถ้าเราเลือกเป็น Low Power Crystal Oscillator บิท CKSEL[3:1] = 111, ก็ใส่ให้ตรงตามนั้นเลยไม่ต้องกลับบิท บิท SUT[2:1] ด้วย คือ FUSE LOW BYTE กำหนดเป็น 0xFF เลย ไม่ต้องกลับบิทเป็น 0xC0

ถ้าเราโปรแกรมด้วย FUSE LOW BYTE เป็น 0xC0 clock ก็จะกลายเป็น External Clock ไป ต้องเอาสัญญาน clock จากภายนอกเข้าที่ขา XTAL1 ไป จึงทำให้บอร์ดไม่ทำงาน

ทาง ETT แนะนำให้ใช้ oscillator 2MHz ตัวนี้ https://www.es.co.th/detail.asp?Prod=009901724 เป็น External Clock เข้าที่ขา XTAL1 เพื่อให้บอร์ดทำงาน แล้วทำการแก้ CKSEL[3:1] = 111 เลือก clock เป็น  Low Power Crystal Oscillator 16MHz โดยโปรแกรม FUSE LOW BYTE ให้เป็น 0xFF ต่อไป  >:(

รอสั่งซื้อของอีกแล้ว  ;D

จะเล่น fuse bit ใจต้องนิ่งนะครับ
ปล. High Voltage Parallel Programming ไว้แก้ fuse bit
เพราะแสวงหา..  มิใช่เพราะรอคอย
เพราะเชี่ยวชาญ..  มิใช่เพราะโอกาส
เพราะสามารถ..  มิใช่เพราะโชคช่วย
ดังนี้แล้ว "ลิขิตฟ้า  หรือจะสู้มานะตน..."

tha

Quoteจะเล่น fuse bit ใจต้องนิ่งนะครับ
ปล. High Voltage Parallel Programming ไว้แก้ fuse bit

ใช้ตัวไหน หาซื้อได้ที่ไหนครับ