การใช้งานตัวต้านทานแบบพูลดาวน์และพูลดาวน์บนหมุด MCU หรืออินพุตหรือเอาต์พุต


18

ตัวต้านทานแบบดึงขึ้น - ลง (ไม่ว่าภายในหรือภายนอก) จำเป็นสำหรับพิน MCU INPUT เท่านั้นหรือไม่ ในทางตรงกันข้ามขา MCU ที่กำหนดค่าเป็น OUTPUT "รู้ระดับที่" เพราะมันใช้ในการขับรถ - ขา "MCU" ขาออกของ MCU ที่ผูกติดกับอินพุตของวงจรอื่นไม่เข้าท่าเพราะสถานะของพิน MCU สูงหรือต่ำได้ฉันมีสิทธิ์นี้หรือไม่ ในตอนนี้เมื่อการบูทหรือล้มเหลวของ MCU มันอาจเป็นประโยชน์ที่จะมีการดึงขึ้น / ลงที่เชื่อมโยงกับสาย "เอาท์พุท MCU กับอินพุต IC" เพื่อให้แน่ใจว่าอินพุตไปยัง IC บางตัวไม่เคยลอย

บางทีฉันอาจตอบคำถามของฉันเองที่นี่ ... ตัวต้านทานแบบดึงขึ้น - ลงสามารถใช้ได้ทั้งขาเข้าและขาออกขึ้นอยู่กับการใช้งาน

คำตอบ:


21

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

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

นี่คือเมื่อคุณใช้Weak Pull-up หรือ Pull-down บนบรรทัด เนื่องจากพวกเขาอ่อนแอและคุณเลือกสถานะเริ่มต้นพวกเขาไม่ให้สัญญาณรบกวนกับวงจรของคุณ (ถ้าอินพุตควรต่ำตลอดเวลาจากนั้นดึงสูงคุณเลือกพูลดาวน์ที่อ่อนแอและในทางกลับกัน) แต่ พวกมันกินกระแสไฟฟ้านิดหน่อย นี่คือเหตุผลที่คุณเลือกตัวต้านทานที่อ่อนแอ (สูงกว่าค่าที่อ่อนแอกว่า) เพียงพอสำหรับงาน

การตั้งค่าเอาต์พุตปกติอื่นที่ใช้การดึง (หรือดึงลง, rarer) คือการเชื่อมต่อOpen DrainหรือOpen Collector สิ่งเหล่านี้ทำให้การเชื่อมต่อต่ำหรือปล่อยสายปล่อยให้มันลอย pull-ups ใช้เพื่อนำบรรทัดไปสู่สถานะตรรกะระดับสูง


คุณพูดถึงการเชื่อมต่อ Open Drain และ Open Collector สิ่งเหล่านี้ใช้ไม่ได้กับไมโครคอนโทรลเลอร์ Mosfets ถูกใช้เพื่อตั้งระดับตรรกะหรือไม่ ฉันต้องการชี้แจงว่าไมโครคอนโทรลเลอร์สามารถขับเคลื่อนสายที่มีตัวต้านทานแบบดึงลงสูงหรือไม่
genericpurpleturtle

9

คุณมีสิทธิ์ โดยปกติแล้วคุณไม่ต้องการ pullups บนเอาต์พุต แต่มันมีประโยชน์ในการรักษาความปลอดภัยในช่วงเวลาบูต ฯลฯ

เหตุผลหนึ่งที่อื่น ๆ สำหรับใช้ดึงขึ้นบนเอาท์พุท: ถ้าหลายเอาท์พุทจากหลาย MPUs มีการเชื่อมต่อกับแต่ละอื่น ๆ ที่คุณจริงๆไม่ต้องการหนึ่งขับรถ VCC และอีก 0V ขับรถบนสายเดียวกัน! ดังนั้นคุณสามารถขับ 0V บนเอาต์พุตหรือปิดเอาต์พุต (อาจโดยการกำหนดค่าเป็นอินพุต) เมื่อปิดเอาต์พุตทั้งหมดสายจะถูกดึงไปที่ '1' (Vcc) โดยการดึง สิ่งนี้เรียกว่าสัญญาณ "wired and" (คุณสามารถทำการขับขี่ '1' เดียวกันหรือปิดด้วย pulldown R จากนั้นจะเรียกว่า OR แบบมีสายหรือ)

รูปแบบนี้มีประโยชน์หลายประการรวมถึงการอนุญาตให้ MPU ตัวใดตัวหนึ่งส่งสัญญาณข้อผิดพลาดหรือเปิด LED หรือให้พวกเขาทั้งหมดสลับกันเพื่อส่งข้อความถึงกันผ่านสายเดี่ยว


4

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

สิ่งนี้ทำเพื่อลดความผิดพลาดของเฟิร์มแวร์ / MCU แต่จะทำงานเพื่อป้องกันสถานะความต้านทานสูงเท่านั้น

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

บางครั้งสิ่งนี้ไม่สำคัญเวลาอื่นก็ทำ


ขอบคุณสำหรับคำตอบซึ่งชมเชยคำตอบอื่น ๆ เช่นกัน! FYI, ชุด PIC24F เริ่มต้นพิน GPIO เป็นความต้านทานสูง (อินพุต) เมื่อรีเซ็ต (แผ่นข้อมูลพิน I / O)
The_Ders

3

คำตอบก็คือมันขึ้นอยู่กับตระกูลไมโครคอนโทรลเลอร์และสิ่งที่พฤติกรรมเริ่มต้นของมันคือการเปิดเครื่องเมื่อเปิดเครื่อง หากไมโครคอนโทรลเลอร์สามารถกำหนดค่าสำหรับ "เอาท์พุท" หรือ "อินพุต" บนพินได้นั่นหมายความว่ามันใช้ไดรเวอร์โทเท็ม - โพลสำหรับเอาท์พุท - ซึ่งก็คือมันบอกว่ามันเป็นเอาต์พุตของเกต CMOS การส่งออกจะถูกขับเคลื่อนไปที่รางเสมอดังนั้นจึงไม่มีเหตุผลที่จะมีอิทธิพลต่อมันอย่างอดทน กรณีเดียวที่เหมาะสมที่จะใช้ pull-ups / pull-downs บนเอาต์พุตคือเมื่อถูกกำหนดค่าเป็นโทโพโลยี Open Collector / Open Drain เป็นเรื่องปกติมากที่จะเห็นตัวเลือกแบบดึงขึ้น / ดึงลงภายในที่ใช้งานได้เฉพาะเมื่อกำหนดค่าพินเป็นอินพุตเท่านั้น หากคุณสามารถรับประกันได้ว่าในระบบของคุณอินพุตจะถูกขับเคลื่อนด้วยบางสิ่งบางอย่างสิ่งนี้จะสิ้นเปลืองพลังงานเล็กน้อย


คำอธิบายที่ยอดเยี่ยมในระดับฮาร์ดแวร์ ขอขอบคุณ!
The_Ders

2

คุณสามารถมีหมุดซึ่งเป็นเอาท์พุทบางครั้งเช่นสำหรับการทำ I2C


ฉันจะทราบเรื่องนี้เมื่อทำงานกับ I2C ในอนาคต ฉันเชื่อว่าด้วยซีรีย์ PIC24F โมดูล I2C ถือว่าสามารถควบคุมพินได้เต็มรูปแบบ ตอนนี้ฉันรู้แล้วว่าทำไมนี่คือ - โมดูล I2C เป็นหลักกำหนดค่าพินข้อมูลเป็นเอาต์พุตแบบ open-drain / collector (ต้องมีตัวต้านทานแบบดึงขึ้น) หรืออินพุตความต้านทานสูงขึ้นอยู่กับว่าข้อมูลถูกเอาต์พุต โมดูล I2C ... ฉันมีสิทธิ์นี้ไหม ฉันไม่คุ้นเคยกับ I2C
The_Ders

ถูกต้องแล้ว
pjc50

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