อะไรคือความแตกต่างระหว่างการขัดจังหวะการเปลี่ยนแปลงและการขัดจังหวะภายนอกบน PIC


11

อะไรคือความแตกต่างของฟังก์ชั่นระหว่าง IOC และ EXT Interrupt บน PIC? ขณะนี้ฉันใช้ PIC12F1822 และนอกเหนือจากการตรวจสอบเลเยอร์เพิ่มเติมที่คุณต้องทำกับ IOC (เช่นพินที่ทำให้เกิดการขัดจังหวะ) ทั้งสองนั้นเหมือนกัน

อะไรคือความแตกต่างในทางปฏิบัติถ้ามี? เมื่อไหร่ที่คุณจะใช้อันใดอันหนึ่ง?

คำตอบ:


8

ดูเอกสารนี้ซึ่งระบุว่า: -

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


5

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


5

ความแตกต่างที่ใหญ่ที่สุดสามประการระหว่างการเปลี่ยนแปลงการขัดจังหวะการเชื่อมต่อและหมุดการขัดจังหวะภายนอก:

  1. หมุดขัดจังหวะภายนอกอนุญาตให้ซอฟต์แวร์ระบุว่าควรขัดจังหวะโดยขอบที่เพิ่มขึ้นหรือขอบตก ถ้าเช่นหมุดอยู่ในระดับต่ำและมีใครสนใจขอบตกเท่านั้นการขัดจังหวะจะไม่ถูกกระตุ้นจนกว่าหมุดจะสูงขึ้นและล้มลงอย่างไม่แน่นอน เมื่อใช้อินเตอร์รัปต์ออนเปลี่ยนเราจะต้องปลุกทั้งสองเหตุการณ์
  2. หมุดอินเตอร์รัปต์ภายนอกมีบิตสถานะการล็อคแต่ละรายการ แม้ว่าอินพุตพัลส์จะมาและไปก่อนที่ซอฟต์แวร์จะมีโอกาสตอบกลับซอฟต์แวร์จะยังคงพบว่าเกิดขึ้นและตอบสนองอย่างเหมาะสม
  3. การอ่านพอร์ต I / O ซึ่งเปิดใช้งานการขัดจังหวะการเปลี่ยนพินในเวลาที่การเปลี่ยนแปลงอินพุตอาจส่งผลให้การขัดจังหวะการเปลี่ยนพินไม่ทำงาน ในทางตรงกันข้ามการอ่านพอร์ต I / O ที่เชื่อมต่อกับขาขัดจังหวะภายนอกจะไม่มีผลกระทบต่อการขัดจังหวะ

การขัดจังหวะภายนอกของ PIC นั้นหลากหลายและเชื่อถือได้มากกว่าการขัดจังหวะการเปลี่ยนพินทั่วไป ฉันขอแนะนำให้ใช้แบบเดิมเมื่อใช้งานได้จริง


3

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


อย่างน้อยสำหรับPIC12F1822ที่กล่าวถึง OP, IOC ยังสามารถกำหนดค่า (กำหนดโดยผู้ใช้) สำหรับการเรียกใช้ที่ขอบที่เพิ่มขึ้น, ขอบที่ลดลงหรือทั้งสองอย่าง (มาตรา 13) ดังนั้นสำหรับฉันความแตกต่างเพียงอย่างเดียวก็คือการขัดจังหวะภายนอกนั้นสามารถกำหนดค่าให้เรียกใช้การตรวจจับขอบทั้งสองแบบได้
PetPaulsen

2

การขัดจังหวะการเปลี่ยนแปลงโดยทั่วไปจะใช้เวลาครึ่งไบต์ของ I / O ซึ่งการขัดจังหวะภายนอกโดยทั่วไปจะใช้สำหรับแต่ละบิต อย่างที่คุณพูดไปแล้วสิ่งหนึ่งที่คุณต้องทำใน IOC ISR คือการคิดว่าบิต (หรือบิต) เปลี่ยนแปลงไป

IOC ยังใช้งานได้ยากขึ้นไปอีก มีความจำเป็นที่จะต้องอ่านพอร์ตก่อนเปิดใช้งานการขัดจังหวะและสำคัญยิ่งกว่าในการอ่านพอร์ตภายใน ISR! หากคุณมีสัญญาณที่เปลี่ยนแปลงช้าและคิดว่าคุณสามารถตั้งค่าสถานะภายใน ISR และอ่านในภายหลังนอก ISR ลองคิดใหม่! การอ่านพอร์ต (หรือบิตใด ๆ บนพอร์ตถ้าฉันจำได้อย่างถูกต้อง) รีเซ็ตสลักบนตัวเปรียบเทียบที่เรียกการขัดจังหวะ หากคุณไม่เคลียร์ภายใน ISR มันจะทำการ retrigger ทันทีเมื่อคุณออกจาก ISR ถ้าคุณจำได้ว่าทำสิ่งนี้มันก็ดี แต่ถ้าคุณลืมและคิดว่าคุณสามารถอ่านพอร์ตเมื่อคุณไปถึงมันคุณจะรู้สึกหงุดหงิดเล็กน้อยจนกว่าคุณจะจำได้ว่าอ่านใน ISR

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.