เกิดอะไรขึ้นเมื่อเราเริ่มต้นจ่ายไฟให้กับบอร์ดไมโครคอนโทรลเลอร์ Arduino?

คอลัมน์ "แกะเกา ARDUINO by APPSOFTTECH"
ผู้เขียน: Prajin Palangsantikul (www.appsofttech.com)


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

        แต่สิ่งหนึ่งที่นักพัฒนาไมโครคอนโทรลเลอร์บน Arduino อาจลืมไป! ด้วยเหตุผลที่ไมโครคอนโทรลเลอร์ยังคงทำงานได้อย่างปกติ คือ ระหว่างที่คำสั่งต่าง ๆ ที่อยู่ภายในฟังก์ชัน loop() ยังคงทำงานนั้น ทุก ๆ 1024 ไมโครวินาที เราจะต้องสูญเสียเวลาเพื่อกระโดดไปนับเวลา (Timer0 Overflow) เพื่อให้นักพัฒนาโปรแกรมบน Arduino สามารถเรียกใช้งานฟังก์ชันที่เกี่ยวข้องกับเวลา เช่น millis() ได้อย่างราบรื่น




        เมื่อรู้ถึงจุดนี้แล้วเราเหล่านักพัฒนาโปรแกรมบน Arduino จะทำอย่างไร? ก็อยู่ที่ท่านครับ


นี่คือโปรแกรมหลักที่ Arduino สร้างขึ้นมา




ภายในฟังก์ชัน init() นั้น Arduino ได้ติดตั้งโมดูล Timer0 เพื่อใช้ในการสร้างฐานเวลาในรูปแบบอินเตอร์รัปต์ ฟังก์ชันนี้ถูกประกาศอยู่ภายในโค้ดโปรแกรม "wiring.c"


ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

สร้างต้นคริสต์มาสด้วย JAVA

ฟังก์ชัน SerialEvent กับ Arduino

การใช้งาน PIC18Fxxxx กับ MPLAB X + XC8 ด้วย Peripheral Libraries (PLIBS)