Apakah benar-benar ide yang buruk untuk membiarkan pin input MCU mengambang?

28

Saya pernah mendengar bahwa membiarkan pin mengambang di MCU ketika dikonfigurasi sebagai input (vs output default) buruk untuk pin, dan akhirnya dapat menyebabkan pin gagal sebelum waktunya. Apakah ini benar? NB dalam contoh saya pin melayang di suatu tempat antara 0,3V dan 1,3V karena sinyal video yang masuk. Ini kadang-kadang jatuh di zona tak bertuan 0.8V - 2.0V saat beroperasi dari 3.3V.

Thomas O
sumber
1
Sudahkah Anda memeriksa lembar data dan dokumentasi keluarga MCU? Mereka harus memiliki beberapa jawaban yang pasti dan Anda dapat melihat bagaimana pin diterapkan secara internal.
XTL
@ XTL, saya memindai melalui mereka, tetapi tidak menemukan referensi untuk itu. Mereka mengatakan bahwa floating pin dapat memasuki kondisi tidak terdefinisi tetapi tidak menyebutkan apakah itu dapat menyebabkan masalah.
Thomas O
Ada perbedaan antara input digital mengambang dan input yang didefinisikan sebagai analog. Kedengarannya seperti ini adalah input analog.
Martin
@ Martin Saya tidak dapat membuat pin input analog. Saya memiliki irisan waktu ~ 125ns untuk setiap piksel pada video (jam instruksi 25ns), jadi saya tidak bisa mengeluarkan satu nanodetik lagi.
Thomas O
2
MCU apa yang Anda gunakan yang default semua pin untuk output ? Itu terdengar seperti resep bencana.
Connor Wolf

Jawaban:

31

Masalah:
Membiarkan pin yang dikonfigurasikan sebagai input mengambang berbahaya karena Anda tidak dapat memastikan keadaan pin. Seperti yang Anda sebutkan, karena sirkuit Anda, pin Anda kadang-kadang RENDAH atau kadang-kadang di tanah tak bertuan atau terkadang bisa menjadi TINGGI.

Hasil: Pada
dasarnya, input mengambang AKAN pasti menyebabkan operasi chip yang tidak menentu atau perilaku yang tidak terduga. Saya telah memperhatikan beberapa chip membeku dengan hanya menggerakkan tangan saya lebih dekat ke papan (saya tidak memakai gelang ESD) atau beberapa akan memiliki perilaku startup yang berbeda setiap kali papan akan powerup.

Mengapa:
Ini terjadi hanya karena jika ada gangguan eksternal pada pin itu, pin tersebut akan berosilasi, yang akan menguras daya karena gerbang logika CMOS menguras daya ketika mereka berganti status.

Solusi:
Kebanyakan micros saat ini memiliki pullup internal juga, sehingga dapat mencegah perilaku ini terjadi. Pilihan lain adalah mengkonfigurasi pin sebagai output sehingga tidak mempengaruhi internal.

IntelliChick
sumber
3
Jika Anda menggunakannya sebagai input, itu pasti akan menyebabkan input yang tidak menentu, tetapi apakah itu benar-benar mempengaruhi bagian lain dari chip dan menyebabkan masalah startup?
endolith
3
Jika saya mengabaikan pin dan tidak menggunakannya untuk periferal apa pun akan tetap menimbulkan masalah?
Thomas O
@endolith dan Thomas - Saya pikir mikeselectricstuff telah menjawab ini untuk Anda! Ini dapat menyebabkan masalah hanya dengan memasukkan noise ke bagian lain dari sistem. Saya tahu itu karena pin mengambang, karena begitu saya mengkonfigurasinya ke output, masalahnya hilang!
IntelliChick
2
Saya tidak mengerti bagaimana sepotong logam yang mengambang dapat menimbulkan kebisingan ke bagian lain dari sistem. Itu mengambil suara, tentu saja, tetapi jika Anda tidak memperhatikan input, itu tidak masalah. Apakah masalah dengan lambaian tangan di dekatnya benar-benar terkait dengan input mengambang yang tidak digunakan ?
endolith
TIL floating pin tidak berbahaya. Terima kasih IntelliChick dan @Yann!
Nick Johnson
13

Ini sedikit lebih buruk daripada hanya berada dalam keadaan yang tidak diketahui, atau beralih tanpa kebutuhan. Sirkuit digital saat ini sebagian besar jenis CMOS, dengan transistor yang beralih dari sisi tinggi dan rendah; ketika kita memiliki 1s dan 0s yang jelas, keduanya mati atau jenuh, dua keadaan paling efisien untuk transistor. Di antara keduanya, bagaimanapun, adalah wilayah operasi linier; ini digunakan untuk amplifier analog, tetapi tidak seefisien ekstrem - yang berarti lebih banyak daya terbuang sebagai panas dalam transistor. Dalam kasus terburuk, baik transistor sisi tinggi dan rendah bocor demikian (karena pin sebenarnya tidak tinggi atau rendah), dan mereka kemudian dapat bergabung untuk menyebabkan arus penting dalam chip ketika mereka mencoba untuk menggerakkan keadaan internal keduanya tinggi dan rendah - mungkin melakukan hal yang sama ke gerbang berikutnya dalam reaksi berantai. Panas bisa menjadi masalah bahkan jika listriknya tidak. Solusi IntelliChick masih berlaku.

Untuk pin yang juga terhubung ke ADC, beberapa mikrokontroler menawarkan fungsi untuk menonaktifkan buffer input digital, untuk mencegah masalah ini dan kebocoran yang merusak sinyal.

Yann Vernier
sumber
Masukan tidak memiliki histeresis?
Endolith
3
Input input Schmitt lakukan, tetapi umumnya, tidak.
Yann Vernier
6

Dalam praktiknya efek utamanya adalah peningkatan konsumsi daya. Jika pin benar-benar mengambang dan tidak terhubung ke beberapa sumber tegangan tak tentu, osilasi mungkin terjadi, yang juga meningkatkan penarikan daya dapat menimbulkan kebisingan ke bagian lain dari sistem. Setiap pin yang memiliki kemampuan untuk digunakan untuk input ADC atau komparator akan memiliki fasilitas untuk memutuskan buffer input digital untuk menghindari masalah ini. (DIDR pada AVR, ADCON1 / ANSEL di PIC)

mikeselectricstuff
sumber
Apa sebenarnya yang akan terombang-ambing, dan mengapa?
endolith
@endolith - Buffer input pada pin. Pikirkan tentang buffer pembalik dengan kapasitor antara input dan output.
Connor Wolf
@FakeName: Tapi di mana inverter itu? Di mana output yang mengumpan balik ke input?
endolith
3
Pada dasarnya, semua pin IC IO melewati buffer (seringkali inverter) pada IC Die . Karena buffer akan memiliki kabel untuk input dan output, mungkin ada kopling kapasitif antara input dan output. Oleh karena itu, jika input impedansi cukup tinggi, transisi pada output inverter dapat menyebabkan input inverter berubah, menyebabkan output berubah lagi, dll ....
Connor Wolf
4

Umumnya adalah ide yang buruk untuk membiarkan pin input mengambang karena hal ini dapat menyebabkan:

a) Masalah fungsional - keadaan input tidak dikenal, beralih (misalnya dapat memicu interupsi dengan ISR yang tidak ditentukan yang akan menggantung prosesor)

b) Konsumsi daya meningkat - kemungkinan gerbang input mirip dengan CMOS inverter. Dengan struktur ini ketika input cukup jauh dari kedua rel (misalnya pada setengah pasokan) arus silang yang signifikan akan mengalir terus-menerus.

c) Jika arus cross-over akan mengalir, fenomena yang dikenal sebagai injeksi hot carrier dapat benar-benar mengurangi masa pakai perangkat. Gerbang input mungkin dirancang hanya untuk switching normal dan bukan konduksi kontinu sehingga perangkat dapat gagal serempak. Namun perlu dicatat bahwa seseorang harus menempatkan perangkat dalam kondisi seperti itu selama ratusan jam pada suhu tinggi agar ini terjadi.

Perhatikan a) dan b) adalah masalah nyata yang kemungkinan besar akan ditemui. Adapun c) kemungkinan kecil masalah terjadi tetapi mengapa mengambil risiko?

mazurnifikasi
sumber
3

Input akan beralih antara 0 dan 1 berdasarkan EMI apa pun. Saya tidak yakin apakah itu akan menyebabkan input gagal, tetapi itu akan menyebabkan lebih banyak daya yang digunakan karena transisi dari 0 ke 1 ke 0.

Atur ke output dan lakukan dengan itu.

Robert
sumber
1
Jika saya mengaturnya ke output, 0 atau 1, itu akan mengeluarkan sinyal video dan menyebabkan hilangnya video.
Thomas O
Bisakah Anda mengaktifkan pull-up internal dan menyelesaikannya?
endolith
Mengaktifkan pull-up internal harus bagus. Intinya adalah memasukkannya ke dalam kondisi yang diketahui dan membiarkannya di sana.
Robert
2

Beberapa perangkat CMOS kecepatan tinggi dapat dihancurkan jika input dibiarkan mengambang, tetapi masalah yang paling umum yang akan diamati adalah peningkatan konsumsi saat ini. Pada seri mikrokontroler PIC, arus tambahan ada di urutan ratusan mikrogram per pin mengambang. Tidak cukup untuk menyebabkan kerusakan perangkat, tetapi cukup untuk sangat mempengaruhi masa pakai baterai dalam aplikasi yang jika tidak akan menarik 5uA. Beberapa chip memiliki opsi untuk menonaktifkan input digital; jika suatu input dinonaktifkan, ia dapat dibiarkan mengambang.

supercat
sumber