การใช้งาน MPLAB-X IDE

บทความนี้กล่าวถึงขั้นตอนการเขียนโปรแกรม โค้ดภาษา C ให้กับไมโครคอนโทรลเลอร์ Arduino Uno (ATmega328P) ด้วย MPLAB-X IDE การเขียนโปรแกรมไมโครคอนโทรลเลอร์ Arduino เช่น Uno / Nano ปรกติก็มี Arduino IDE เป็นซอฟต์แวร์ให้เลือกใช้งานกัน ซึ่งก็ใช้งานได้สะดวก แต่ถ้าเราจะเขียนโค้ดภาษา C สำหรับ AVR 8-bit MCU เรายังมีตัวเลือกอื่นๆ เช่น การใช้งาน Atmel AVR Studio 7 แต่เนื่องจากว่า บริษัท Atmel ได้กลายเป็นส่วนหนึ่งของบริษัท Microchip ไปแล้วตั้งแต่ปี ค.ศ. 2016 และทางบริษัทก็แนะนำให้ใช้ MPLAB-X IDE เป็นตัวเลือกใหม่สำหรับนักพัฒนา จึงเป็นทีมาของบทความนี้

ขั้นตอนการทํางาน


1 : ติดตั้ง MPLAB-X IDE

ติดตั้ง MPLAB-X IDE และ XC8 Compiler ตามลิงค์ด้านล่าง



2 : สร้างชนิดของโปรเจค

เมื่อเปิดโปรแกรม MPLAB-X ขึ้นมา ให้คลิกที่เมนู File -> New Project..

สร้างชนิดของโปรเจค



สร้างชนิดของโปรเจค



ที่ส่วน Categories: ให้เลือก Microchip Embedded แล้่วเลือก Projects: เป็น Standalone Project -> Next

สร้างชนิดของโปรเจค



3 : เลือกเบอร์ไมโครคอนโทรลเลอร์


Family เลือกเป็น 8-bit AVR MCUs (Xmega/Mega/Tiny)

เลือกเบอร์ไมโครคอนโทรลเลอร์



เราสามารถเลือกเบอร์ไมโครคอนโทรลเลอร์ตามเบอร์ที่เราต้องการ ด้วยการพิมพ์ชื่อเบอร์ไมโครคอนโทรลลเลอร์ ที่เราต้องการ ที่ช่อง Device โดยจะต้องเป็นเบอร์ที่มี Compiler ได้รองรับแล้ว 


ซึ่งบอร์ด Arduino UNO นั้น ใช้ IC ไมโครคอนโทรลเลอร์ เบอร์ ATmega328P ของ บริษัท Atmel

ATmega328P


Device จึงเลือกเป็น ATmega328P

เลือกเบอร์ไมโครคอนโทรลเลอร์



การเลือกใช้ Tool สำหรับการดีบักและอัพโหลดไฟล์ไปยังบอร์ดไมโครคอนโทรลเลอร์ (ซึ่งมีหลายตัวเลือก เช่น Microchip PICKit 4, Microchip SNAP, J-Link) แต่ในกรณีนี้ให้เราเลือก Simulator ซึ่งจะสามารถจำลองการทำงานของโค้ดได้


Tool เลือกเป็น Simulator

เลือกเบอร์ไมโครคอนโทรลเลอร์


คลิก Next

เลือกเบอร์ไมโครคอนโทรลเลอร์



3 : เลือกตัวแปลงภาษา หรือ Compiler

เราต้องเลือกตัวแปลภาษา หรือ Compiler ที่เราต้องการจะใช้ในโปรเจคนี้ของเรา โปรแกรม MPLAB-X จะแสดง Compiler ที่เคยติดตั้งไว้แล้ว ที่อยู่ภายในเครื่องของเรา ที่เป็น Compiler ของค่ายไมโครชิพ แสดงออกมาให้เห็นทั้งหมด ซึ่งเราสามารถเลือก Compiler ที่เหมาะสมได้ ในที่นี้กำลังจะเขียนโปรแกรมลง ATmega328P ซึ่งเจ้า XC8 สามารถที่จะรองรับได้ ดังนั้้น จึงคลิกเลือก XC8 เพื่อเป็น Compiler สำหรับโปรเจคนี้

เลือกตัวแปลงภาษา หรือ Compiler


เลือก CX8 -> Next

เลือกตัวแปลงภาษา หรือ Compiler



4 : ตั้งชื่อโปรเจค

ตั้งชื่อสำหรับโปรเจกต์ใหม่ และระบุ Folder สำหรับโปรเจกต์ดังกล่าว

Project Name เป็น led_blink -> UTF8 -> Finish

ตั้งชื่อโปรเจค



5 : เขียนโค้ดภาษา C

ที่แท็บ Projects ไปที่ ชื่อโปรเจค ในตัวอย่างชื่อ led_blink

ตั้งชื่อโปรเจค



สร้างไฟล์ main.c และเพิ่มเข้าไว้ในโปรเจกต์ เพื่อทดลองโค้ดตัวอย่าง โดย คลิกขวา ที่ Source Files -> New -> main.c


File Name เป็น main -> Finish



คลิกที่ไฟล์ main.c



โค้ดตัวอย่างเป็นการทำให้ LED ที่อยู่บนบอร์ด Arduino Uno ที่ขา D13 หรือขา PB5 ของ ATmega328P กระพริบได้ การหน่วงเวลา หรือเว้นระยะ จะใช้วิธีที่เรียกว่า Software Delay Loop


Arduino UNO



เขียนโปรแกรมตามโค้ดด้านล่างนี้ 

#include <xc.h>
void sw_delay( uint32_t n) {
    for (uint32_t i=0; i < n; i++) {
        asm("nop");
    }
}
void main(void) {
    DDRB |= (1 << 5); // PB5 pin as output
    while(1) {
        PORTB |= (1<<5);  // output high to PB5 pin
        sw_delay( 1000000ul );
        PORTB &= ~(1<<5); // output low to PB5 pin
        sw_delay( 1000000ul );
    }
    return;
}




คลิก Save



ลองคอมไพล์โค้ด โดย คลิก Build Main Project



ถ้าคอมไพล์โค้ดได้สำเร็จแล้ว จะแสดง BUILD SUCCESSFUL และบรรทัดล่างลงไปจะแสดงที่อยู่ของ ไฟล์ .hex ซึ่งไฟล์นี้เราสามารถนำไปโปรแกรมลงบอร์ดไมโครคอนโทรลเลอร์ได้


ตัวอย่าง ที่อยู่ของ ไฟล์ .hex 

C:/Users/ชื่อผู้ใช้/MPLABXProjects/led_blink.X/dist/default/production/led_blink.X.production.hex


หรือถ้ากดดูที่แท็บ Files (ถัดจาก Projects) led_blink -> dist -> default -> production เราจะมองเห็นจะแสดงที่อยู่ของ ไฟล์ .hex เช่นกัน



ในขั้นตอน Build Project เราจะได้ไฟล์ .hex ซึ่งสามารถนำไปใช้โปรแกรมบอร์ด Arduino Uno เพื่อทดสอบการทำงานของโค้ดในฮาร์ดแวร์จริงได้


6 : อัพโหลดไฟล์ .hex ไปยังบอร์ด Arduino UNO

ติดตั้ง XLoader โดยดาวน์โหลดซอฟต์แวร์ XLoader ได้ที่ :


เมื่อดาว์นโหลดไฟล์เสร็จแล้ว คลายไฟล์ แล้วคลิกเปิดไฟล์ XLoader

.hex คือไฟล์รหัสภาษาเครื่อง (machine code)  เป็นไฟล์ต้นฉบับเลขฐานสิบหกที่มักใช้โดยอุปกรณ์ลอจิกที่โปรแกรมได้เช่นไมโครคอนโทรลเลอร์ มันมีการตั้งค่าข้อมูลการกำหนดค่าหรือข้อมูลอื่น ๆ ที่บันทึกในรูปแบบเลขฐานสิบหก



คลิก … เลือกไฟล์ .hex ที่ได้จากขั้นตอนที่ 5

คลิก Open


Device เลือกเป็น Uno(ATmega328)


เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปที่บอร์ด Arduino UNO


คลิกขวา ที่ Start เลือกไปที่ Device Manager



ไปที่ Ports (COM & LPT) จะพบ Arduino Uno ในตัวอย่างเป็น (COM3) แสดงว่าคอมพิวเตอร์ของเราสามารถ ติดต่อสื่อสารกับ บอร์ด Arduino Uno ได้แล้ว


ที่ COM port เลือก ตามรูปด้านบนในตัวอย่างคือ COM3 (COM แต่ละเครื่องไม่เหมือนกันให้เลือก COM ตามที่ปรากฏ)


คลิก Upload


ถ้าอัพโหลดได้สำเร็จจะแสดง uploaded


ไฟ LED ที่เชื่อมต่อที่ขา PB5 บนบอร์ด กระพริบ ติด-ดับ แสดงว่า การทดสอบการทำงานของโค้ดในฮาร์ดแวร์จริง สําเร็จแล้ว



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