รูปแบบการพัฒนาภาษาโปรแกรมบน Microcontroller
ในการพัฒนาโปรแกรมบน Microcontroller นั้นสามารถมีได้หลากหลายภาษา ไม่ว่าจะเป็น Assembly, C, C++, Basic หรือแม้กระทั่ง Java แต่ที่ได้รับความนิยมมากที่สุดก็ยังคงเป็นภาษา Assembly อาจเนื่องมาจากข้อเด่นหลายๆข้อคือ
ส่วนเครื่องมือเครื่องไม้ที่ใช้สำหรับทดสอบโปรแกรมที่เราเขียนขึ้นมาอาจจำแนกเป็นประเภทต่างๆได้ดังนี้
Program Emulator |
เป็นวงจรที่จำลองตัวมันเองเป็น program memory ซึ่งทำให้เราไม่ต้องโปรแกรม EPROM บ่อยๆ ขั้นตอนก็คือเมื่อเรา compiled source code เสร็จแล้ว (ต้องไม่มี error นะ) เราก็ทำการส่ง source code นี้ไปใสไว้ในตัวมัน (มักเป็น นามสกุล HEX file) ผ่านทาง serial, parallel หรือ USB ก็ตามแต่บริษัทผู้ขาย โปรแกรมมันก็จะเริ่มทำงานทันที ข้อดี ราคาไม่แพง พอหาซื้อมาใช้ได้ ข้อเสีย ทำอะไรไม่ได้มากนอกจากเป็นตัว program emulator เวลาโปรแกรมไม่ทำงานตามที่เราต้องการ ก็ตรวจสอบไม่ได้ว่าผิดตรงไหน( ลองนึกถึงสุภาษิตตาบอดคลำช้าง แล้วจะเข้าใจสภาพได้ดีสุดๆ ) |
Simmulator |
การที่จะพยายามจำลองพฤติกรรมต่างๆ ของ MCU(mircocontroller) ไปไว้บนเครื่อง computer สามารถที่จะทำการเขียนโปรแกรมม, compile และ run เพื่อดูการทำงานของโปรแกรมที่เราเขียนขึ้นมา ข้อดี ถูก ไม่ต้องลงทุนมาก ส่วนมากจะฟรีเพราะ บริษัท microcontroller ต่างๆ มักจะมีชุดพัฒนาให้ download ที่ website ข้อเสีย เมื่อเขียนบน simmulator เสร็จแล้วมักจะเอาไป run จริงๆไม่ได้ต้องทำการแก้ไขอยู่อีกนาน เพราะส่วนใหญ่สิ่งที่ simmulator ทำได้ MCU มักจะทำไม่ได้ แล้วมันก็จะจำลองได้เฉพาะ ตัว MCU เท่านั้น นี่แหล่ะทำให้เกิดปัญหา เวลาเราต่อวงจรลงไปใน board ทดลองนี่สิทำไมมันไม่ work เหมือนตอนมันอยู่บนเครื่อง com นะ |
Emulator |
อืมม อันนี้เจ๋งสุด เพราะมันจำลองตัวมันเองเป็น MCU ได้เหมือนจริงที่สุด เราสามารถดูการทำงานของ source code ที่เราเขียนขึ้นได้จริงๆ บนวงจรทดลองของเรา ทำการ RUN code ทีละบรรทัดก็ได้ หรือว่าจะหยุด ตรงไหนก็ได้ นี่แหล่ะข้อดีของมัน ข้อเสีย ของมันก็คือ แพงสุดขีดดด ราคาเรือนหมื่น ทั้งนั้น เหมาะสำหรับคนเอาจริงที่มีกระเป๋าหนักเท่านั้น |
Incircuit Debugger |
เพราะว่า Emulator มีราคาแพงมาก คนไม่ค่อยมีสตาค์ก็ไม่มีปัญญาซื้อ ผู้ผลิต MCU ก็หาวิธีหลอกล่อใหม่ๆ ด้วยการ ใส่วงจรบางอย่างไว้ใน MCU ทำให้เราสามารถควบคุม MCU run code ทืละบรรทัด หรือ หยุดที่ตำแหน่งหนึ่ง ในขณะที่กำลังทำงานกับวงจรจริงๆ ข้อดี ราคาไม่แพงมาก แต่ก็ยังแพงอยู่เมื่อเทียบระหว่างเงินบาทกับดอลล่าห์ ข้อเสีย เราต้องเสีย memory บางส่วน ขาบางขาของ MCU ขณะที่เราทำการ Debug อันนี้แล้วแต่ประเภทของ MCU ของแต่ละบริษัท |
แต่สำหรับผมจะใช้วิธีการคือ เขียนโปรแกรมขึ้นมาแล้วทดสอบด้วย Simmulator ในส่วนของ Timer หรืออะไรที่ไม่เกี่ยวกับ Hardware ก่อนหลังจากนั้นจึงทดสอบด้วย Incircuit Debugger ในส่วนของโปรแกรมที่ต้องเกี่ยวข้องกับ Hardware ภายนอก เพราะจะได้ประหยัดการ Program เนื่องจาก Flash ก็มีข้อจำกัดของจำนวนครั้งในการโปรแกรมด้วย ส่วนใครจะมีสูตรไหนก็แล้วแต่คนนั้นครับไม่มีตายตัว