2.การโปรแกรม AVR Microcontroller โดยใช้ USBasp กับ AVRDude

อุปกรณ์ที่ใช้

  • USBasp Programmer Tool
  • บอร์ดทดลองไมโครคอนโทรลเลอร์ (ในที่นี้ผมใช้บอร์ดทดลองทำเอง ใช้ ATMega64 ในการทดลองนี้)
USBASP AVR Programmer

USBASP AVR Programmer

จากบทความแรกที่ได้อธิบายการเซ็ตอัพโปรเจ็คด้วย โปรแกรม Programmer Notepate ไปบ้างแล้ว ในบทความนี้จะอธิบายวิธีการปรับค่า Configuration เพื่อโปรแกรม AVR ด้วย USBasp  บทความก่อนหน้านี้จะติดตั้ง WinAVR-20100110-install.exe ก่อนซึ่งจะมี Tools ติดตั้งมาให้ด้วยคือ

  • Programmers Notepad [WinAVR] IDE
  • MFile [WinAVR]
  • avr-libc ไลบราลีสำหรับ AVR Microcontroller
  • GNU GCC คอมไพล์เลอร์สำหรับแปลภาษา C และ C++

ซึ่งหนึ่งในนั้นก็คือ avrdude ซึ่งติดตั้งมาพร้อมให้ใช้งานเป็นที่เรียบร้อยแล้ว

AVRDUDE 

ทดลองพิมพ์ avrdude ที่ หน้าต่าง dos จะต้องแสดงรายการช่วยเหลือตามรูปด้านล่างนี้

usbasp

usbasp

การโปรแกรมด้วย avrdude command

ตัวอย่าง การเขียนโปรแกรมลงใน Flash Memory

avrdude –c usbasp –p m64 –u –U flash:w:main.hex
usbasp

usbasp

การใช้คำสั่งดังตัวอย่าง ผู้ใช้งานจะต้อง Command line เข้าไปยัง path  ของไฟล์ main.hex ก่อนการใช้คำสั่งนี้

คำสั่งอื่นๆ อ้างอิงลิงค์

คำสั่งคำหรับอ่านค่า fuse bit

avrdude -c usbasp -p m64 -U lfuse:r:lfuse.hex:i -v

คำสั่งสำหรับโปรแกรม fuse bit ทั้ง Lfuse Hfuse Efuse

avrdude -c usbasp -p m64 -U lfuse:w:0xcf:m hfuse:w:0x6f:m efuse:w:0xff:m  -u

จากตัวอย่างค่า High Fuse = 0x6f, Low Fuse = 0xcf, extenal fuse = 0xff

คำสั่งสำหรับอ่านข้อมูลภายใน EEPROM

avrdude -c usbasp -p m64 -t

เมื่อเข้าในโหมด Command แล้วให้พิมพ์คำสั่ง dump eeprom 0 512

avrdude_eeprom

avrdude_eeprom

การอ่านค่าจาก EEPROM จัดแบบลงไฟล์

avrdude -c usbasp -p m64 -U eeprom:r:c\tempeeprom.hex:i

การเขียน EEPROM จากไฟล์

avrdude -c usbasp -p m64 -U eeprom:w:c\tempeeprom.hex:i

MakeFile
การตั้งค่าโปรแกรมด้วย mfile เป็นอีกช่องทางหนึ่งที่สะดวก ซึ่งผู้พัฒนาไม่จำเป็นต้องกลับไปเปิดหน้าต่าง DOS แล้วพิพม์คำสั่งสำหรับโปรแกรมให้ยุ่งยากวุ่นวาย คือมือผู้พัฒนาเขียนโปรแกรมใน Programmer Notepad แล้วสามารถ Compile และโปรแกรมลง Microcontroller ได้เลย แต่ต้องแก้ไขค่าดังนี้
ไฟล์ Makefile

AVRDUDE_PROGRAMMER = usbasp // เปลี่ยนค่าจากเดิม ให้เป็น usbasp
AVRDUDE_PORT = usb // เปลี่ยนค่าจากเดิมให้เป็น usb

usbasp

usbasp

เมื่อทำการเขียนโปรแกรมเป็นที่เรียบร้อยแล้ว ให้ทดลองโปรแกรมโดยใช้ เมนูด้านบนเขียนโปรแกรม Programmer Notepad

usbasp

usbasp

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>