เกิดอะไรขึ้นเมื่อเราเริ่มต้นจ่ายไฟให้กับบอร์ดไมโครคอนโทรลเลอร์ 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"
ผู้เขียน: Prajin Palangsantikul (www.appsofttech.com)
แน่นอนสิ่งที่เกิดขึ้นคือ ชุดคำสั่งที่อยู่ภายในฟังก์ชัน setup() จะถูกเรียกใช้งานก่อนเป็นลำดับแรก จากนั้นก็จะส่งการทำงานไปยังฟังก์ชัน loop() เพื่อที่จะวนลูปชุดคำสั่งนี้ตลอดการทำงานจนกว่าจะหยุดจ่ายไฟหรือรีเซตไมโครคอนโทรลเลอร์ใหม่อีกครั้ง ฟังก์ชัน setup() ถึงจะกลับมาทำงานใหม่อีกครั้งพร้อมกับเรียกฟังก์ชัน loop()
แต่สิ่งหนึ่งที่นักพัฒนาไมโครคอนโทรลเลอร์บน Arduino อาจลืมไป! ด้วยเหตุผลที่ไมโครคอนโทรลเลอร์ยังคงทำงานได้อย่างปกติ คือ ระหว่างที่คำสั่งต่าง ๆ ที่อยู่ภายในฟังก์ชัน loop() ยังคงทำงานนั้น ทุก ๆ 1024 ไมโครวินาที เราจะต้องสูญเสียเวลาเพื่อกระโดดไปนับเวลา (Timer0 Overflow) เพื่อให้นักพัฒนาโปรแกรมบน Arduino สามารถเรียกใช้งานฟังก์ชันที่เกี่ยวข้องกับเวลา เช่น millis() ได้อย่างราบรื่น
เมื่อรู้ถึงจุดนี้แล้วเราเหล่านักพัฒนาโปรแกรมบน Arduino จะทำอย่างไร? ก็อยู่ที่ท่านครับ
นี่คือโปรแกรมหลักที่ Arduino สร้างขึ้นมา
ภายในฟังก์ชัน init() นั้น Arduino ได้ติดตั้งโมดูล Timer0 เพื่อใช้ในการสร้างฐานเวลาในรูปแบบอินเตอร์รัปต์ ฟังก์ชันนี้ถูกประกาศอยู่ภายในโค้ดโปรแกรม "wiring.c"
ความคิดเห็น
แสดงความคิดเห็น