เป็นความคิดที่ดีหรือไม่ที่จะปล่อยให้พินของ MCU ป้อนลอย


28

ฉันได้ยินมาว่าการปล่อยพินที่ลอยอยู่บน MCU เมื่อกำหนดค่าเป็นอินพุต (เทียบกับเอาต์พุตเริ่มต้น) นั้นไม่ดีสำหรับพินและในที่สุดอาจทำให้มันล้มเหลวก่อนเวลาอันควร มันเป็นเรื่องจริงเหรอ? หมายเหตุในตัวอย่างของฉันขาลอยอยู่ระหว่าง 0.3V ถึง 1.3V เนื่องจากสัญญาณวิดีโอขาเข้า บางครั้งสิ่งนี้จะตกอยู่ในโซนที่ไม่มีมนุษย์ 0.8V - 2.0V เมื่อทำงานจาก 3.3V


1
คุณได้ตรวจสอบแผ่นข้อมูลและเอกสารประกอบตระกูล MCU แล้วหรือยัง? พวกเขาควรมีคำตอบที่ชัดเจนและคุณสามารถดูว่าหมุดถูกใช้ภายในอย่างไร
XTL

@XTL ฉันสแกนผ่านพวกเขา แต่ไม่พบการอ้างอิงใด ๆ พวกเขาบอกว่าหมุดลอยสามารถเข้าสู่รัฐที่ไม่ได้กำหนด แต่ไม่พูดถึงว่ามันอาจทำให้เกิดปัญหา
โทมัส O

มีความแตกต่างระหว่างอินพุตดิจิตอลแบบลอยตัวและอินพุตที่กำหนดเป็นอะนาล็อก เสียงแบบนี้เป็นอินพุตแบบอะนาล็อก
Martin

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

2
อะไร MCU ที่คุณใช้ค่าเริ่มต้นที่หมุดทั้งหมดเพื่อการส่งออก ? นั่นดูเหมือนสูตรสำหรับภัยพิบัติ
Connor Wolf

คำตอบ:


31

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

ผลลัพธ์:
โดยพื้นฐานอินพุตแบบลอยจะทำให้เกิดการทำงานของชิปที่ผิดปกติหรือพฤติกรรมที่คาดเดาไม่ได้แน่นอน ฉันสังเกตว่าชิปบางตัวแข็งตัวโดยเพียงขยับมือเข้าไปใกล้กับบอร์ด (ฉันไม่ได้สวมสายรัดข้อมือ ESD) หรือบางคนอาจมีพฤติกรรมเริ่มต้นที่แตกต่างกันในแต่ละครั้งที่บอร์ดเพิ่มพลัง

ทำไม:
สิ่งนี้เกิดขึ้นเพียงเพราะถ้ามีสัญญาณรบกวนภายนอกที่ขานั้นขาจะสั่นซึ่งจะระบายพลังงานเมื่อ CMOS ลอจิกประตูระบายพลังงานเมื่อพวกเขาเปลี่ยนสถานะ

วิธีแก้ปัญหา: ปัจจุบัน
micros ส่วนใหญ่มี pullups ภายในเช่นกันดังนั้นจึงสามารถป้องกันพฤติกรรมนี้ไม่ให้เกิดขึ้น อีกทางเลือกหนึ่งคือการกำหนดค่าพินเป็นเอาท์พุทดังนั้นมันจึงไม่ส่งผลกระทบต่อ internals


3
หากคุณใช้เป็นอินพุตจะทำให้อินพุตไม่แน่นอน แต่จะส่งผลกระทบต่อส่วนอื่น ๆ ของชิปและทำให้เกิดปัญหาในการเริ่มต้นหรือไม่
endolith

3
If I'm ignoring the pin and not using it for any peripherals would it still cause problems?
Thomas O

@endolith and Thomas - I think mikeselectricstuff has answered this for you! It could cause problems simply by introducing noise into other parts of the system. I know it was because of the floating pin, because as soon as I configured it to an output, the problems went away!
IntelliChick

2
I don't understand how a floating piece of metal can introduce noise to other parts of the system. It picks up noise, certainly, but if you're not paying attention to the input, that shouldn't matter. Are the problems with waving hands nearby really related to unused floating inputs?
endolith

TIL floating pins aren't harmless. Thanks IntelliChick and @Yann!
Nick Johnson

13

It's a little worse than just being in an unknown state, or toggling needlessly. Digital circuits nowadays are mostly of CMOS type, with transistors switching both high and low sides; when we have clear 1s and 0s, they are either off or saturated, the two most efficient states for the transistors to be in. In between, however, is a region of linear operation; it's used for analog amplifiers, but it is not as efficient as the extremes - meaning more power is wasted as heat in the transistor. In the worst case, both the high and low side transistors leak thus (because the pin is in fact neither high nor low), and they can then combine to cause a notable current within the chip as they try to drive the internal state both high and low - possibly doing the same to the next gate in a chain reaction. The heat could become a problem even if the power isn't. IntelliChick's solutions still apply.

For pins also connected to ADCs, some microcontrollers offer the function to disable the digital input buffer, to prevent both this problem and leakage distorting the signal.


The inputs don't have hysteresis?
endolith

3
Schmitt trigger inputs do, but generally, no.
Yann Vernier

6

In practice the main effect is increased power consumption. If a pin is actually floating as opposed to connected to some indeterminate voltage source, it is possible for oscillation to occur, which as well as increasing power draw may introduce noise into other parts of the system. Any pin which has the ability to be used for an ADC or comparator input will have the facility to disconnect the digital input buffer to avoid this problem. (DIDR on AVR, ADCON1/ANSEL on PIC)


What exactly would oscillate, and why?
endolith

@endolith - The input buffer on the pin. Think about a inverting buffer with a capacitor between the input and the output.
Connor Wolf

@FakeName: But where is the inverter? Where is the output that's feeding back to the input?
endolith

3
Basically, all IC IO pins go through a buffer (often an inverter) on the IC Die. Since the buffer will have wires for the input and output, there can be coupling capacitively between the input and output. Therefore, if the input is sufficiently high impedance, a transition on the inverter output can cause the inverter input to change, causing the output to change again, etc....
Connor Wolf

4

Generally it is a bad idea to leave input pin as floating as this may cause:

a) Functional problems - unknown input state, toggling (for example may trigger interrupt with undefined ISR that would hang processor)

b) Increased power consumption - most likely the input gate is similar to CMOS inverter. With this structure when the input is far enough from either rail (for example at half supply) significant cross over current will flow constantly.

c) If the cross-over current will flow the phenomena know as hot carrier injection may actually decrease lifetime of the device. The input gate may be designed just for normal switching not continuous conduction so device may fail catastrophically. Note however one would need place device in such condition for many hundreds of hours at elevated temperature for this to happen.

Note the a) and b) are real problems that one most likely one will encounter. As for c) it is less likely problem to happen but why take risk?


3

The input will toggle between 0 and 1 based on any EMI. I'm not sure if it will cause the input to fail, but it will cause more power to be used because the transitions from 0 to 1 to 0.

Set it to an output and be done with it.


1
If I set it to an output, 0 or 1, it will ground out the video signal and cause a loss of video.
Thomas O

Can you enable an internal pull-up and be done with it?
endolith

Enabling the internal pull-up should be good. The point is to put it into a known state and leave it there.
Robert

2

Some high-speed CMOS devices may be destroyed if an input is left floating, but the most common problem one will observe is increased current consumption. On PIC series microcontrollers, the extra current is on the order of hundreds of microamps per floating pin. Not enough to cause device damage, but enough to severely impact battery life in an application that would otherwise draw 5uA. Some chips have options to disable a digital input; if an input is disabled, it may freely be left floating.

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