Penggunaan Resistor Pull-up dan Pull-down pada Input atau Output MCU Pins

18

Apakah resistor pull-up / down (baik internal maupun eksternal) hanya diperlukan untuk pin INPUT MCU? Sebaliknya, pin MCU yang dikonfigurasikan sebagai OUTPUT "tahu level apa yang ada di" karena melakukan pengemudian - pin MCU OUTPUT yang diikat ke beberapa input sirkuit lain tidak masuk akal, karena keadaan pin MCU hanya bisa tinggi atau rendah ... apakah saya memiliki hak ini? Sekarang, pada saat bootup MCU atau kegagalan, mungkin bermanfaat untuk memiliki pull-up / down terikat ke baris "output MCU ke input IC" untuk memastikan bahwa input ke beberapa IC tidak pernah mengambang.

Mungkin saya baru saja menjawab pertanyaan saya sendiri di sini ... resistor pull-up / down dapat digunakan pada pin input dan output, tergantung pada aplikasi?

The_Ders
sumber

Jawaban:

21

Pull-up dan Pull-down biasanya digunakan untuk memastikan garis memiliki status yang ditentukan saat tidak didorong secara aktif. Mereka digunakan pada input untuk mencegah garis mengambang, dengan cepat beralih antara tinggi dan rendah dan daerah "tidak terdefinisi" menengah. Output biasanya tidak membutuhkannya.

Tetapi kebanyakan pin mcu adalah GPIO, dan terkadang pada startup didefinisikan sebagai input bukan output. Seperti yang Anda katakan, kadang-kadang Anda tidak ingin input pin IC mengambang di startup, terutama seperti pin reset yang biasanya Anda kendarai dengan GPIO mikrokontroler Anda.

Ini adalah saat Anda menggunakan Pull-up yang Lemah atau Pull-down di telepon. Karena mereka lemah, dan Anda memilih status default, mereka tidak memberikan gangguan pada sirkuit Anda (Jika inputnya dianggap rendah setiap saat, kemudian ditarik tinggi, Anda memilih pull-down yang lemah, dan sebaliknya), tetapi mereka mengkonsumsi sedikit arus. Inilah sebabnya mengapa Anda memilih resistor yang lemah (Semakin tinggi nilainya, semakin lemah) cukup untuk pekerjaan itu.

Pengaturan output normal lainnya yang menggunakan pull-up (atau pull-down, jarang) adalah koneksi Open Drain atau Open Collector . Ini hanya membuat koneksi rendah, atau melepaskan saluran, membiarkannya mengambang. Pull-up digunakan untuk membawa garis ke keadaan logika tinggi.

Pejalan kaki
sumber
Anda menyebutkan koneksi Open Drain dan Open Collector, ini tidak berlaku untuk mikrokontroler bukan? Hanya MOSFET yang digunakan untuk mengatur tingkat logis? Saya ingin menjelaskan apakah mikrokontroler dapat menggerakkan garis yang memiliki resistor pull down yang tinggi.
genericpurpleturtle
9

Anda memilikinya tentang benar; biasanya Anda tidak perlu melakukan pullup pada output, tetapi mereka dapat berguna untuk menjaga keamanan selama waktu boot dll.

Satu alasan lain untuk menggunakan pull-up pada output: jika beberapa output dari beberapa MPU terhubung satu sama lain, Anda benar - benar tidak ingin satu mengemudi VCC dan yang lain mengemudi 0V pada kabel yang sama! Jadi, Anda dapat menggerakkan 0V pada output atau mematikan output (mungkin dengan mengkonfigurasi sebagai input). Ketika semua output dimatikan, kawat ditarik ke '1' (Vcc) oleh pullup. Ini disebut sinyal "berkabel DAN". (Anda dapat melakukan mengemudi yang sama '1' atau tidak aktif, dengan pulldown R, maka itu disebut kabel OR).

Pola ini memiliki beberapa kegunaan termasuk memungkinkan satu MPU untuk memberi sinyal kesalahan atau menyalakan LED, atau memungkinkan mereka semua bergiliran mengirim pesan satu sama lain dalam satu kabel.

Brian Drummond
sumber
4

Seperti yang Anda nyatakan, menggunakan pullup / pull-down resistor pada pin yang diharapkan akan menjadi pin output bisa ada untuk menjamin keadaan input.

Hal ini dilakukan untuk mengurangi kegagalan firmware / MCU, tetapi hanya akan berfungsi untuk melindungi dari keadaan impedansi-Hi (pada dasarnya pin dikonfigurasikan sebagai input secara tidak sengaja).

Kebanyakan MCU, saya terbiasa dengan pin IO default untuk keadaan input impedansi tinggi saat boot (tapi tidak ada jaminan, dan saya tidak punya pengalaman dengan hampir semua keluarga MCU), yang berarti perlu beberapa saat sebelum kode untuk menginisialisasi pin negara dieksekusi.

Terkadang ini tidak masalah, di lain waktu itu tidak penting.

helloworld922
sumber
Terima kasih atas jawabannya, yang memuji jawaban lainnya juga! FYI, seri PIC24F default pin GPIO untuk impedansi tinggi (input) setelah reset (I / O pin datasheet).
The_Ders
3

Jawabannya tergantung pada keluarga mikrokontroler, dan apa perilaku defaultnya pada Power On Reset. Jika mikrokontroler hanya dapat dikonfigurasi untuk "output" atau "input" pada pin, ini biasanya berarti ia menggunakan driver Totem-Pole untuk output - yang berarti itu pada dasarnya adalah output dari gerbang CMOS, dalam hal ini output selalu didorong ke rel, jadi tidak ada alasan untuk mempengaruhinya secara pasif. Satu-satunya kasus di mana masuk akal untuk menggunakan pull-up / pull-down pada output adalah ketika itu dikonfigurasi sebagai Open Collector / Open Drain topology. Jauh lebih umum untuk melihat opsi pull-up / pull-down internal yang hanya berlaku ketika pin dikonfigurasi sebagai input. Jika Anda dapat menjamin bahwa dalam sistem Anda input selalu didorong oleh sesuatu, ini menghabiskan sedikit daya.

vicatcu
sumber
Penjelasan hebat di tingkat perangkat keras. Terima kasih!
The_Ders
2

Anda dapat memiliki pin yang merupakan output beberapa waktu , seperti untuk melakukan I2C.

pjc50
sumber
Saya akan mengingat hal ini ketika bekerja dengan I2C di masa depan. Saya percaya dengan seri PIC24F, modul I2C mengasumsikan kontrol penuh atas pin dan garis memerlukan pull-up eksternal. Sekarang saya tahu mengapa hal ini terjadi - modul I2C pada dasarnya mengkonfigurasi pin data sebagai keluaran saluran terbuka / kolektor (memerlukan resistor pull-up) atau input impedansi tinggi, tergantung pada apakah data sedang di-output / di-input dari / ke Modul I2C ... apakah saya memiliki hak ini? Saya tidak begitu akrab dengan I2C.
The_Ders
Benar sekali.
pjc50
I2C adalah salah satu contoh dari pola AND-kabel. Kolektor terbuka membuatnya sesederhana mungkin dengan pin GPIO.
Brian Drummond