ชุดเบิร์นโปรแกรม Atmega8/168/328 ผ่าน USBasp และสามารถต่ออุปกรณ์ได้เหมือนบอร์ด Arduino |
นำมารวมกับโปรแกรมของเราแล้วเรียกใช้ตามรูปแบบที่เขากำหนดมา ก็ง่ายดี แต่บางครั้งไลบรารีเหล่านั้นก็ทำงานเกินไป ทำให้เสียพื้นที่โปรแกรม หรือไม่ได้อย่างที่เราต้องการ บางครั้งต้องการแค่นิดเดียว แต่ต้องโหลดไลบรารีมาทั้งหมด
เหตุผลการสำคัญ คือ การเขียนโปรแกรมด้วยภาษาซีสำหรับ AVR นั้นทำให้เราได้เรียนรู้เกี่ยวกับคอนโทรลเลอร์ได้ลึกขึ้น เพราะต้องเข้าไปจัดการส่วนต่างๆ ด้วยตนเอง
ทั้งหมดนี้ก็เพื่อที่จะพัฒนาและหวังลึกๆ อยากเขียนไลบรารีแจกบ้างเหมือนกัน :-)
ในบทความนี้จึงกลับไปใช้ Atmel Stduio 7 และหาตัวอย่างในอินเตอร์เน็ตเพิ่มเติมและโชคดีที่เจอตัวอย่างการใช้ USBasp และ Atmega8 ด้วย จึงสามารถนำมาประยุกต์ใช้ได้ แต่อย่างไรก็ตามก็ยังเจอปัญหา การเพิ่ม External Tools เพื่ออัพโหลดโปรแกรม .hex ไปไว้ในไอซี
แต่ก็เปิดเจอในเว็บแห่งหนึ่งให้ดูรายละเอียดการอัพโหลดโดยโปรแกรม avrdude ซึ่งจะมีรายละเอียดพารามิเตอร์ในการอัพโหลด สามารถนำมาใช้งานได้โดยจะแสดงอยู่ในรูปภาพดังต่อไปนี้
ลองเขียนโปรแกรมแรกให้ LED ที่ต่อ PB0 กระพริบ แต่ก็เจอ Error ตอนคอมไพล์ |
คลิกเลือก Properties ของโปรเจกต์ แล้วไปที่ Toolchain>AVR GNU C Compiler และ Symbol แล้วลบ Debug ทิ้ง |
คลิกเพิ่มจะมีกรอบข้อความให้พิมพ์ F_CPU=8000000ul ลงในช่อง เพื่อกำหนดความถี่ของไอซี |
ลองคอมไพล์หลังแก้ไขแล้ว |
ไปที่ Arduino IDE ในหน้า Preferrences ให้คลิก upload เพื่อแสดงข้อความการอัพโหลดทางหน้าจอ |
เมื่อสั่งอัพโหลดโปรแกรมทาง Arduino IDE แล้วจะแสดงพารามิเตอร์ของ avrdude มาให้ด้วย คัดลอกนำไปใช้งานต่อ |
กลับมาที่ Atmel Studio 7 เพื่อเพิ่ม External Tools แต่ในเมนูกลับไม่แสดง จึงต้องเข้าไปกำหนด Shortcut ให้กับ External Tools เพื่อเรียกผ่านการกดคีย์บอร์ด แทนเลือกในเมนู Tools |
กดปุ่ม Shortcut เข้าเมนู External Tools แล้วกำหนดพารามิเตอร์ |
-v -p atmega8 -c usbasp -P usb
-U flash:w:"$(ProjectDir)Debug\$(TargetName).hex":i
atmega8 คือ ไอซีที่ใช้งาน
usbasp คือ เครื่องมือที่จะใช้อัพโหลด
usb คือ port ที่ใช้อัพโหลด
$(ProjectDir)Debug\$(TargetName).hex คือ ชื่อไฟล์ที่จะอัพโหลด
กลับมาที่เมนู Tools จะมีเมนู USBasp ตามที่เรากำหนดในรูปข้างบน ให้คลิกเพื่ออัพโหลด |
หลังจากที่คลิกอัพโหลดผ่าน USBasp แล้วถ้าไม่มีอะไรผิดพลาด ที่บอร์ดหรือไอซีก็จะทำงานตามที่เราเขียนโปรแกรม สำหรับผู้เขียนใช้บอร์ดเบิร์นที่สามารถต่อพ่วงอุปกรณ์ได้ จึงเห็นผลทันที
ทั้งหมดนี้ถือว่าเป็นการเริ่มต้นที่ดี ถึงแม้ว่าจะทุลักทุเลไปบ้าง แต่ก็เป็นการเรียนรู้ที่ดี และก้าวหน้าไปอีกระดับหนึ่ง ใครลองทำแล้วไม่ได้หรือมีข้อเสนอแนะอย่างไร เชิญแสดงความคิดเห็นได้เลยครับ...
ไม่มีความคิดเห็น:
แสดงความคิดเห็น