|
|
 |
|
| |

บทความ : ไมโครคอนโทรลเลอร์สำหรับผู้เริ่มต้น เขียนโดย อ.จักรกฤษณ์ แสงแก้ว สาขาสารสนเทศศาสตร์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยมหาสารคาม
ผู้เขียนพบปัญหาสำคัญในการศึกษาไมโครคอนโทรลเลอร์สำหรับเยาวชนหรือผู้สนใจในบ้านเมืองไทย
สืบเนื่องจากการไม่มีชุดทดลอง และการไม่มีผู้คอยอธิบายสำหรับผู้เริ่มต้น
จึงทำให้การเรียนรู้และค้นคว้าด้วยตนเองยากลำบาก บางคนท้อไปเลยและเลิกศึกษาค้นคว้าด้านนี้
จึงเป็นที่น่าเสียดายอย่างยิ่ง ส่วนผู้ที่ศึกษาไปแล้วเมื่อเข้าใจมวลความรู้ที่ได้ค้นคว้าแล้ว
แต่มิได้เขียนเป็นคำอธิบายหรือวิธีการที่ง่ายต่อการเข้าใจเอาไว้ จึงทำให้ผู้เริ่มต้นศึกษารุ่นหลัง
ๆ เกิดความยากลำบากและเป็นอย่างนี้ซ้ำแล้วซ้ำเล่า !!
บทความนี้จึงขอเป็นสื่อกลางให้กับผู้สนใจได้มีโอกาสเรียนรู้และศึกษา เมื่อท่านได้ศึกษาจนจบบทความนี้แล้วเกิดแรงศรัทธาในการเรียนรู้เพิ่มขึ้น
ผู้เขียนก็พลอยปิติใจตามไปด้วย ผู้เขียนขอเริ่มต้นบรรยาย โดยมีสาระสำคัญดังนี้
:
จุดประสงค์
เมื่อศึกษาบทความนี้จบแล้วท่านจะสามารถเขียนโปรแกรมให้หลอดไฟกระพริบสลับไปมาด้วยบอร์ดทดลอง
NX-877 โดยใช้ภาษาซี CCSC ของบริษัท MicrochipPIC ได้
ท่านต้องสามารถประกอบชุดทดลองในลักษณะทางกายภาพได้
สามารถโหลดผลลัพธ์จากการคอมไพล์ลงบนไมโครคอนโทรลเลอร์ได้
เปลี่ยนโหมดการทำงานระหว่างการโหลดข้อมูลลงไอซี และโหมดการสั่งให้ชุดคำสั่งเริ่มต้นทำงานบนบอร์ด
NX-877 ได้
เครื่องมือ
บอร์ดทดลองอิเล็กทรอนิกส์ (ผู้เขียนเลือกใช้ของ Inex รุ่น NX-877) ภาพด้านล่างแสดงบอร์ดทดลองรุ่น
NX-877

โปรแกรม Miracle PIC สำหรับโหลดโปรแกรมลงสู่ไอซี เพื่อสั่งให้ทำงานต่อไป
ภาษาซี CCSC ของบริษัท MicrochipPIC
หมายเหตุ : ผู้เขียนอนุมานว่าท่านท่านมีความรู้ภาษาซีพื้นฐานมาบ้างแล้ว
เนื่องจากการเขียนโปรแกรมชุดนี้จะใช้มาตรฐานซี
ขั้นตอนการดำเนินงาน
1. การประกอบชุดบอร์ดทดลองเข้ากับคอมพิวเตอร์ เพื่อทำการโหลดข้อมูลเข้าสู่ไอซี
(ไมโครคอนโทรลเลอร์)
2. การติดตั้งคอมไพล์เลอร์ CCSC
3. การติดตั้งโปรแกรม Miracle PIC สำหรับโหลดข้อมูลเก็บไว้ในไมโครคอนโทรลเลอร์
(IC)
4. การเขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์ด้วยภาษาซี CCSC ของบริษัท MicrochipPIC
5. การโหลดผลลัพธ์ที่ผ่านการคอมไพล์เข้าไปในไมโครคอนโทรลเลอร์ (ไอซี)
6. การเดินสายสัญญาณระหว่าง C0 ของไมโครคอนโทรเลอร์ไปยังหลอด LED
7. การตรวจสอบผลลัพธ์ทางฮาร์ดแวร์
1. การประกอบชุดบอร์ดทดลองเข้ากับคอมพิวเตอร์ เพื่อทำการโหลดข้อมูลเข้าสู่ไอซี
(ไมโครคอนโทรลเลอร์)
ขั้นที่ 1: เนื่องจากบอร์ดทดลอง NX-877 อนุญาตให้โปรแกรมเมอร์โหลดข้อมูลเข้าไปในไมโครคอนโทรลเลอร์ผ่านพอร์ตพรินเตอร์
เราเชื่อมต่อสัญญาณได้ดังภาพนี้

ขั้นที่ 2: สายสัญญาณอีกด้านหนึ่งเชื่อมต่อเข้ากับพอร์ตพรินเตอร์ที่อยู่ด้านหลังคอมพิวเตอร์ของท่าน
แสดงได้ดังภาพต่อไปนี้

ขั้นที่ 3: เสียบปลั๊กหม้อแปลง (Adapter) เข้ากับเต้าไฟ 200 โวลต์
(ไฟบ้าน)

ขั้นที่ 4: ปลายของหม้อแปลงจะมีแจ็คสำหรับเสียบลงไปบนบอร์ดเพื่อจ่ายไฟเลี้ยง
ให้ท่านเสียบลงบอร์ดทดลองดังภาพต่อไปนี้

ขั้นที่ 5: เปิดสวิตซ์ไฟ เพื่อปล่อยกระแสไฟฟ้าเข้าไปเลี้ยงบอร์ดทดลอง
โดยการโยกสวิตซ์และดันขึ้นไปด้านบน ดังภาพต่อไปนี้

2. การติดตั้งคอมไพล์เลอร์ CCSC
ในการเขียนโปรแกรมสำหรับควบคุมอุปกรณ์ไมโครคอนโทรลเลอร์สามารถเลือกใช้งานได้หลากหลายภาษา
(เพราะการพัฒนาที่ต่อเนื่องทำให้เรามีตัวเลือกเยอะขึ้นกว่าอดีตที่ต้องพัฒนาด้วยภาษาเครื่อง)
บทความนี้เลือกใช้คอมไพล์เลอร์ CCSC ของบริษัท MicrochipPIC
ขั้นที่ 2.1 : ให้ท่าน Double Click ที่ไฟล์ PcWHUpd 3.221.exe ดังภาพต่อไปนี้

ขั้นที่ 2.2: หลังจากนั้นจะพบกับวินโดวส์แสดงข้อความต้อนรับดังภาพต่อไปนี้

ขั้นที่ 2.3: ขั้นตอนนี้เป็นการแจ้งเตือนเกี่ยวกับลิขสิทธิ์ผลิตภัณฑ์
แสดงได้ดังภาพต่อไปนี้
ขั้นที่ 2.4: ลำดับถัดมาเป็นการกำหนดไดเร็คทอรี่สำหรับการติดตั้ง
ในตัวอย่างนี้กำหนดเป็นค่าปกติของโปรแกรม แสดงได้ดังนี้
ขั้นที่ 2.5: ขั้นตอนเตรียมพร้อมที่จะติดตั้ง
ขั้นที่ 2.6: ขั้นตอนการคัดลอกไฟล์ต่าง ๆ ที่จำเป็นสำหรับคอมไพล์เลอร์
CCSC ลงบนระบบคอมพิวเตอร์ของท่าน แสดงได้ดังนี้
ขั้นที่ 2.7: แจ้งข้อความให้ทราบว่าท่านต้องการเชื่อมต่อโปรแกรม CCSC
เข้ากับ MPLAB หรือไม่ ตัวอย่างนี้ผู้เขียนไม่ได้ใช้ MPLAB จึงตอบ No
ขั้นที่ 2.8: แสดงรายละเอียดที่ได้มีการติดตั้งลงไปแล้ว
ขั้นที่ 2.9: ติดตั้งเสร็จสมบูรณ์
ขั้นที่ 2.10: เมื่อติดตั้งเสร็จเรียบร้อย ท่านจะพบไอคอนเพิ่มขึ้นบนหน้าจอเดสท็อป
และปรากฎในเมนูของวินโดวส์ ดังภาพนี้
3. การติดตั้งโปรแกรม Miracle PIC สำหรับโหลดข้อมูลเก็บไว้ในไมโครคอนโทรลเลอร์
(IC)
โปรแกรมสำหรับโหลดข้อมูลเก็บไว้ในไมโครคอนโทรลเลอร์มีให้เลือกใช้หลายผลิตภัณฑ์
เช่น EPicWin และ Miracle เป็นต้น ในตัวอย่างนี้ผู้เขียนเลือกใช้ Miracle
ซึ่งเป็นผลิตภัณฑ์ของบริษัท INex ประเทศไทย
ขั้นที่ 3.1: ดับเบิ้ลคลิ๊กที่ไฟล์ mPIC_1.62 Setup ดังภาพต่อไปนี้
(ท่านอาจใช้เวอร์ชั่นที่ใหม่กว่านี้ได้)

ขั้นที่ 3.2: เนื่องจาก MiraclePIC ใช้โปรแกรม Winzip ในการบีบอัด
ดังนั้นจึงแสดงคำว่า WinZip Self-Extractor ดังภาพต่อไปนี้
ขั้นที่ 3.3: เริ่มต้นติดตั้ง
ขั้นที่ 3.4: ขั้นตอนการคัดลอกไฟล์เข้าสู่ระบบคอมพิวเตอร์ของท่านแสดงได้ดังนี้
ขั้นที่ 3.5: ตั้งชื่อโปรแกรมโฟลเดอร์ เพื่อปรากฎในเมนูหลักของวินโดวส์
ตัวอย่างนี้ใช้ค่าปกติ แสดงได้ดังนี้
ขั้นที่ 3.6: เมื่อติดตั้งโปรแกรม MiraclePIC เสร็จเรียบร้อย ท่านจะพบไอคอนเพิ่มขึ้นบนหน้าจอเดสท็อป
และปรากฎในเมนูของวินโดวส์ ดังภาพนี้
4. การเขียนโปรแกรมควบคุมไมโครคอนโทรลเลอร์ด้วยภาษาซี CCSC
ขั้นที่ 4.1: ให้ท่านคลิ๊กไอคอน PIC C Compiler ดังภาพต่อไปนี้
ขั้นที่ 4.2: เลือก New->Manual Create

ขั้นที่ 4.3: ตั้งชื่อไฟล์และเบอร์ไอซีที่ท่านใช้งาน ถ้าท่านใช้ไอซีเบอร์
PIC16F877 ให้เลือกไอซีเบอร์ดังกล่าว แต่เนื่องจากผู้เขียนได้เปลี่ยนไอซีเบอร์
18F458 ลงไปแทน ซึ่งมีความสามารถคล้ายคลึงกันต่างที่มีหน่วยความจำมากกว่า
ศึกษาข้อแตกต่างระหว่างไอซีเบอร์ดังกล่าวได้จากคู่มือไอซี (Data Sheet)
ขั้นที่ 4.4: ยังไม่มีไฟล์ปรากฎท่านต้องการสร้างมั้ย ? ตอบใช่เพื่อสร้างโปรเจ็คใหม่
ขั้นที่ 4.5: ให้ท่านพิมพ์โค๊ดดังภาพด้านล่างนี้

เนื่องจากผู้เขียนได้เปลี่ยนไอซีเบอร์ 18F458 แทนเบอร์ 16F877 ดังนั้นส่วน
include ภายในซอร์สโค๊ดจึงต้องเปลี่ยนตามเบอร์ของคอนโทรลเลอร์ ขอให้ท่านป้อนเบอร์
16F877.h หากท่านใช้ไอซีเบอร์ดังกล่าว
ท่านสามารถคัดลอกซอร์สโค๊ดลงในโปรแกรมของท่านด้วยข้อมูลด้านล่างนี้ !!
| ซอร์สโค๊ด |
#include <18F458.h>
#fuses HS,NOLVP,NOWDT,PUT,NOPROTECT
#use delay(clock=20000000)
#use fast_io(c)
main()
{
set_tris_c(0x00);
while (1){
output_high(pin_c0);
delay_ms(500);
output_low(pin_c0);
output_ms(500);
}
} |
ขั้นที่ 4.6: ขั้นการคอมไพล์ เลือก Compile -> Compile F9 หรือกดปุ่ม
F9 ได้เช่นเดียวกัน
ขั้นที่ 4.7: คอมไพล์เสร็จเรียบร้อยจะแสดงวินโดวส์ดังภาพต่อไปนี้
ภาพนี้เป็นการแสดงรายละเอียดเกี่ยวกับการคอมไพล์ทั้งหมด โดยจะบอกจำนวนรอมที่ใช้งาน
หรือจำนวนแรมที่ได้ใช้งานไปแล้ว ตัวอย่างนี้โค๊ดของเราต้องการสั่งให้ไฟกระพริบเท่านั้น
ดังนั้นแทบไม่ได้ใช้ทรัพยากรของฮาร์ดแวร์มากเลย ผลการคอมไพล์จะแตกต่างกันไปตามจำนวนโค๊ดหรือวิธีการในการเขียนของโปรแกรมเมอร์
5. การโหลดผลลัพธ์ที่ผ่านการคอมไพล์เข้าไปในไมโครคอนโทรลเลอร์ (ไอซี)
ขั้นที่ 5.1: เลือกไอคอน Miracle Pic 1.62

ขั้นที่ 5.2: คลิ๊ก File -> Open และเลือกไฟล์ example01.hex

เนื่องจากปกติการคอมไพล์โค๊ดภาษาซีภายในระบบปฏิบัติการวินโดวส์จะมีผลลัพธ์เป็น
.exe แต่ผลลัพธ์จากการคอมไพล์ไฟล์ในงานคอนโทรลเลอร์จะให้ผลลัพธ์เป็น .hex
ย่อมาจาก hexadicimal หมายถึงเลขฐานสิบหก ซึ่งไฟล์ดังกล่าวจะเก็บไว้ในไดเร็คทอรี่เดียวกับซอร์สโค๊ดที่ท่านได้ตั้งไว้ในตอนเริ่มสร้างโปรเจ็ค

รูปไฟล์ example01.hex ซึ่งผ่านการคอมไพล์จาก CCSC แล้ว
ขั้นที่ 5.3: เนื่องจากการประกาศส่วนหัวที่ซอร์สโค๊ด จะบังคับให้ค่าที่ใช้ในการโหลดข้อมูลลงบนไอซีเป็นไปตามที่กำหนดเอาไว้ในเฮดเดอร์ดังกล่าว
ซึ่งท่านสามารถตรวจสอบรายละเอียดได้โดยการคลิ๊กที่ View -> Configuration
จะได้ผลลัพธ์ดังภาพต่อไปนี้

รายละเอียดส่วนนี้ผู้อ่านสามารถข้ามไปได้ในตอนเริ่มต้น และในบทหลัง ๆ เราจะทำความเข้าใจเกี่ยวกับตัวเลือกแต่ละตัวว่าทำงานอย่างไร
ขั้นที่ 5.4: กดสวิตซ์บอร์ดทดลองให้ปรากฎเป็นไฟสีแดง ซึ่งเป็นโหมดการบันทึกไฟล์
.HEX ลงบนไมโครคอนโทรลเลอร์ แสดงได้ดังภาพต่อไปนี้

ขั้นที่ 5.5: เลือกคลิ๊กบนภาพ
เพื่อทำการโหลดไฟล์ HEX ซึ่งเป็นลัพธ์จากการคอมไพล์เข้าสู่ไมโครคอนโทรเลอร์
6. การเดินสายสัญญาณระหว่าง C0 ของไมโครคอนโทรเลอร์ไปยังหลอด LED
ขั้นที่ 6.1: ที่ขาของ Port C ให้เลือกช่อง 0 และเสียบสายไฟลงในช่องดังกล่าว
แสดงได้ดังภาพต่อไปนี้

ขั้นที่ 6.2: ที่ช่องเสียบเพื่อใช้งานหลอด LED ให้ท่านเชื่อมสายไฟมายังหลอด
LED แสดงได้ดังภาพต่อไปนี้

ขั้นที่ 6.3: ผลลัพธ์ของการเดินสายสัญญาณแสดงได้ดังภาพต่อไปนี้
7. การตรวจสอบผลลัพธ์ทางฮาร์ดแวร์
ขั้นที่ 7.1: ขั้นตอนสุดท้ายเป็นการตรวจสอบผลลัพธ์ว่าฮาร์ดแวร์ได้ทำงานตามที่ได้เขียนโปรแกรมหรือไม่
ให้ท่านกดสวิตซ์สลับกลับเป็นไฟสีเขียว แสดงถึงโหมดซีพียูเริ่มต้นทำงาน แสดงได้ดังภาพต่อไปนี้
ขั้นที่ 7.2: ถ้าหลอดไฟที่บอร์ดทดลองกระพริบดังภาพด้านล่างต่อไปนี้
แสดงว่าโปรแกรมได้ทำงานอย่างถูกต้องแล้ว หากไม่เป็นไปตามนี้อาจมีสาเหตุจากสายต่อระหว่างขา
C0 ของไมโครคอนโทรลเลอร์และหลอด LED ให้ตรวจสอบในรายละเอียดดังกล่าวเพิ่มเติม
สรุปผล
บทความนี้ผู้เขียนได้บรรยายสำหรับผู้เริ่มต้น หวังเป็นอย่างยิ่งว่าท่านจะมองเห็นภาพโดยรวมของการประยุกต์ใช้งานไมโครคอนโทรเลอร์ในด้านต่าง
ๆ และยังหวังต่อไปว่าบทความนี้จะกระตุ้นให้เกิดการเรียนรู้ของเยาวชนในชาติไทย
ซึ่งถือว่าเป็นฐานกำลังสำคัญต่อไปในอนาคต
|
|
|

|
|