กำหนดเวลาถึงความละเอียด 100ns ต้องใช้ตัวจับเวลาทำงานที่ 10MHz ไมโครคอนโทรลเลอร์หลายคนควรสามารถรันตัวจับเวลาได้อย่างรวดเร็ว
ปัญหาเกิดขึ้นเมื่อคุณพยายามกำหนดเวลาการส่งสัญญาณ 6 ครั้ง สัญญาณเหล่านี้ทั้งหมดบนสายเดียวกันหรือแต่ละสายที่แตกต่างกัน?
หากพวกเขาทั้งหมดอยู่ในสายเดียวกันนั้นอาจเป็นไปได้ที่จะทำสิ่งนี้อย่างถูกต้องกับ MCU ใด ๆ ที่มีตัวจับเวลา 10MHz เดียว อย่างไร้เดียงสารหัสในการทำเช่นนี้จะมีลักษณะดังนี้:
wait for trigger signal
reset timer
wait for first signal
save timer value
reset timer
....
wait for sixth signal
save timer value
reset timer
ปัญหาคือใช้เวลาในการรีเซ็ตตัวจับเวลา สิ่งนี้ทำให้เกิดปัญหาสองประการ:
เวลาที่วัดได้จะผิดประมาณ 100ns ขึ้นอยู่กับการใช้งานของคุณ อย่างไรก็ตามพวกเขาควรจะผิดอย่างสม่ำเสมอ IE ผิดด้วยจำนวนเดียวกันทุกครั้ง ซึ่งหมายความว่าคุณสามารถชดเชยได้อย่างง่ายดายโดยเพิ่มจำนวนเล็กน้อยในการวัดแต่ละครั้ง
จะมีเวลาน้อยที่สุดที่คุณสามารถวัดได้ หากชีพจรใดถึง 100ns หลังจากที่ก่อนหน้านี้แล้วคุณอาจจะพลาด ฉันไม่รู้ว่ามีอะไรที่คุณสามารถทำได้เกี่ยวกับเรื่องนี้ในซอฟต์แวร์ คุณจะต้องหาไมโครคอนโทรลเลอร์ที่สามารถจัดการพัลส์หลายตัวในฮาร์ดแวร์
ไมโครคอนโทรลเลอร์ตัวใดที่สามารถจัดการกับพัลส์หลายตัวในฮาร์ดแวร์ The Cypress PSoC ! นี่คือไมโครคอนโทรลเลอร์ซึ่งประกอบด้วยบล็อคดิจิตอลที่กำหนดค่าได้ซึ่งหมายความว่าคุณสามารถมีตัวจับเวลาแยกต่างหาก 6 ตัววิ่งแต่ละตัวที่ 60MHz ให้ความละเอียดที่ดีกว่า 20ns
นี่คือตัวอย่างที่ฉันล้มลงอย่างรวดเร็วเพื่อแสดงให้คุณเห็นสิ่งที่คุณสามารถทำได้ ฉันมีตัวจับเวลา 6 ตัวแยกกันทั้งหมดวิ่งออกจากนาฬิกาบัสซึ่งสามารถสูงถึง 67MHz มีพินทริกเกอร์ซึ่งเริ่มการทำงานของตัวจับเวลาทั้งหมดและหมุดอื่น ๆ 6 อันแต่ละอันทำให้เกิดเหตุการณ์การจับภาพในตัวจับเวลา การลงทะเบียนสถานะอนุญาตให้โค้ดของคุณตรวจสอบตัวจับเวลาที่จับชีพจรได้ รหัสสามารถอ่านค่าจากตัวนับ