Posted on Leave a comment

Library (programming) คืออะไร

ในการเขียนโปรแกรม Library หมายถึง code ที่ถูกเขียนเตรียมไว้ โดยที่ programmer สามารถเรียกใช้งาน code ส่วนนี้ได้โดยไม่ต้องเขียนซ้ำ หรือไม่ต้องเขียนเอง เพียงแค่บอกกับ compiler ว่า ให้รวม code ที่อยู่ใน library เข้ามาใน code ของเราด้วย ซึ่งถ้าเป็นภาษา C/C++ ก็จะใช้คำสั่ง #include “filename” โดยที่ filename คือชื่อ file ที่มี code ที่เตรียมไว้

ดังนั้น library จึงมักเป็น code ที่มักถูกเขียนซ้ำๆ หรือ code ที่มีความซับซ้อน หรือ ต้องใช้ความรู้เฉพาะทาง เพื่อลดงานให้กับ programmer จึงได้มีการทำ code และนำมาจัดกลุ่มให้เข้าใจง่าย และสามารถเรียกใช้ได้ถ้าต้องการ เรียกว่า library นั่นเอง

Posted on Leave a comment

IDE: Integrated Development Environment คืออะไร

IDE หรือ Integrated Development Environment คือ software ที่รวมเอา software ที่จำเป็นในการเขียนโปรแกรมมาอยู่ในที่เดียวกัน นั่นคือ โดยปกติแล้วเวลาที่เราจะเขียนโปแกรมอะไรสักอย่างนั้น เราต้องใช้ software หลายตัวร่วมด้วยช่วยกัน เช่น 

  1. text editor คือ software ที่เราใช้เขียน code โดยใช้ software อะไรก็ได้ ที่เขียนตัวหนังสือลงไปได้
  2. compiler คือ software ที่ทำหน้าที่ แปลภาษาที่เราเขียน ซึ่งอาจเป็นภาษา c/c++ หรือภาษาอื่น ๆ ให้เป็นภาษาเครื่อง ที่ computer หรือ microcontroller เข้าใจ ซึ่ง compiler ก็มีหลายตัว ขึ้นอยู่กับว่าเราจะเขียนภาษาอะไร และ โปรแกรมที่เราเขียนนั้นจะไปใช้บนอะไร หรือ microcontroller ตัวไหน
  3. linker คือ software ที่ทำหน้าที่เชื่อม code ที่ compile แล้วเข้าด้วยกันในกรณีที่เราใช้ library 
  4. uploader หรือ programmer คือ software ที่ทำหน้าที่ upload code ที่ compile และ link เสร็จเรียบร้อยแล้ว ใส่เข้าไปใน microcontroller
  5. debugger คือ software ที่ทำหน้าที่ช่วยให้เราเห็น register หรือ memory หรือ สถานการณ์ทำงานของโปรแกรมที่เราเขียนว่าทำงานอย่างไร ช่วยให้เราหาจุดบกพร่องและแก้ปัญหาได้ง่ายขึ้น

ในบางระบบ อาจมีมากกว่าหรือน้อยกว่านี้บ้าง จะเห็นว่ากว่าจะเขียนโปรแกรมจนใช้งานได้นั้นมีขั้นตอน และ software ที่เกี่ยวข้องหลายตัว ดังนั้นเพื่อความสะดวกจึงได้มีการสร้าง software เพื่อรวมการเรียกใช้ software เหล่านี้เข้าด้วยกัน ซึ่งก็คือ IDE หรือ Integrated Development Environment นั่นเอง

Posted on Leave a comment

Microcontroller น่าสนใจ ATmega328P

เราได้รู้จักไมโครคอนโทรลเลอร์ (microcontroller) ในแบบ concept มันมาพอสมควรแล้วจากเรื่อง Microcontroller คืออะไร?โครงสร้างของ microcontroller เป็นอย่างไร? และ Microcontroller ทำงานอย่างไร? คราวนี้เราลองมาทำความรู้จักกับ microcontroller ตัวเป็น ๆ กันดู โดยเรามาเริ่มที่ ATmega328P 

ทำไมเราควรเริ่มที่ตัวนี้ นั่นก็เพราะ microcontroller ตัวนี้ไม่ซับซ้อนมากนัก และเป็นที่นิยมมาช้านาน และถูกนำไปใช้บนบอร์ดที่ได้รับความนิยมมาก ก็คือ Arduino UNO และ Arduino Nano จึงมีตัวอย่างใน internet ให้เรียนรู้มากมาย และมีหลายบริษัทที่นำ microcontroller ตัวนี้มาทำบอร์ดควบคุมที่เข้ากันได้กับ Arduino Nano อยู่มากมายเช่นกัน ทำให้ราคาไม่สูงมากนัก เหมาะสำหรับผู้เริ่มต้นเรียนรู้และทำความเข้าใจเป็นอย่างยิ่ง

Block Diagram แสดงส่วนประกอบต่าง ๆ ของ microcontroller ATmega328P
ที่มา ATmega328P datasheet

จาก Block Diagram ในเอกสาร datasheet ของ ATmega328P จะเห็นว่ามีส่วนประกอบคล้าย ๆ กับที่เคยนำเสนอไปแล้วใน โครงสร้างของ microcontroller เป็นอย่างไร? แต่จะมีหลายส่วนเพิ่มเข้ามา เพื่อทำให้ ATmega328P มีความสามารถมากขึ้น เช่น 

  1. มีการสื่อสารแบบ SPI, TWI(I2C) เพิ่มขึ้นจาก UART ซึ่งเป็นพื้นฐานอยู่แล้ว ทำให้สื่อสารกับอุปกรณ์สมัยใหม่ไม่ว่าจะเป็น sensor หรือ display หรืออื่น ๆ ได้ง่ายขึ้น
  2. มี A/D converter ทำให้ติดต่อกับ อุปกรณ์ที่เป็น analog ได้ง่ายขึ้น
  3. มี Timer/Counter ซึ่งสามารถสร้าง สัญญาณ PWM ที่มักจะใช้ในการควบคุมความเร็วของ dc motor หรือ ความสว่างของ LED ได้ง่ายขึ้น
  4. มี Watchdog ที่ช่วยให้การทำงานของ microcontroller มีความน่าเชื่อถือได้มากขึ้น 

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

Posted on Leave a comment

Microcontroller ทำงานอย่างไร ?

จากเรื่อง Microcontroller คืออะไร? และ โครงสร้างของ microcontroller เป็นอย่างไร? เราได้รู้คร่าว ๆ แล้วว่าคืออะไร ประกอบไปด้วยอะไรบ้าง คราวนี้เราจะมาดูกันว่า หลักการของ microcontroller เป็นอย่างไร

หลักการทำงานของ microcontroller นั้น จริง ๆ แล้วเรียบง่ายมาก ก็คือ เมื่อจ่ายไฟให้กับ microcontroller ตัว microcontroller จะเริ่มทำงานตามโปรแกรมที่เรา(หรือใครสักคน)กำหนดไว้ในส่วนของ program memory และจะทำงานเรียงไปทีละคำสั่งไปเรื่อย ๆ จนกว่าจะหมดโปรแกรม การทำงานก็จะหยุดลง และไม่ทำอะไรอีกจนกว่าจะเอาไฟออก แล้วจ่ายไฟเข้าไปใหม่ หรือกดปุ่ม reset (ถ้ามี) microcontroller ก็จะเริ่มทำงานตามโปรแกรมตั้งแต่ต้นอีกครั้งแล้วก็จะหยุดนิ่งเมื่อคำสั่งในโปรแกรมหมดลงเหมือนเดิม นี่คือหลักการทำงานของตัว microcontroller จริง ๆ แต่ในทางปฏิบัติ แทบจะไม่มีงานไหนเลยที่เราอยากให้ microcontroller ทำจนเสร็จแล้วหยุด หรือถ้าอยากให้มันทำงานอีกครั้งก็ไปกด reset เอา ดังนั้น คนเขียนโปรแกรม ก็ต้องเขียนโปรแกรมให้เมื่อ microcontroller ทำงานตามโปรแกรมเสร็จรอบหนึ่งแล้ว ก็กลับไปทำอีกครั้งโดยอัตโนมัติ โดยจะให้เริ่มทำอีกครั้งตั้งแต่เริ่มต้นเลย หรือให้ทำอีกครั้งแค่บางส่วนก็แล้วแต่กำหนด แล้วให้ทำอย่างนั้นไปเรื่อย ๆ ไม่มีวันจบ เราก็จะได้ไม่ต้องมาคอยกด reset อยู่เรื่อย ๆ นั่นเอง

เปรียบเทียบการกำหนดโปรแกรมให้ microcontroller ทำงาน ภาพซ้าย microcontroller ทำงานตามโปรแกรมที่กำหนดไว้ แล้วหยุด ภาพขวา microcontroller ทำงานในส่วนของ loop วนไปเรื่อย ๆ ไม่มีวันหยุด

ซึ่งโดยทั่วไปแล้ว ก็จะมีบางงานที่เราอยากให้ทำครั้งเดียวก็พอ ไม่ต้องทำอีก (มักจะเป็นเรื่องของการตั้งค่าต่าง ๆ) บางงานเราอยากให้ทำซ้ำไปเรื่อย ๆ คนเขียนโปรแกรม ก็ต้องแบ่งโปรแกรมออกเป็นสองส่วน คือ ส่วนที่ทำครั้งเดียวแล้วไม่ต้องทำอีก เรียกว่า initial หรือ setup อีกส่วนให้ซ้ำไปเรื่อย ๆ ไม่มีวันจบ คือ loop

หวังว่าผู้อ่านจะได้ภาพในใจกันพอสมควรแล้วนะครับว่า microcontroller ทำงานอย่างไร และเราควรจะโปรแกรมมันอย่างไร

Posted on Leave a comment

โครงสร้างของ microcontroller เป็นอย่างไร ?

จากเรื่อง Microcontroller คืออะไร? เราได้รู้คร่าว ๆ แล้วว่า มันคืออะไร อยู่ในอุปกรณ์ประเภทไหนบ้าง สำหรับคนที่สนใจใคร่รู้ เราจะมาดูเพิ่มเติมกันว่า โครงสร้างเป็นอย่างไร และประกอบด้วยอะไรบ้าง

เพื่อให้ microcontroller ทำงานเป็นตัวควบคุมได้ โดยทั่วไปก็จะต้องมีส่วนประกอบอย่างน้อยต่อไปนี้

โครงสร้ง microcontroller ที่แสดงถึง CPU, RAM, Flash, Port IO, Clock, UART
  1. หน่วยประมวลผล (CPU: Central Processing Unit) ทำหน้าที่ในการจัดการข้อมูลตามโปรแกรมที่กำหนดไว้
  2. หน่วยความจำสำหรับประมวลผลข้อมูล (Data Memory) ทำหน้าที่พักข้อมูลที่ใช้ระหว่างการประมวลผล เช่น RAM
  3. หน่วยความจำสำหรับโปรแกรม ( Program Memory) ทำหน้าที่เก็บโปรแกรมที่เราเขียนไว้ให้ CPU ทำงาน เช่น Flash Memory
  4. หน่วยจัดการข้อมูลเข้าและออก (Input Output Ports) ทำหน้าที่จัดการข้อมูลที่ถูกส่งเข้ามาจากภายนอก และข้อมูลเพื่อส่งออกภายนอก
  5. หน่วยจัดการด้านสื่อสาร (Communication) ทำหน้าที่รับส่งข้อมูลให้เป็นไปตามมาตรฐานในการสื่อสารที่กำหนด เช่น UART, USB, I2C เป็นต้น
  6. ตัวกำหนดสัญญาณนาฬิกา (Clock Generator) ทำหน้าที่ส่งสัญญาณเป็นจังหวะเพื่อให้อุปกรณ์แต่ละตัวทำงานสอดคล้องกันอย่างลงตัว เหมือนเครื่องกำหนดจังหวะในการเล่นดนตรีนั่นเอง

นี่เป็นเพียงโครงสร้างง่าย ๆ ของ microcontroller ซึ่งบางตัวอาจมีส่วนประกอบมากกว่านี้ เพื่อให้มีความสามารถมากขึ้น นอกจากนี้ microcontroller ยังถูกแบ่งย่อยออกตามลักษณะการทำงานแต่ละส่วนได้อีกเช่น CISC กับ RISC หรือ Harvard กับ Von Neumann หรือ AVR กับ ARM หรือ 8-bit, 16-bit, 32-bit หรืออื่น ๆ

หวังว่าผู้อ่านจะมีภาพในใจชัดเจนขึ้นนะครับว่าโครงสร้าง microcontroller นั้นเป็นอย่างไร

Posted on Leave a comment

Microcontroller คืออะไร ?

บอร์ดควบคุมที่ใช้ microcontroller เบอร์ ATMega4809

Microcontroller ตามที่ชื่อบอกเลยครับ คือเป็นตัวควบคุมขนาดเล็ก การทำงานหลัก ๆ คือ รับข้อมูล (Input) จากอุปกรณ์อื่น ไม่ว่าจะเป็น sensor หรือ microcontroller ตัวอื่น แล้วนำข้อมูลมาประมวลผลนิดหน่อย แล้วส่งผลที่ได้ (output) ไปควบคุมอุปกรณ์ตัวอื่น ๆ เช่น ส่ง PWM ควบคุมความเร็ว motor, ส่งสัญญาณเพื่อควบคุมการเปิดปิด LED หรือ ส่งข้อมูลเพื่อแสดงทาง display เป็นต้น ที่บอกว่ามีการประมวลผล”นิดหน่อย”ก็เพราะว่า โดยทั่วไปแล้วตัว microcontroller ไม่ได้ถูกออกแบบมาเพื่อประมวลผลที่ซับซ้อนมาก ๆ ถ้าจะต้องมีการประมวลผลมาก ๆ มักจะเป็นหน้าที่ของ microprocessor มากกว่า ซึ่งเราจะพบ microprocessor ได้ใน computer ทั้งที่เป็น desktop และ notebook ต่างๆ ส่วน microcontroller เราจะพบได้ในเครื่องใช้ไฟฟ้าต่าง ๆ ที่มีการทำงานอัตโนมัติ แต่ไม่ซับซ้อนมากนัก เช่น ตู้เย็น แอร์ หม้อหุงข้าว(แบบตั้งโปรแกรมได้) เป็นต้น หรือถ้าเป็นระบบที่มีทั้งการควบคุมและการประมวลผลที่ซับซ้อนก็จะมีทั้ง microprocessor และ microcontroller หลายตัวทำงานร่วมกัน เช่น รถยนต์ เครื่องบิน เป็นต้น

หวังว่าผู้อ่านคงมีภาพในใจมากขึ้นว่า microcontroller คืออะไร แตกต่างจาก microprocessor อย่างไร