Microcontrollers - สถานะการส่งออกเป็นค่าคงที่หรือมัลติเพล็กซ์หรือไม่?


14

เห็นได้ชัดว่า PWM ต้องการทรัพยากรการคำนวณ (และไม่สามารถทำได้พร้อมกันกับกระบวนการอื่น ๆ ) แต่ถ้าฉันตั้งพินเป็นเอาท์พุท 5V หรือ 0V สถานะเหล่านี้จะคงที่หรือไม่หรือพวกเขา "รีเฟรช" ซ้ำ ๆ ?

มันยากที่จะอธิบายในข้อความดังนั้นฉันจึงคิดถึงคำถามของฉัน ลองนึกภาพฉันมีแก้วในมือของฉันและได้รับคำแนะนำให้วางบนโต๊ะ จากนั้นฉันได้รับคำแนะนำให้นั่งลงบนเก้าอี้

แก้วบนโต๊ะเป็นสถานะ ฉันจะวางแก้วไว้บนโต๊ะหรือไม่หรือฉันหยิบมันขึ้นมาแล้วนั่งลงแล้วทำซ้ำอย่างรวดเร็วเพื่อให้คุณไม่รู้สึกว่าแก้วถูกถอดออกจากโต๊ะหรือไม่?


หรือบางทีอาจจะง่ายกว่านั้นไมโครคอนโทรลเลอร์จะ "ลืม" ถ้าคุณต้องการเกี่ยวกับสถานะของพินเว้นแต่ว่าคุณจะตั้งโปรแกรมการเปลี่ยนแปลงสถานะอย่างชัดเจนหรือไม่?

หวังว่าฉันจะทำให้มันสับสนเท่าที่จะทำได้


4
+1 คำถามที่น่าสนใจแม้ว่าข้อความแรกของคุณไม่ถูกต้องและแนวคิดเกี่ยวกับฮาร์ดแวร์ PWM คือเพื่อให้โปรเซสเซอร์ไม่ต้องเกี่ยวข้องตลอดเวลา แต่ทิ้งไว้อย่างนั้นและฉันมั่นใจว่าบางคนจะมีคำอธิบายที่ดีว่ามันทำงานอย่างไร
PeterJ

ฉันคิดว่า PWM เป็นตัวประมวลผลที่เปลี่ยนเวลารอบสูง / ต่ำ ด้วยวิธีนี้ดูเหมือนว่าโปรเซสเซอร์มีส่วนร่วมโดยตรง - อย่างน้อยเวลาที่สถานะเปลี่ยนไป
sherrellbc

1
ในการเปลี่ยนรอบการทำงานจาก 10% เป็น 20% ซีพียูจะต้องเกี่ยวข้อง แต่เพียงไม่กี่รอบเท่านั้นที่จะเปลี่ยนการลงทะเบียน สำหรับฮาร์ดแวร์ PWM บอกว่าเมื่อเปลี่ยนเป็น 20% แม้ว่าฮาร์ดแวร์ความถี่ PWM เป็น 1MHz จะไม่มีผลต่อโปรเซสเซอร์อีกต่อไป
PeterJ

คุณมีลิงค์ที่ดีไปยังเอกสารเกี่ยวกับการทำงานของไมโครคอนโทรลเลอร์ในระดับที่ต่ำกว่าหรือไม่? ฉันไม่เข้าใจการอ้างอิงของคุณไปยังการลงทะเบียนดังนั้นไม่สามารถชื่นชมคำตอบเหล่านี้ได้อย่างเต็มที่
sherrellbc

1
ไม่สับสนมาก พยายามให้หนักขึ้น!
radagast

คำตอบ:


16

วิธีที่ฉันตีความคำถามไม่มีส่วนเกี่ยวข้องกับ PWM ขออภัยถ้าฉันออกจากฐาน แต่ดูเหมือนว่าคุณจะใช้มันเป็นเพียงตัวอย่าง

เกือบทุกประเภทของไมโครคอนโทรลเลอร์และอุปกรณ์ที่ใช้ I / O ใช้ latch / FF เพื่อขับวงจรเอาท์พุท สิ่งนี้หมายความว่าเมื่อคุณตั้งค่าสถานะมันจะอยู่ในสถานะนั้น ไม่เหมือน DRAM ที่สถิติเอาต์พุตต้อง "รีเฟรช" อย่างต่อเนื่องเพื่อให้อยู่ในสถานะของพวกเขา

จากตัวอย่างแก้วของคุณฉันไม่เคยเห็นฮาร์ดแวร์ใด ๆ ที่จะหยิบขึ้นมาและวางกระจกบนโต๊ะซ้ำ ๆ มันจะวางแก้วบนโต๊ะและปล่อยไว้ที่นั่นจนกว่าจะมีการร้องขอการเปลี่ยนสถานะ

กลับไปที่ PWM (ในกรณีที่คุณต้องการถามเกี่ยวกับ PWM) ไม่ว่าคุณจะ bitbang มันหรือไมโครคอนโทรลเลอร์ของคุณมีฮาร์ดแวร์เฉพาะตามที่โพสต์อื่น ๆ ที่ระบุไว้บล็อก I / O จะเข้าถึงและแก้ไขได้เฉพาะในกรณีที่มีการร้องขอการเปลี่ยนแปลงสถานะโดยการเรียกใช้รหัสหรืออุปกรณ์ต่อพ่วง PWM


นี่เป็นคำถามของฉันอย่างแม่นยำแม้ว่าจะมีไมโครคอนโทรลเลอร์จำนวนมากที่ฉันไม่ทราบว่าฉันไม่เข้าใจ
sherrellbc

3
เพียงแค่เก็บจมูกของคุณในเอกสารข้อมูลการทดลองและถามคำถาม คุณจะได้รับการแขวนของมัน
Kris Bahnsen

11

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


และเรากำลังก้าวหน้า! ขอขอบคุณที่สมเหตุสมผลมากขึ้นในขณะนี้ ขอขอบคุณ!
sherrellbc

10

ไมโครคอนโทรลเลอร์ที่ทันสมัยส่วนใหญ่มีอุปกรณ์ต่อพ่วง PWM สำหรับฮาร์ดแวร์โดยเฉพาะซึ่งดูแล PWM อาจคล้ายคลึงกันอย่างคร่าวๆ:

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

ในการเปรียบเทียบของคุณมันจะเป็นเหมือนคนอื่นกำลังถือแก้วคุณสั่งให้พวกเขาวางไว้บนโต๊ะในขณะที่คุณมีอิสระที่จะนั่งบนเก้าอี้

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

นี่คือแผนภาพรูปแบบของที่เป็นที่นิยมไมโครคอนโทรลเลอร์ 8 บิตที่PIC16F690 สังเกตเห็นอุปกรณ์ต่อพ่วงที่จัดที่ด้านล่าง:

ป้อนคำอธิบายรูปภาพที่นี่


ฉันไม่ได้ตระหนักถึงส่วนประกอบต่อพ่วงที่มีอยู่ ดังนั้นส่วนประกอบเหล่านี้จึงเป็นตัวประมวลผลขนาดเล็กหรือไม่ มันทำให้รู้สึกที่ดีสิ่งต่าง ๆ อยู่
sherrellbc

ไม่ใช่ตัวประมวลผลไม่มี - อุปกรณ์ต่อพ่วงเป็นเหมือนบล็อกฮาร์ดแวร์เฉพาะที่ออกแบบมาโดยเฉพาะเพื่อทำงานบางอย่าง เช่นไมโครทั่วไปจะมีอุปกรณ์ต่อพ่วงบนบอร์ดเช่น ADC, PWM, ตัวจับเวลา, UART, SPI และอื่น ๆ
Oli Glaser

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

2
ฉันเพิ่มไดอะแกรมของไมโครทั่วไป - จุดเริ่มต้นที่ดีในการอ่านคือแผ่นข้อมูลซึ่งฉันเชื่อมโยงด้วย
Oli Glaser

@sherrellbc ซึ่งเป็นที่ที่โปรเซสเซอร์และไมโครโปรเซสเซอร์แตกต่างกัน ใน µC คุณจะเห็นได้ว่าเช่น RAM, ROM, ALU, พอร์ตอนุกรม ฯลฯ รวมอยู่ในชิปเดียวกัน ในพีซีคุณรู้ว่าโปรเซสเซอร์เชื่อมต่อภายนอกกับวงจรดังกล่าว
chwi

5

คุณกำลังตั้งสมมติฐานบางอย่างที่ไม่ถูกต้อง ใช่คุณทำให้คำถามสับสนเท่าที่จะเป็นไปได้ อย่างจริงจัง.

PWM สามารถทำได้พร้อมกันกับกระบวนการอื่น ๆ หากทำในซอฟต์แวร์คุณใช้การขัดจังหวะตัวจับเวลาเพื่อสร้างสัญญาณ PWM บนพิน GPIO การขัดจังหวะอื่น ๆ สามารถเรียกใช้ได้และกระบวนการหลักกำลังทำสิ่งที่ไม่เกี่ยวข้อง นอกจากนี้ MCU จำนวนมากสามารถทำ PWM โดยตรงในอุปกรณ์ต่อพ่วงจับเวลาปล่อยให้ MCU ทำสิ่งอื่น ๆ

สำหรับพิน I / O จะมีมัลติเพล็กซ์ แต่คุณเป็นผู้ควบคุมวิธีการทำมัลติเพล็กซ์นั่นไม่ใช่ปัญหาจริงๆ


ฉันเข้าใจความคิดเห็นของคุณเกี่ยวกับการขัดจังหวะตัวจับเวลา PWM - นั่นสมเหตุสมผล ด้วยวิธีนี้หน่วยประมวลผลเกี่ยวข้องเฉพาะในเวลาที่มันเปลี่ยนสถานะเอาท์พุท แม้ว่าคุณจะบอกว่าหมุด I / O นั้นทำหน้าที่เป็นมัลติเพล็กซ์ - ดังนั้นถ้าฉันตั้งโปรแกรมคอนโทรลเลอร์ให้ส่งออกพิน HIGH แล้วทำการคำนวณอื่น ๆ ที่ไม่เกี่ยวข้องจากนั้นพินจะถูกตั้งค่าเป็น LOW ชั่วขณะในขณะนั้น
sherrellbc

@sherrellbc คุณเป็นผู้ควบคุมวิธีการที่หมุดมัลติเพล็กซ์ โดยปกติแล้วคุณจะกำหนดค่าในเวลาบูตและจะไม่เปลี่ยนแปลงหลังจากนั้น ดังนั้นจะไม่ "ต่ำชั่วขณะ" เว้นแต่คุณจะบอกให้ทำเช่นนั้นโดยเฉพาะ

ฉันขอโทษถ้าโดยการเพิ่มตัวอย่าง PWM ฉันสับสนผู้อ่าน จุดประสงค์ของคำถามนี้คือการพิจารณาว่าหมุด I / O ที่ตั้งค่าไว้เป็น HIGH นั้นถูกควบคุมโดยมัลติเพล็กซ์หรือไม่ (เช่นเพราะว่ามันจะต้อง "รีเฟรช" พินตลอดเวลาและทำสิ่งเดียวในเวลาเดียวกัน) อย่างไรก็ตามตอนนี้ฉันรู้แล้วว่ามีไมโครคอนโทรลเลอร์มากมายที่ฉันไม่เข้าใจ (อุปกรณ์ต่อพ่วง) ดังนั้นจึงเป็นไปได้สำหรับฉันว่าคำตอบคือไม่พินเอาต์พุตถูกตั้งค่าเป็นสถานะและยังคงอยู่ในสถานะนั้นจนกว่าจะเปลี่ยนแปลงตลอดเวลา
sherrellbc

1

หมุด I / O ส่วนใหญ่บนไมโครคอนโทรลเลอร์เป็นมัลติฟังก์ชั่น แต่ฉันจะไม่เรียกมันว่ามัลติเพล็กซ์

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

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


พวกเขาจะเป็นมัลติเพล็กซ์หากหน่วยประมวลผลตั้งค่าลบค่านั้นปฏิบัติตามคำแนะนำอื่น ๆ จากนั้นวนรอบและตั้งค่าเดิมอีกครั้ง นี่คือสาระสำคัญของคำถามของฉัน อย่างไรก็ตามจากคำตอบข้างต้นมีหลาย perihperals ที่ beform หน้าที่เหล่านี้และหน่วยประมวลผลไม่มีอะไรเกี่ยวข้องกับมันจนกว่าจะได้รับคำแนะนำให้ทำอย่างอื่น; ฉันไม่รู้เกี่ยวกับสิ่งนี้ เรียนรู้มากมาย ขอบคุณสำหรับคำตอบ.
sherrellbc

1

ในตัวอย่างง่ายๆของอุปกรณ์ต่อพ่วง PWM ฮาร์ดแวร์ไมโครคอนโทรลเลอร์ตัวนับ 8 บิตอาจเชื่อมต่อกับตัวเปรียบเทียบดิจิตอล 8 บิต ไมโครคอนโทรลเลอร์จะทำการโหลดตัวเลขลงในตัวเปรียบเทียบและเพิ่มตัวนับด้วยนาฬิกาของระบบหรือบางรุ่นที่แบ่งไว้ล่วงหน้า ตัวนับจะทำงานฟรีตั้งแต่ 0 ถึง 255 และกลับสู่ศูนย์ซ้ำ ๆ ตัวเปรียบเทียบจะมีเอาต์พุตที่ระบุว่าค่าตัวนับนั้นมากกว่าหรือน้อยกว่าค่าตัวเปรียบเทียบ นี่จะกลายเป็นเอาต์พุต PWM ช่วงเวลาของ PWM จะใช้เวลานานเท่าใดกว่าที่เคาน์เตอร์จะเสร็จสิ้นรอบการนับและรอบการทำงานจะเป็นเศษส่วนของการนับทั้งหมดที่แสดงด้วยค่าตัวเปรียบเทียบ รหัสไมโครคอนโทรลเลอร์จะไม่มีอะไรทำยกเว้นตั้งค่าฮาร์ดแวร์เริ่มแรกและเปลี่ยนข้อมูลเปรียบเทียบเมื่อต้องการเปลี่ยน pwm PWM จะส่งออกกระแส PWM พัลส์ต่อเนื่องโดยไม่ต้องสนใจโปรเซสเซอร์

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