ขั้นตอนกำรติดตั้งโปรแกรม avr studio 4...ข...
TRANSCRIPT
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 1
ขนตอนกำรตดตงโปรแกรม AVR Studio 4 CD ทแถมมาใหกบชดหนยนต AVR จะมชดโปรแกรม avr studio V4 มาใหแลว และสามารถท าการตดตงตาม
ขนตอนดงน
Folder / avr studio V4
ภายใน CD จะม Folder / avr studio V4 ซงภายใน Folder ดงกลาวจะมโปรแกรมอย 3 ชดคอ aStudio4b528 / AVRStudio4.13SP2 และ WinAVR-20070525-install
จะมชดโปรแกรมอย 3 ชด
ในการตดตงโปรแกรมจะตองท าการตดตงแบบเรยงด าดบดงน 1. ท าการตดตง aStudio4b528 กอน 2. ตามดวยการตดตง AVRStudio4.13SP2 3. และการตดตง WinAVR-20070525-install ขนตอนกำรตดตง aStudio4b528
1. เลอกท aStudio4b528
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 2
2. โปรแกรมอยระหวางการตดตง 3. เลอก Next
4. เลอกท I accept the terms of the license agreement และ เลอก Next
5.เลอก Next (หากตองการเปลยนทอยทเกบของโปรแกรมกสามารถเลอกท Change ได)
6. เลอก Next 7.เลอก Install เพอท าการตดตงโปรแกรม
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 3
8. โปรแกรมอยระหวางการตดตง และรอจนกวาจะเสรจสมบรณ 9.เมอโปรแกรมท าการตดตงเสรจแลวใหเลอก Finish
จากนนใหท าการตดตง AVRStudio4.13SP2 ตอเนองไปเลย ท ำกำรตดตง AVRStudio4.13SP2
1. เลอกท AVRStudio4.13SP2
2.เขาสการตดตงโปรแกรม 3. เลอก Next
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 4
4. เลอก Next 5. โปรแกรมก าลงตดตงรอจนกวาจะเสรจ
6. เมอเสรจสนการตดตงใหเลอก Finish
จากนนใหท าการตดตง WinAVR-20070525-install ตอไปเลยครบ ท ำกำรตดตง WinAVR-20070525-install
1. เลอก WinAVR-20070525-install
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 5
2. เลอก OK 3.เลอก Next
4. เลอก I Agree 5. เลอก Next (ถาตองการเปลยนทตดตงโปรแกรมกสามารถท าไดโดยเลอกท Browse)
6. เลอก Install เพอท าการตดตงโปรแกรม 7. โปรแกรมอยระหวางการตดตง
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 6
8. เมอเสรจสนการตดตงแลวใหเลอก Finish เมอเสรจสนการตดตงทง 3 โปรแกรมแลวใหตรวจสอบวามโปรแกรม avr studio V4 พรอมใชงานหรอไม
ขนตอนตอไปจะเปนการเขยนโปรแกรมเบองตนและการทดสอบหนยนต ครบ ซงจะอยในคมอการเขยนโปรแกรมและทดสอบหนยนต ครบ
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 7
ขนตอนกำรเขยนโปแกรม
ขนตอนนจะเปนการเรยนรการใชงานโปรแกรม AVR Studio 4 การเขยนโปรแกรมทดสอบหนยนตเบองตนกนครบ ล าดบแรกใหท าการสราง Folder ทใชในการเกบ code กนกอนครบ ซงในทนจะท าการสราง Folder ชอ robodkit
Folder ทสรางขนมาเพอเกบ code program
กำรใชงำน AVR Studio 4 1. เปดโปรแกรมขนมากอน โดยเขาไปท start / All Program / Atmel AVR Tools / AVR Studio4
การเปดโปรแกรม ก าลงเขาสโปรแกรม
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 8
หนาตางโปรแกรม
2. ใหท าการสราง Project ใหม โดยการเลอก New Project
เลอกท New Project
3.เลอกท AVR GCC
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 9
เลอกท AVR GCC
4. ใหท าการตงชอท Project name (ในตอนนจะใชชอวา robot_1) และใหเลอก Folder ทเกบ code ซงจะตองไปเกบไวใน folder ทไดสรางขนไวแลวจากนนใหเลอก Next
ท าการตงชอ และเลอกทเกบงาน
5. .ใหเลอก AVR Simulator และทขวามอจะมเบอร IC ของ AVR มากมาย
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 10
เลอก AVR Simulator
6. ใหหาเบอร ATmega8 ซงเปนเบอรทใชกบหนยนตดงกลาว จากนนใหเลอก Finish
เลอกเบอร ATmega8
7. จะไดหนาตางโปรแกรมพรอมทจะท าการเขยนโปรแกรม
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 11
หนาตางโปรแรกม 8.ตอไปจะเปนขนตอนการก าหนดรายละเอยดการคอมไพลไฟลโปรเจกต
ใหไปทเมน Project เลอกรายการ Configuration Option จะไดหนาตางดงรปดานลาง
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 12
ในหนาตางนในชอง Frequency ใหก าหนดคาความถเทากบ 11059200 hz เพอใหตรงกบความถของตวหน และในชอง Optimization คอชองการเลอกการบบอดขอมลจะมอย 4 ระดบ ใหเลอกไวท –O1 หรอ –Os กอนส าหรบโปรแกรมตวอยาง ในกรณทท างานในโหมดดบกแลวไมเกดผลไดๆในการท างานของโปนแกรม ใหเลอกไปท –O0 เพอยกเลกการบบอดขอมล หมำยเหต ในการเขยนโปรแกรมใหมทกครงตองเขามาก าหนด Configuration Option เสมอ 9. ถาตอนนท าการเปดด Folder / robodkit จะพบไฟลอย 2 ไฟลดงภาพดงกลาว
ไฟลทปรากฏขน
10. ท าการเขยน Code ในหนาตาง Edit ดงน
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 13
#include <avr/io.h> int main(void) { DDRB =0XFF; //ก าหนดใหพอรท บ เปน เอาทพท ทงหมด DDRD =0XFF; //ก าหนดใหพอรท ด เปน เอาทพท ทงหมด while(1) { PORTB=0x10; // 0001 0000 ใหมอเตอรขวาเดนหนา PORTD=0x80; // 1000 0000 ใหมอเตอรซายเดนหนา } }
11. จากนนให ท าการคอมไพล เพอตรวจสอบการท างานของ code โดยไปทเมน Build > Compile หรอ ใช Alt + F7
ท าการคอมไพล
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 14
12. ถาคอมไพลผาน จะขนลกษณะดงกลาว คอ เขยน code ถกตอง หากเขยนผดกใหท าการแกไขและคอมไพลใหมจนกวาจะถกตอง
ถาคอมไพลไมผานจะขนแบบน
13. หากเขาไปดท Folder / robodkit จะเหนวาไดไฟลใหมและ Folder / default เกดขน
เขาไปดใน Folder / Robodkit
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 15
14. จากนนใหท าการ Build โดยไปทเมน Build > Build หรอ กด F7
การ Build 15. ถา Build สมบรณจะขนขอความดงกลาว
16. ถาเขาไหดใน Folder / robodkit ใน Folder Default จะพบมไฟล robot_1 .HEX ซงเปนไฟลทใชในการ load code เขาไปในตว IC ครบ
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 16
เมอ Build แลวจะได .HEX เมอเสรจสนขนตอนการเขยนโปแกรมแลวขนตอนตอไปจะท าการ load Program เขากบตวหนยนตและทดสอบหนยนตกน
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 17
ขนตอนกำร Load Program และ กำรทดสอบหนยนต กำรเตรยมหนยนต
หนยนตจะตองมการประกอบใหสมบรณและตอขวตางๆใหถกตอง และตองใชถานทใหม จากนนท าการตอสาย USB เขากบคอมพวเตอรและตวหนยนตดงภาพ และในระหวางการ load program จะตองท าการปดสวตชหนยนตกอนทกครง ใหเหลอแคไพเลยงจาก USB เทานน
ปดสวตชกอนท าการ Load program
กำรเรยกหำ USB Drivers ของหนยนตเมอตดตอกบคอมพวเตอรในครงแรก
เมอตอสาย USB เขากบหนยนตและเครองคอมพวเตอรครงแรก เครองคอมพวเตอรอาจจะยงไมรจกจงจะมการเรยกหา USB Drivers ซง USB Drivers ดงกลาวไดอยในแผน CD ทแถมมาใหแลว ใน Folder / FTDI USB Drivers ขนตอนกำร Load program
เนองจาก เราใช PORT USB ในการ load program เราจ าเปนตองรวา Port ทใชงานดงกลาวเปน Port COM ทเทาไร และยงเปนการทดสอบดวยวาการเชอมตอสมบรณหรอไม (ในตวอยางจะได COM 3)
การตรวจสอบการตดตอกบ USB สมบรณ
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 18
กลบไปท AVR Studio 4 อกครง และท าตามขนตอนดงน 1. ไปทเมน Tool > Program AVR > Connect...
การเลอกการ Connect 2. จากนนเลอก STK500 or AVRISP สวน Port กเลอก Port ทตดตอกบ USB หรอ ใหเลอก Auto กไดเพราะจะหาใหเอง จากนนเลอก Connect…
การเลอกการ Connect เพอตดตอกบตวหนยนต
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 19
3. เมอ Connect ผานจะเขาสหนา AVRISP ดงกลาว
หนา AVRISP
4. ใหเลอกเมน Main เพอก าหนดคณสมบตตางๆ ท Device ใหเลอกเบอร IC คอ ATmega8
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 20
หนาตาง Main จากนนใหกด Read Signature เพอทจะท าการตดตอกบ IC สวนคาอนๆใหไวคงเดม
หนาตาง Main แสดงการอาน Read Signature
5. เมอเขามาดท Fuses จะไดการก าหนดเงอนไขดงรป ไมตองไปเปลยนแปลง
.
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 21
หนาตาง Fuses 6. จากนนใหเขามาทหนา Program ในสวนของ Flash ใหเลอก Input HEX File และท าการเลอก ไฟลทจะท าการ load (ในทน คอ robot_1.HEX)
เลอก ไฟลทจะท าการ Load
7. เมอเลอกไฟลแลวใหท าการเลอกท Program จากนน code ตางๆกจะเขาสตว IC ในหนยนต โดยสวนลางจะเปนการแสดงผลการท างาน
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 22
การ Program และ รายละเอยดการท างาน 8. จากนนใหท าการทอดสาย USB ออก และท าการเปดสวตชหนยนต หนยนตจะวงไปขางหนา แสดงวา code ทเขยนถกตองและการ load program สมบรณ
พรอมวงแลวครบ...
สวนนองๆทสนใจเกยวกบการเขยนโปแกรมของหนยนตตวนสามารถอานไดในบทความนะครบ ซงจะม Code อนๆอกมากกวา เชน หนยนตเดนตามเสน หนยนตหลบหลกสงกดขวาง หนยนตซโม และอนๆ ลองตดตามในบทความนะครบ พๆทมงานจะเขยนไวใหอานกนครบ
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 23
ตำงรำงรปแบบกำรเคลอนทของหนยนต
รปแบบการเคลอนท Code / ค าสงในการเขยนโปรแกรม
หนยนตหยดอยกบท PORTB = 0x00 PORTD = 0x00
หนยนตเดนหนา PORTB = 0x10 PORTD = 0x80
หนยนตถอยหลง PORTB = 0x20
PORTD = 0x40
หนยนตหมนขวา PORTB = 0x10 PORTD = 0x40
หนยนตหมนซาย PORTB = 0x20 PORTD = 0x80
หนยนตเลยวขวา PORTB = 0x10
PORTD = 0x00
หนยนตเลยวซาย PORTB = 0x00 PORTD = 0x80
หนยนตถอยหลงเลยวขวา PORTB = 0x00
PORTD = 0x40
หนยนตถอยหลงเลยวซาย PORTB = 0x20 PORTD = 0x00
รปแบบการรบสญญาณของ sensor
Sensor L อยทพน สด า (PIND&(1<<PIND2)) = 0
Sensor L อยทพน สขาว (PIND&(1<<PIND2)) = 1
Sensor R อยทพน สด า (PINC&(1<<PINC2)) = 0
Sensor R อยทพน สขาว (PINC&(1<<PINC2)) = 1
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 24
ตวอยางโปรแกรมการทดลอง 1 : /*
2 : Workfile : Robot1.c
3 : */
4 :
5 : #include <avr/io.h> //เปนการเรยกใชงานรจสเตอรและฟงชนตาง 6 :
7 : int main(void) //ฟงชนหลกของภาษาซ
8 : {
9 : DDRB =0XFF; // ก าหนดให Port B เปน output ทงหมด
10 : DDRD =0XFF; // ก าหนดให Port D เปน output ทงหมด
11 :
12 : while(1) // เปนค าสงวนลปในภาษาซ จะวนการท างานในบรรทดท 12-16 13 : {
14 : PORTB=0x10; //ก าหนดใหมอเตอรขวาเดนหนา 15 : PORTD=0x80; //ก าหนดใหมอเตอรซายเดนหนา 16 : }
17 : }
จากโปรแกรมขางตนเราสามารถก าหนดคาของ PortB และ PortD ตามตารางทใหไวดานบน และลองดการเปลยนแปลงการท างานของตวหนวาเปนไปตามทตารางก าหนดไวหรอไม
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 25
ตวอยางตอไปเราจะเรยกใชฟงชนหนวงเวลาหรอ #include <util/delay.h> มาดตวอยางกนเลยครบ
1 : /*
2 : Workfile : Robot2.c
3 : */
4 : #include <avr/io.h> //เปนการเรยกใชงานรจสเตอรและฟงชนตาง 5 : #include <util/delay.h> //เรยกใชงานฟงชนหนวงเวลา 6 : #define F_CPU 11059200UL //ก าคาความถทใชในการหนวงเวลา 11059200 hz
7 : 8 : /*********** delay ******************/
9 : void delay_ms(unsigned int i) //ฟงชน หนวงเวลา 10 : {
11 : for(; i>0; i--) 12 : _delay_ms(1); 13 : }
14 : 15 : /***************** main program ************/
16 : int main(void) //ฟงชนหลกของภาษาซ
17 : {
18 : DDRB =0XFF; // ก าหนดให Port B เปน output ทงหมด
19 : DDRD =0XFF; // ก าหนดให Port D เปน output ทงหมด
20 :
21 : while(1) // เปนค าสงวนลปในภาษาซ จะวนการท างานในบรรทดท 12-16 22 : {
23 : PORTB=0x10; //ก าหนดใหมอเตอรขวาเดนหนา 24 : PORTD=0x80; //ก าหนดใหมอเตอรซายเดนหนา 25 : _delay_ms(500); //หนวงเวลาการท างาน 500มลลวนาท หรอ 0.5 วนาท
26 : PORTB=0x00; //ก าหนดใหมอเตอรขวาหยด
27 : PORTD=0x00; //ก าหนดใหมอเตอรซายหยด
28 : _delay_ms(500); //หนวงเวลาการท างาน 500มลลวนาท หรอ 0.5 วนาท
29 : }
30 : }
จากโปรแกรม Robot2 จะเหนวามอเตอรจะท างานแบบเดนหนาไป 0.5 และหยด 0.5 วนาทสลบกนไป
โจทย 1.เพมเวลา จาก 500 เปน 1000 ดการเปลยนแปลง 2.ใหมอเตอรเดนหนา 500 และถอยหลง 500 3.ใหมอเตอรเดนหนา 500 เลยวขวา 500 เลยวซาย 500 ถอยหลง 500 หยด 500
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 26
ตวอยางตอไปจะเปนการใชงานตวตรวจจบสญญาณ input หรอ sensor
1 : /*
2 : Workfile : Robot2.c
3 : */
4 : #include <avr/io.h> //เปนการเรยกใชงานรจสเตอรและฟงชนตาง 5 :
6 : /***************** main program ************/
7 : int main(void) //ฟงชนหลกของภาษาซ
8 : {
9 : DDRB =0XFF; // ก าหนดให Port B เปน output ทงหมด
10 : DDRD =0XC0; // ก าหนดให Port D7,D6 เปน output D5-D0 เปน input
11 : DDRC =0X00; // ก าหนดให Port D เปน input ทงหมด
12 :
13 : while(1) // เปนค าสงวนลปในภาษาซ จะวนการท างานในบรรทดท 12-16 14 : {
15 : If((PIND&(1<<PIND2)) != 0) //ตรวจจบ sensor ซาย มการท างาน
16 : {
17 : PORTD=0x80; //ก าหนดใหมอเตอรซายเดนหนา 18 : }
19 : else //ตรวจจบ sensor ซาย มการท างาน
20 : {
31 : PORTD=0x00; //ก าหนดใหมอเตอรซายหยด
32 : }
33 :
21 : If((PINC&(1<<PINC2)) != 0) //ตรวจจบ sensor ขวา มการท างาน
22 : {
23 : PORTB=0x10; //ก าหนดใหมอเตอรขวาเดนหนา 24 : }
25 : else //ตรวจจบ sensor ขวา มการท างาน
26 : {
34 : PORTB=0x00; //ก าหนดใหมอเตอรขวาหยด
35 : }
36 : }
37 : }
เมอโหลดโปรแกรมลงตวหนแลว ใหลองเอามอเขาไปใกลกบตว sensor ทง ซายและขวา จะสงเกตเหนวา มอเตอรจะหมนในขณะท sensor มาอยใกลมอเรา เทานเรากไดหนยนตเดนตามเสนแลวครบ
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 27
ตวอยาง SUMO ROBOTKIT /************************************************************** * Workfile : AVR_SUMO_1 Test motor * * Purpose : DC Motor Control * * Copyright : Advance Project Group Co.,Ltd. * * Author : Santichai jaichuen * * Email : [email protected] * * Compiler : AVR Studio/WINAVR * * Target : Atmega8A * * Other Files : PCB AP107-1 * ************************************************************/ #include <avr/io.h> #include <compat/deprecated.h> // Use sbi(), cbi() function #include <util/delay.h> #define F_CPU 11059200UL //11.0592 MHz /*********************************************************/ #define DC_MR_POUT PORTB #define DC_MR_DDR DDRB #define DC_MR_DDR_OUT (1<<DDB4)|(1<<DDB5) #define DC_ML_POUT PORTD #define DC_ML_DDR DDRD #define DC_ML_DDR_OUT (1<<DDD6)|(1<<DDD7) #define MOTOR_RIGHT_F 4 // PIN PB4 #define MOTOR_RIGHT_B 5 // PIN PB5 #define MOTOR_LEFT_B 6 // PIN PD6 #define MOTOR_LEFT_F 7 // PIN PD7 #define ON_MR(x) sbi(DC_MR_POUT, x); #define OFF_MR(x) cbi(DC_MR_POUT, x); #define ON_ML(x) sbi(DC_ML_POUT, x); #define OFF_ML(x) cbi(DC_ML_POUT, x); /******************* delay_ms ********************************/ void delay_ms(uint16_t i) { for (; i>0; i--) _delay_ms(0.65); }
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 28
/*************** Motor Forward ********************/ void Motor_Forward() { ON_ML(MOTOR_LEFT_F); // Motor left start OFF_ML(MOTOR_LEFT_B); ON_MR(MOTOR_RIGHT_F); // Motor right start OFF_MR(MOTOR_RIGHT_B); } /*************** Motor Backword *******************/ void Motor_Backword() { OFF_ML(MOTOR_LEFT_F); // Motor left start ON_ML(MOTOR_LEFT_B); OFF_MR(MOTOR_RIGHT_F); // Motor right start ON_MR(MOTOR_RIGHT_B); } /*************** Motor Stop ***********************/ void Motor_Stop() { OFF_ML(MOTOR_LEFT_F); // Motor left start OFF_ML(MOTOR_LEFT_B); OFF_MR(MOTOR_RIGHT_F); // Motor right start OFF_MR(MOTOR_RIGHT_B); } /*************** Motor Turn Left ******************/ void Motor_Turn_Left() { ON_ML(MOTOR_LEFT_F); // Motor left start OFF_ML(MOTOR_LEFT_B); OFF_MR(MOTOR_RIGHT_F); // Motor right start OFF_MR(MOTOR_RIGHT_B); } /*************** Motor Turn Right *****************/ void Motor_Turn_Right() { OFF_ML(MOTOR_LEFT_F); // Motor left start OFF_ML(MOTOR_LEFT_B);
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 29
ON_MR(MOTOR_RIGHT_F); // Motor right start OFF_MR(MOTOR_RIGHT_B); } /*************** Motor Rotate Left *****************/ void Motor_Rotate_Left() { ON_ML(MOTOR_LEFT_F); // Motor left start OFF_ML(MOTOR_LEFT_B); OFF_MR(MOTOR_RIGHT_F); // Motor right start ON_MR(MOTOR_RIGHT_B); } /*************** Motor Rotate Right *****************/ void Motor_Rotate_Right() { OFF_ML(MOTOR_LEFT_F); // Motor left start ON_ML(MOTOR_LEFT_B); ON_MR(MOTOR_RIGHT_F); // Motor right start OFF_MR(MOTOR_RIGHT_B); } /*************** Main Functions *******************/ int main(void) { DC_MR_DDR = DC_MR_DDR_OUT; // Set Port Output DC_ML_DDR = DC_ML_DDR_OUT; // Set Port Output while (1){ Motor_Forward(); delay_ms(1000); Motor_Stop(); delay_ms(50); Motor_Backword(); delay_ms(1000); Motor_Stop(); delay_ms(50);
ขนตอนการเขยนโปแกรมและทดสอบหนยนตดวย AVR Studio 4
จดท ำโดย WWW.SEMI-SHOP.COM รวมกบ WWW.ROBODKIT.COM หนา 30
Motor_Turn_Left(); delay_ms(2000); Motor_Stop(); delay_ms(50); Motor_Turn_Right(); delay_ms(2000); Motor_Stop(); delay_ms(50); Motor_Rotate_Left(); delay_ms(2000); Motor_Stop(); delay_ms(50); Motor_Rotate_Right(); delay_ms(2000); Motor_Stop(); delay_ms(50); } return 0; }