วันอาทิตย์ที่ 19 สิงหาคม พ.ศ. 2550

รูปอุปกรณ์ และ ตัวอย่างผลที่แสดงทาง hyper terminal

ภาพแสดงอุปกรณ์ที่ใช้ทดลอง ล่าสุด
เป็นผลที่แสดงความเร็ว และค่าsensor ของ ฟังก์ชัน fn1_1ทาง Hyper terminal


เป็นผลที่ Test ค่าsensor ของ ฟังก์ชัน fn2_1ทาง Hyper terminal

Program วัดความความเร็ว


เป็นฟังก์ชันหลักซึ่งกำหนดค่าการทำงานทั้งหมดของโปรแกรม

เป็นการเซตค่าcounterจากtimer2 เพื่อใช้นับเวลาในการคิดความเร็วเป็นการรับค่าจากปุ่มแล้วนำไปใช้การเลือกเมนู และการทำงานต่างๆ


เป็นการนำค่าที่ได้จากฟังก์ชันจากgetkey2แล้วนำมาเลือกเมนูและเข้าสู้ฟังก์ชันการทำงาน






เป็นฟังก์ชันการทำงานของ fn1_1 ฟังก์ชันนี้เป็นการรับค่าจากsensor ตัวที่1 และตัวที่ 2 มาคำนวณหาความเร็วซึ่งเมื่อคำนวณแล้วจะนำผลออก ทางport serial และ หน้าจอ LCD


เป็นฟังก์ชันtest การรับค่าจาก sensor ตัวที่หนึ่งและสอง และแสดงผลออกทาง port serial

เป็นฟังก์ชันนับเวลาซึ่งจะเข้ามาทำงานในทุกครั้งที่เกิด overflow ของtimer2

โปรแกรมการทำงานทั้งหมดสามารถ download ได้จาก link ทางขวามือ >>>

อินเตอร์รัพท์(Interrupt)

การอินเตอร์รัพท์
- ในระบบที่มีอุปกรณ์ต่างๆหลายชนิดนั้นบางครั้งเราอาจจะสงสัยว่าในขณะที่นาฬิกาของเครื่องเดินไปได้ตลอดเวลาพร้อมๆกับที่เราใช้ง านอย่างอื่นโดยที่เวลาเดินไปอย่างไม่ผิดพลาด หรือว่าเครื่องได้อ่านแผ่นดิสก์อยู่ ในขณะเดียวกับที่เราพิมพ์ข้อมูลผ่านทางแป้นพิมพ์ได้ ซึ่งเสมือนว่าเครื่องสามารถทํางานได้หลายๆอย่างในเวลาเดียวกัน ซึ่งการที่จะทําได้เช่นนี้นั้น ซีพียูจำเป็นต้องมีวิธีการติดต่อกับอุปกรณ์ภายนอกต่างๆอย่าง มีประสิทธิภาพ
- ซึ่งก็คือให้ซีพียูใช้เวลาส่วนใหญ่ในการทำโปรแกรมหลัก และหันมาสนใจอุปกรณ์ภายนอกก็ต่อเมื่ออุปกรณ์ภายนอกส่งสัญญาณ ซีพียู จะหยุดจากการทำงานในโปรแกรมหลักและไปทำงานในโปรแกรมย่อยซึ่งอุปกรณ์นั้นๆร้องขอมา เมื่อเสร็จแล้ว ซีพียูก็จะกลับมาทำโปรแกรมเดิมที่ หยุดไปต่อ ไป ลักษณะเช่นนี้เรียกว่า การอินเตอร์รัพท์
(Interrupt)

ประเภทของการอินเตอร์รัพท์

การอินเตอร์รัพท์สามารถแบ่งได้เป็น 2 ประเภทใหญ่ๆดังนี้คือ

1.Non-maskable Interrupt (NMI) คือ การอินเตอร์รัพท์ที่ซีพียูไม่สามารถปฏิเสธได้ หากมีการอินเตอร์รัพท์ประเภทนี้มา ซีพียูต้องหยุดการทำงานของโปรแกรมที่ทำอยู่ในขณะนั้นโดยไ ม่มีข้อแม้ และเปลี่ยนไปทำงานให้การอุปกรณ์ที่มีการส่งอินเตอร์รัพท์เข้ามา
2.Maskable Interrupt (INT) คือ การอินเตอร์รัพท์ที่ซีพียูสามารถปฏิเสธได้ โดยปรกติ ซีพียูจะมีการกำหนดว่าในขณะนั้น ซีพียูจะอยู่ในภาวะ
Disable Interrupt (DI) หรือ Enable (EI) ถ้าหากว่า ในขณะที่มีการอินเตอร์รัพท์เข้ามานั้น ซีพียูอยู่ในภาวะ Disable Interrupt แล้ว การอินเตอร์รัพท์นั้นก็จ ะได้รับการปฏิเสธไป แต่ถ้าเป็น Enable Interrupt การอินเตอร์รัพท์นั้นก็จะได้รับการสนองตอบ

ขบวนการอินเตอร์รัพท์


ขั้นตอนการเกิดและตอบรับอินเตอร์รัพท์โดยทั่วไปจะเป็นดังนี้
1. วงจรภายนอกส่งสัญญาณ INT มายังซีพียู
2. ถ้าซีพียูทำคำสั่ง enable interrupt มาแล้ว ซีพียู จะตอบรับ ด้วย interrupt acknowledge cycle
3. วงจรภายนอกส่ง อินเตอร์รัพท์เวคเตอร์ ให้ซีพียู
4. ซีพียู เอา อินเตอร์รัพท์เวคเตอร์ นั้นมาเ ป็นตัวชี้ตำแหน่ง ของ คำสั่งใหม่ ที่จะต้องไปทำ (ก่อนกระโดดไป ซีพียู ตัองเก็บ สถานะของตัวเอง ขณะนั้นไว้)
5. กระโดดไปทำยังตำแหน่งนั้น
6. ตอนจบ ของ โปรแกรม interrupt service routine จะต้อง มีคำสั่ง ให้ซีพียู เรียก สถานะที่เก็บไว้ กลับมา แล้ว กระโดด กลับมายัง ตำแหน่งเดิม ก่อนหน้าจะถูก อินเตอร์รัพท์ (กลไก การเก็บสถานะเดิม ก่อน อินเตอร์รัพท์ และ กลไก การกลับมา สู่โปรแกรมเดิม จะขึ้นกับ รายละเอียด ของซีพียู แต่ละตัว)