วันอาทิตย์ที่ 8 พฤษภาคม พ.ศ. 2559

Atmel Studio 7: กว่าจะอัพโหลดได้

หลังจากที่ติดตั้ง USBasp ใน Windows 10 ได้แล้วก็ถึงคิวติดตั้งโปรแกรมเพื่อเขียนโปรแกรมและอัพโหลดผ่าน USBasp โดยความตั้งใจคือ ใช้โปรแกรมอื่นที่ไม่ใช่ Arduino IDE ซึ่งหลายคนอาจจะสงสัยว่าทำไม ในเมื่อ Arduino IDE ก็สามารถเขียนโปรแกรมควบคุมได้ง่ายๆ โดยไม่ต้องวุ่นวายอะไรเลย

ชุดเบิร์นโปรแกรม Atmega8/168/328 ผ่าน USBasp และสามารถต่ออุปกรณ์ได้เหมือนบอร์ด Arduino

แต่สำหรับผู้เขียนมีความรู้สึกว่า การเขียนโปรแกรมด้วย Arduino IDE เหมือนการเขียนโปรแกรมด้วย Visual Studio ของไมโครซอฟท์ที่ไม่ต้องคิดอะไรมาก อยากเขียนอะไรก็โหลดๆ ไลบรารี่ที่มีคนใจดีเขียนแจกไว้เยอะแยะไปหมด

นำมารวมกับโปรแกรมของเราแล้วเรียกใช้ตามรูปแบบที่เขากำหนดมา ก็ง่ายดี แต่บางครั้งไลบรารีเหล่านั้นก็ทำงานเกินไป ทำให้เสียพื้นที่โปรแกรม หรือไม่ได้อย่างที่เราต้องการ บางครั้งต้องการแค่นิดเดียว แต่ต้องโหลดไลบรารีมาทั้งหมด

เหตุผลการสำคัญ คือ การเขียนโปรแกรมด้วยภาษาซีสำหรับ AVR นั้นทำให้เราได้เรียนรู้เกี่ยวกับคอนโทรลเลอร์ได้ลึกขึ้น เพราะต้องเข้าไปจัดการส่วนต่างๆ ด้วยตนเอง

ทั้งหมดนี้ก็เพื่อที่จะพัฒนาและหวังลึกๆ อยากเขียนไลบรารีแจกบ้างเหมือนกัน :-)


ก่อนที่จะเลือก Atmel Studio 7 เป็นชุดพัฒนาโปรแกรมนั้น ก็ทดลองใช้ AVR Studio 4 และ WinAVR ตามคำแนะนำในหนังสือเล่มหนึ่ง แต่พยายามลองติดตั้งและลองคอมไพล์แล้วไม่ผ่าน ติดปัญหาเรื่องการคอมไพล์ และในหนังสือก็ไม่อธิบายมากนัก พร้อมทั้งแนะนำให้ใช้งานผ่าน Simulation ซึ่งก็เข้าใจถึงข้อจำกัดในการเขียนลงบนกระดาษให้ครบถ้วนได้

ในบทความนี้จึงกลับไปใช้ 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 แล้วกำหนดพารามิเตอร์
สำหรับ parameter กำหนดดังนี้

-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 แล้วถ้าไม่มีอะไรผิดพลาด ที่บอร์ดหรือไอซีก็จะทำงานตามที่เราเขียนโปรแกรม สำหรับผู้เขียนใช้บอร์ดเบิร์นที่สามารถต่อพ่วงอุปกรณ์ได้ จึงเห็นผลทันที

ทั้งหมดนี้ถือว่าเป็นการเริ่มต้นที่ดี ถึงแม้ว่าจะทุลักทุเลไปบ้าง แต่ก็เป็นการเรียนรู้ที่ดี และก้าวหน้าไปอีกระดับหนึ่ง ใครลองทำแล้วไม่ได้หรือมีข้อเสนอแนะอย่างไร เชิญแสดงความคิดเห็นได้เลยครับ...



ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Driver สำหรับ USB UART TTL

https://drive.google.com/open?id=0B80EqvaAGSB8dU9EMXdwQmJCLVE