Member Login
 สมัครสมาชิกที่นี่
 เข้าระบบ:
ลืมรหัสผ่าน?
สถิติสมาชิก:
Total:16,649
Latest:moona 
Onlines:
บุคคลทั่วไป:54 

Category

winavr (c compiler) with avr studio4

All Articles >> C for Microcontroller >> - winavr (c compiler) with avr studio4







ไมโครคอนโทรลเลอร์ AVR เป็นหนึ่งในไมโครคอนโทลเลอร์ ที่ผลิตโดยบริษัท ATMEL มีสถาปัตยกรรมแบบ RISC คือหนึ่งคำสั่งทำงานโดยใช้สัญญาณนาฬิกาเพียง 1 ลูก เมื่อเทียบกับไมโครคอนโทรลเลอร์ตระกูล MCS 51 ที่ต้องใช้สัญญาณนาฬิกา 6-12 ลูก ในหนึ่งคำสั่ง AVR จึงจัดเป็นไมโครคอนโทรลเลอร์ตระกูลใหม่ที่น่าสนใจและกำลังได้รับความนิยมในเหล่าบรรดา นักศึกษา วิศวกร และผู้ที่สนใจทางด้านอิเล็กทรอนิกส์ ในบทความนี้ผู้เขียนจะขอกล่าวถึงวิธีการใช้งานเบื้องต้นของการเขียนโปรแกรมภาษา C ด้วย AVR Studio 4 / WinAVR C Compiler เพื่อไปควบคุมการทำงานของไมโครคอนโทรลเลอร์ตระกูล AVR ก่อนที่เราจะเขียนโปรแกรมเราต้องศึกษาคุณสมบัติของ AVR เบอร์ที่เราเลือกใช่งานก่อนเช่น ขาพอร์ตอินพุตเอาต์พุต ขาVCC ขาGND ไทเมอร์ เคาน์เตอร์ รีจีสเตอร์ที่เกี่ยวข้องกับโมดูลนั้นนั้น ในบทความนี้ผู้เขียนเลือกใช้เบอร์ ATmega16 รายละเอียดและคุณสมบัติภายในของไมโครคอนโทรลเลอร์ตระกูล AVR สามารถหาดูได้จาก DATA SHEET ของเบอร์นั้นนั้น






แสดงขาพอร์ตไมโครคอนโทรลเลอร์ตระกูล AVR เบอร์ ATmega 16

การใช้งาน AVR Studio 4 /WinAVR
AVR Studio 4 เป็นเครื่องมือในการพัฒนาโปรแกรมภาษาแอสแซมบลีสำหรับไมโครคอนโทรลเลอร์ AVR ในรูปแบบ IDE คือการรวมเครื่องมือพัฒนาทั้งแอสแซมเบอร์ ดีบักเกอร์ และอิดิเตอร์ไว้ในตัวเดียวกันและเมื่อนำมาทำงานร่วมกับ WinAVR เราก็สามารถที่จะคอมไพล์ภาษา C สำหรับ AVR ได้ สามารถดาวน์โหลดโปรแกรม WinAVR และ AVR Studio 4 ได้ที่ http://sourceforge.net/projects/winavr/
http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725


ภาพวงจรด้านล่างนี้เป็นวงจรที่เราใช้ทดลองสำหรับการเขียนโปรแกรมในบทความนี้ วงจรด้านล่างนี้คือวงจรไฟวิ่งนั่นเอง ต่อไปเมื่อเราดาวน์โหลดและติดตั้งโปรแกรม AVR Studio 4 และ WinAVR เรียบร้อยแล้ว เรามาเริ่มต้นเรียนรู้การใช้งานโปรแกรมเบื้องต้นได้ดังนี้






1. การเรียกใช้งานโปรแกรม AVR Studio 4
เปิดโปรแกรม AVR Studio 4 ขึ้นมาโดยเรียกที่ Start>>Programs>>Atmel AVR Tools>>AVR Studio 4



จะปรากฏหน้าต่าง Welcome to AVR Studio 4 ขึ้นมา ถ้าหากว่าไม่ปรากฏหน้าต่างนี้ขึ้นมาให้เราไปเลือกที่คำสั่งบน เมนูบาร์ Project>>Project Wizard ก็จะปรากฏหน้าต่าง Welcome to AVR Studio 4 ขึ้นมาให้เช่นกัน









2. การสร้าง Project ใหม่



คลิกที่ปุ่ม New Project ที่หน้าต่าง Welcome to AVR Studio 4 หรือเลือกคำสั่งบนเมนูบาร์ Project>>New Project ก็จะปรากฏหน้าต่างดังภาพด้านล่างนี้





ในช่อง Project type ให้คลิกเลือก AVR GCC เพื่อเลือกเขียนโปรแกรมด้วยภาษา C ที่ช่อง Project name ให้เราใส่ชื่อ Project ของเราลงไป ในช่อง Initial file ก็จะเป็นชื่อเดียวกันกับชื่อในช่อง Project name ที่เราเลือก ให้คลิกเลือก Create initial file เพื่อสร้างไฟล์ภาษา C คลิกเลือก Create folder เพื่อสร้างโฟลเดอร์ไว้เก็บข้อมูลโปรเจ็ค คลิกที่ปุ่ม เพื่อเลือกที่เก็บข้อมูลโปรเจ็ค เมื่อเลือกใส่ค่าต่างๆเรียบร้อยแล้ว ให้คลิกที่ จะปรากฏหน้าต่างดังภาพด้านล่าง ในช่อง Debug platform ให้คลิกเลือก AVR Simulator และในช่อง Device ให้เลือก ATmega16 จากนั้นคลิกที่ ก็จะปรากฏหน้าต่างสำหรับเขียนโค๊ดโปรแกรมขึ้นมา





3. การเขียนโค้ดโปรแกรม
#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
void delay_ms (unsigned int i )
{
for (;i>0; i--)
_delay_ms(1);
}
int main (void)
{
DDRA = 0xFF;
PORTA = 0X00;
while (1)
{
PORTA = 0x01;
delay_ms (1000);
PORTA = 0x02;
delay_ms (1000);
PORTA = 0x04;
delay_ms (1000);
PORTA = 0x08;
delay_ms (1000);
PORTA = 0x10;
delay_ms (1000);
PORTA = 0x20;
delay_ms (1000);
PORTA = 0x40;
delay_ms (1000);
PORTA = 0x80;
delay_ms (1000);
}
return 0;
}

ให้ทดลองเขียนโค้ดโปรแกรมตามตัวอย่างนี้ลงไป โปรแกรมตามตัวอย่างนี้ถ้าเรานำไปบันทึกใน ATmega16 ในวงจรไฟวิ่งที่กล่าวไว้ข้างต้นนี้ผลลัพธ์ทีได้ LED ก็จะติดจากดวงที่1 และวิ่งไปถึงดวงที่ 8 และวิ่งวนไปตลอด และเมื่อเขียนโค้ดโปรแกรมเสร็จเรียบร้อยแล้วเลือกคำสั่งที่เมนูบาร์ Project>>Configuration Option จะปรากฏหน้าต่าง Options ขึ้นมา


ในช่อง Device เลือกเบอร์ AVR ที่เราใช้ ในบทความนี้เลือก ATmega16
ในช่อง Frequency ให้ใส่ค่าความถี่ที่ใช้หรือเลือกให้ตรงกับความถี่ของบอร์ดทดลองที่เลือกใช้ ในบทความนี้เลือก 8 MHz ที่ช่อง Optimization จะเป็นการเลือกการบีบอัดข้อมูลของโปรแกรม ที่เราจะนำไปบันทึกลงในไอซี ขอแนะนำให้เลือกใช้ -03 หรือ -0S คลิกเลือก Create Hex File เพื่อสร้างไฟล์โปรแกรมที่จะนำไปบันทึกในไอซี ส่วน Map File และ List File
จะเลือกหรือไม่เลือกก็ได้เพราะในบทความนี้จะใช้เฉพาะ Hex File เท่านั้น จากนั้นคลิก OK








4. การบันทึก Project
ให้เลือกคำสั่งบนเมนูบาร์ File>>Save ก็จะบันทึกไฟล์.C ไว้ในโฟลเดอร์โปรเจ็คของเรา



หากเราต้องการที่จะบันทึกโปรเจ็คให้เลือกคำสั่งบนเมนูบาร์ Project>>Save Project ก็จะบันทึกไฟล์โปรเจ็ค ไว้ในโฟลเดอร์โปรเจ็คของเรา



ดังภาพด้านล่างแสดงไฟล์.C และไฟล์โปรเจ็คที่บันทึกไว้ในโฟลเดอร์โปรเจ็คของเรา








5. การคอมไฟล์โปรแกรม
เมื่อเราเขียนโค้ดโปรแกรม C เสร็จเรียบร้อยแล้ว เราสามารถที่จะคอมไฟล์ WinAVR ผ่าน AVR Studio ได้โดยเลือกที่คำสั่งบนเมนูบาร์ Build>>Build

เมื่อเรียกใช้คำสั่งคอมไฟล์แล้ว ในหน้าต่าง Build จะแสดงคำสั่งที่เรียกใช้งาน WinAVR และแสดงผลลัพธ์จากคำสั่งนั้นนั้น ถ้าหากว่าไม่เกิดข้อผิดพลาดใดใดจะแสดงสัญลักษณ์รูปวงกลมสีเขียว ถ้าหากว่ามีข้อผิดพลาดเกิดขึ้น จะแสดงสัญลักษณ์วงกลมสีเหลืองและสีแดงขึ้นหน้าบรรทัดนั้น เราสามารถที่จะดับเบิ้ลคลิกที่บรรทัดนั้น ก็จะกระโดดไปยังบรรทัดที่ผิดพลาดของโปรแกรมเพื่อให้เราแก้ไขได้




เมื่อคอมไฟล์ผ่านเรียบร้อยแล้วเราจะได้โฟลเดอร์ default เก็บอยู่ในโฟลเดอร์โปรเจ็คและภายในโฟลเดอร์ default จะมีไฟล์การทำงานต่างๆอยู่รวมทั้งไฟล์.Hex ที่เราจะนำไปบันทึกลงในไอซีด้วย สำหรับรายละเอียดเพิ่มเติมของการใช้งานโปรแกรม AVR Studio สามารถอ่านเพิ่มเติมได้จาก Help ของโปรแกรม ต่อไปผมจะนำไฟล์.Hex ที่ได้จากการคอม ไฟล์ไปทดลอง SIMULATE การทำงานของโปรแกรมด้วยโปรแกรม Proteus 7.6 สำหรับโปรแกรม Proteus สามารถดาวน์โหลดได้ที่ http://www.labcenter.co.uk หากท่านต้องการตัวเต็มอาจจะต้องเสียเงินซื้อนะครับ




การ SIMULATE วงจรด้วยโปรแกรม Proteus 7.6
หลังจากที่เราได้ลงโปรแกรม Proteus เสร็จเรียบร้อยแล้วให้เราเรียกใช้งานตัวนี้ เพื่อจำลองการทำงานของวงจร ถ้าหากปรากฏหน้าต่าง View Sample Designs ให้คลิก NO หรือคลิกที่ช่อง
และคลิก YES ก็จะไม่แสดงหน้าต่างนี้เวลาที่เราเรียกใช้โปรแกรมอีก เราก็จะได้พื้นที่สำหรับการสร้างวงจรดังภาพด้านล่างนี้










เรามาเริ่มวาดวงจรไฟวิ่งดังตัวอย่างที่กล่าวไว้ข้างต้น
1. คลิกที่ Component Mode
2. คลิกที่ Pick form Libraries
3. พิมพ์ AVR ในช่อง Keywords เลือก Device เบอร์ ATMAGA 16
4. คลิก OK
บทความนี้



จากนั้นคลิกซ้ายบริเวณพื้นที่วาดวงจรจะปรากฏรูปร่างของอุปกรณ์ขึ้นมาให้เราเลื่อนไปยังตำแหน่งที่เราต้องการวางอุปกรณ์และคลิกซ้ายเพื่อวางอุปกรณ์ หากเราต้องการ Rotate , Mirror , หรือ Delete ให้คลิกขวาที่ตัวอุปกรณ์ก็จะมีคำสั่งให้เราเลือกใช้งาน หากต้องการเคลื่อนย้ายตัวอุปกรณ์ให้คลิกซ้ายที่ตัวอุปกรณ์ อุปกรณ์ตัวนั้นก็จะมีสีแดงจากนั้นคลิกซ้ายค้างแล้วเลื่อนไปยังตำแหน่งที่ต้องการวางและเมื่อวางอุปกรณ์เรียบร้อยแล้วให้คลิกซ้ายบริเวณพื้นที่ว่างสีแดงที่ตัวอุปกรณ์ก็จะหายไป

5. คลิกที่ Component Mode
6. คลิกที่ Pick form Libraries
7. พิมพ์ Resistor ในช่อง Keywords เลือก Resistor
8. คลิก OK
ให้วางตัว Resistor ลงในพื้นที่วาดวงจร และให้คลิกขวาที่ตัว Resistor เลือกคำสั่ง Edit properties จะปรากฏหน้า
Edit Component ขึ้นมา ในช่อง Resistance (Ohms) ให้ใส่ค่า 220 ลงไป









9. คลิกที่ Component Mode
10. คลิกที่ Pick form Libraries


11. พิมพ์ LED-BLUE ในช่อง Keywords เลือก LED-BLUE หรือหากต้องการเลือกสีอื่นก็สามารถเลือกได้
12. คลิก OK และวาง LED-BLUE ลงในพื้นที่วาดวงจร
13. คลิกที่ Terminals Mode คลิกเลือก GROUND จากนั้นนำไปวางในพื้นที่วาดวงจร
14. คลิกที่ Terminals Mode เพื่อลากเส้นสัญญาณเชื่อมต่อระหว่างขาอุปกรณ์ โดยคลิกซ้ายที่ขาอุปกรณ์ที่เป็นจุดเริ่มต้นและลากไปคลิกซ้ายที่ขาอุปกรณ์ที่เป็นจุดสิ้นสุด







เมื่อวาดวงจรเสร็จเรียบร้อยแล้วให้คลิกขวาที่อุปกรณ์ ATMAGA16 เลือกคำสั่ง Edit properties ที่ช่อง Program File ให้คลิกที่ และไปเลือกไฟล์.Hex ที่เราได้จากการคอมไฟล์ด้วยโปรแกรม WinAVR ข้างต้นที่เก็บอยู่ในโฟลเดอร์ default ในโฟลเดอร์โปรเจ็คของเรา และที่ช่อง CKSEL Fuses: ให้เลือกความถี่คริสตอลที่ใช้งานในบทความนี้เลือกใช้ 8 MHz เท่านี้เราก็พร้อมที่จะจำลองการทำงานของโปรแกรมได้แล้ว

15. ให้คลิกปุ่ม Play เพื่อดูผลการจำลองการทำงานของวงจร ผลที่ได้ก็คือ LED ก็จะติดจากดวงที่1 และวิ่งไปถึงดวงที่ 8 และวิ่งวนไปตลอด หากต้องการหยุดการทำงานให้คลิกที่ปุ่ม STOP


บทความนี้

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