การโปรแกรม
Bootloader ATMEGA2560-16AU
ในการโปรแกรม Bootloader จำเป็นจะต้องมีเครื่องมือดังนี้
1. Program AVR Studio 4
2. Program win AVR
3. Program Arduino ที่มี Bootloader stk500boot_v2_maga2560 อยู่ใน Arduino >> hardware >>
arduino >> bootloaders >> stk500v2
4. เครื่อง ET-AVR
ISP mkII
5. ตัวแปลง USB
เป็น RS-232
ส่วนของวงจรที่ใช้ในการโหลดโปรแกรมที่เขียน Arduino
เข้าตัว Bootloader
วงจร USB to RS-232 ที่ใช้ในการโหลดโปรแกรมที่เขียน Arduino เข้าตัว Bootloader
ขั้นตอนการโปรแกรม
-ให้ทำการเชื่อมต่อ bard ที่มีชิป
ATMEGA 2560 -16AU เข้ากลับเครื่อง ET-AVR ISP mkII โดยการเชื่อมต่อ แบบ SPI ตามภาพ
-ในการเชื่อมต่อจะให้ฝังที่มีสายสีแดงอยู่ที่ขา 1 ตามภาพ การที่จะโปรแกรม
Bootloader
เข้าไปใน ATMEGA2560-16AU นั้นจำเป็นจะต้องปลดอุปกรณ์ที่ทำการต่อแบบ
SPI อยู่ ออกให้หมด
-เมื่อทำการเชื่อมต่อแล้ว ให้ทำการเปิดโปรแกรม AVR Studio 4 ขึ้นมา กดที่ Icon
เพื่อทำการเรียกหน้า Select
AVR Programmer ขึ้นมาให้ทำการการเลือกที่ช่อง Platform
=AVRISP mkII และ Port = USB แล้วกด Connect…
ถ้าทุกอย่างถูกต้องโปรแกรมจะเข้าสู่หน้าต่างโปรแกรมของ AVRISP mkII ให้เลือกที่ Tap ของ
Main แล้วกำหนดเบอร์ของ
MCU ที่ต้องการจะโปรแกรมในช่อง Device and Signature Bytes ซึ่งเมื่อเลือกกำหนดเบอร์เรียบร้อยแล้ว ที่ช่อง Programming Mode
and Target Settings โปรแกรมจะแสดงรูปแบบการ Interface ที่เป็นไปได้ของ MCU เบอร์นั้นๆให้เห็นทันที โดยในกรณีของ
ATmega2560 จะเป็น ISP Mode ดังตัวอย่าง
โดยเครื่องโปรแกรม ET-AVRISP mkII จะปรับเปลี่ยนโหมดการทำงานตาม Programming Mode
ที่เลือกไว้นี้เองโดยอัตโนมัติ
ให้ลองทดสอบการเชื่อมต่อระหว่าง MCU กับโปรแกรมดูว่าสามารถสื่อสารกันได้อย่างถูกต้องหรือยัง
ซึ่งในขั้นตอนนี้ต้องกำหนดเบอร์MCU ให้ถูกต้องตามที่เชื่อมต่อไว้จริงๆด้วย
โดยให้ทดสอบเลือก Read Signature ดู ซึ่งถ้าทุกอย่างถูกต้องโปรแกรมควรต้องอ่านค่าSignature
ของเบอร์ MCU ที่เลือกไว้มาแสดงให้เห็นได้อย่างถูกต้อง
ซึ่งถ้าเกิดความผิดพลาดขึ้นควรต้องตรวจสอบหาข้อผิดพลาดและแก้ไขปัญหาจนถูกต้องเสียก่อน
ไม่ควรข้ามไปสั่งงานเครื่องโปรแกรมให้กระทำอย่างอื่นกับ MCU อีกไม่ว่าจะเป็นการสั่ง
Program Flash หรือ Program Fuseหรือ
LockBits เพราะอาจทำให้เกิดความผิดพลาดมากขึ้น ซึ่งถ้าทุกอย่างถูกต้องควรได้ผลดังรูป
ในกรณีที่เกิดความผิดพลาดขึ้น
ให้ลองตรวจสอบหาสาเหตุของความผิดพลาดและแก้ไขให้ถูกต้อง โดยมีแนวทางดังนี้
การเชื่อมต่อสายระหว่าง Target Board กับเครื่องโปรแกรม ถูกต้องหรือยัง Target Board อยู่
ในสภาวะพร้อมที่จะทำงานหรือยัง
ถ้าเป็น Target Board ที่ใช้การเชื่อมต่อแบบ ISP ขาสัญญาณที่ทำหน้าที่เป็น
ISP มีการนำไป
ต่อใช้งานอย่างอื่นในขณะทำการโปรแกรมอยู่หรือไม่
ถ้ามีให้ปลดการเชื่อมต่อเหล่านั้นออกให้
หมดเพื่อให้ขาสัญญาณดังกล่าวเป็นอิสระ
กำหนดค่าความถี่ของ ISP Frequency ของเครื่องโปรแกรมไว้ สัมพันธ์สอดคล้องกันกับ
ค่าความถี่ของ MCU ที่ทำงานใน
Target Board หรือไม่ ซึ่งค่าความถี่ที่ถูกต้องของ ISP Frequency
ต้องไม่เกิน 1/4 ของค่าความถี่ที่ MCU ใน Target Board ทำงานอยู่ในขณะนั้น เช่น ถ้า
MCU ทำงานที่ความถี่ 1MHz ค่าความถี่ของ
ISP Frequency ต้องไม่เกิน 250KHz ซึ่งถ้าไม่แน่ใจอาจทดลองปรับค่าความถี่
ISP Frequency ให้มีค่าต่ำๆดูก่อน เมื่อสามารถติดต่อสื่อสารกับ
MCU ได้เรียบร้อยแล้วจึงค่อยเข้าไปตรวจสอบ ค่า Fuse Bit ของ MCU ที่เกี่ยวกับระบบสัญญาณนาฬิกา Clock ต่างๆ ในภายหลังต่อไป ดังรูป
เมื่อทุกอย่างถูกต้องแล้วให้เลือกไปที่
Tab ของ Program พร้อมทั้งเลือก ตัวเลือกต่างๆดังนี้
Device ให้เลือก
o Erase
device before flash programming
o Verify
device after programming
Flash ให้เลือก Input
HEX File ที่ต้องการจะโปรแกรมให้กับ MCU บนบอร์ด
ซึ่ง ในกรณี นี้
ให้เลือกเป็น “..\stk500boot_v2_mega2560.hex” จากนั้นให้เลือกที่ Program เพื่อสั่ง Program
Hex File ให้กับ MCU ซึ่งจะได้ผลดังรูป
Fuses และ Lock
Bits สามารถเลือกกำหนด และสั่งโปรแกรมค่าได้ตามต้องการ
ซึ่งก่อนจะสั่ง
Program ค่าของ Fuse
Bit ผู้ใช้ควรต้องศึกษารายละเอียดในการกำหนดค่าให้เข้าใจ
ซึ่งจะต้อง
สัมพันธ์สอดคล้องกับความต้องการของระบบ Hardware ที่ใช้อยู่ด้วย ถ้ายังไม่แน่ใจในรายละเอียด
ไม่ควรไปสั่งโปรแกรมค่า ของ Fuse Bit เหล่านี้ เพราะถ้ามีการโปรแกรมค่าของ Fuse Bit ผิดไปอาจ
ส่งผลให้ MCU
ไม่ทำงาน โดยเฉพาะ Fuse Bit สำหรับเลือกกำหนด Clock และที่สำคัญคือ
Fuse
Bit ของ SPIEN(SPI
Enable) ห้ามไปสั่ง Disable ค่า Fuse
Bit อันนี้ออกเพราะจะทำให้ MCU ไม่
สามารถสั่งโปรแกรมด้วย ISP Mode ได้อีก
เมื่อทำการโปรแกรมผ่านไฟที่ต่อไว้จะทำการกระพริบ
สามารถนำไปโหลดโปรแกรมเข้า ชิบผ่านทาง USB ได้แล้ว ในการโปรแกรม
จะต้องต่อ GND Rx Tx และ RES ให้ครบไม่งั้นจะทำให้บอร์ดมีปัญหาต้องนำไปทำการโปรแกรม
ใหม่ ยำนะครับตรงจุดที่ใช้ต่อขา RES ต้องมันใจว่าวงจรเชื่อมต่อถึงกันแล้ว เพราะเม่อเราทำการโปรแกรมผ่าน Arduino แล้ว ตัวโปรแกรม arduino IDE จะทำการรีเซ็ตบอร์ด
ถ้าใครมีปัญหาด้านงานออกแบบหรือน้องที่สนใจหาที่ปรึกษาฟรีๆ หรือต้องการเขียน 3D componentต่าง ๆ สามารถ สอบถามได้ทีี่
Tal. 094-787-1126
Line ID : saksakkiki
facebook : saksan Momo
ความคิดเห็น
แสดงความคิดเห็น