Haruskah masing-masing pin IO memiliki resistor pull-up / down mereka sendiri?

13

Pertanyaan yang sangat mendasar:

Haruskah setiap pin IO dari mikrokontroler yang berfungsi sebagai input dari sakelar atau jumper memiliki resistor pull-up / down sendiri?

Skema IO 3-pin sederhana

Dalam contoh ini, setiap pin ditarik ke bawah oleh resistor, lalu ditarik ke atas oleh saklar 1P3T ke VCC.

Tampaknya mudah, tetapi karena semakin banyak pin IO digunakan, apakah lebih banyak resistor mutlak diperlukan? Apakah ada cara pintar untuk menjaga agar penghitung mundur?

Pertanyaan terkait: Berbagi resistor pull-up

JYelton
sumber

Jawaban:

16

Sesuai dengan skema yang disediakan, jika ketiga input berbagi resistor, maka setiap jalur yang ditarik tinggi melalui sakelar akan menaikkan semua 3 jalur menjadi tinggi, melawan tujuan desain - MCU tidak akan tahu posisi sakelar mana yang terpilih.

Cara umum untuk mengurangi jumlah part , bukan count resistor, untuk desain seperti itu adalah dengan menggunakan jaringan atau array resistor bus umum:
Array Resistor Bus Umum (dari sini )


Ini tersedia sebagai SIP / DIP melalui lubang serta SMD, dalam berbagai jumlah penghambat, tergantung pada kebutuhan Anda. Pin bus terhubung ke ground, dan pin lainnya terhubung ke input MCU masing-masing seperti dalam skema Anda. Array resistor SIP (dari sini )

Array resistor SMD (dari sini )

Anindo Ghosh
sumber
8

Sebagian besar MCU memiliki resistor pull-up (bukan down) opsional yang terpasang di dalam untuk masing-masing pin, jadi itu normal untuk menarik pin ke bawah dengan sakelar (dan berurusan dengan inversi polaritas dalam perangkat lunak).

Jadi - tidak perlu resistor.

Mengenai mengapa pullup, bukan down, itu adalah kebiasaan yang tersisa dari sirkuit logika TTL tahun 1970-an, di mana butuh jauh lebih sedikit saat ini untuk menarik input ke atas daripada ke bawah - sebuah resistor pulldown akan menghabiskan lebih banyak daya. Ini tidak lagi berlaku dengan logika CMOS hari ini, tetapi tradisi pull-up telah bertahan, sehingga chip CMOS 5V awal kompatibel dengan logika TTL yang lebih lama.

Brian Drummond
sumber
Saya pikir alasan penarikan adalah karena penggunaannya yang umum adalah dengan keluaran kolektor terbuka, dan sekali Anda terbiasa melakukan satu cara, Anda akan terus seperti itu tanpa alasan yang bagus.
dunkers
Lebih lanjut, output TTL dapat tenggelam 16mA tetapi sumber hanya 800uA, jadi pull-up dapat digunakan untuk menambah otot ke output. Input TTL akan menarik dirinya sendiri jika Anda tidak menghubungkannya, jadi pull-up untuk alasan input tampak agak aneh bagi saya. (Maaf, menunggu terlalu lama dalam mengedit komentar sebelumnya ...)
dunkers
"input TTL akan naik sendiri" ... sampai batas tertentu ya, tapi tidak andal - buku oranye besar menentukan 40 microamp Ih untuk menjamin Vin> 2.4V (untuk 7400; 20ua untuk 74LS) Meninggalkan input TTL terbuka pasti tidak direkomendasikan di mana pun saya bekerja ...
Brian Drummond
1
Pulldown versus pullup bukan hanya bersejarah. Dengan resistor pullup, sisi lain sakelar dapat dibumikan, yang seringkali nyaman.
Olin Lathrop
1
Kelompok mikrokontroler TI MSP430 memiliki kedua pull up internal dan pull down.
Pejalan kaki
0

Anda tidak pernah ingin membiarkan input logika terbuka dengan asumsi bahwa itu akan menarik dirinya ke atas atau ke bawah. jika input dibiarkan terbuka, itu adalah antena kecil dan juga tergantung pada arus dalam perangkat logika. Jadi, Anda menarik ke atas atau ke bawah untuk memastikan Anda memiliki input yang bersih dan dapat diprediksi. Saya mempelajari aturan ini ketika saya bekerja di Fairchild Semiconductor pada 1980-an.

Lma Ranger
sumber
1
Ini tidak menjawab pertanyaan yang diajukan.
The Photon
Saya pikir, konteks dari pertanyaan awal adalah bahwa ada tombol dan switch yang merupakan input untuk MCU. Jika pin I / O tidak digunakan, dapat dibuat output kemudian didorong rendah (atau tinggi) dari firmware. Itu harus mengatasi masalah EMI yang mengintai, dan itu tidak memerlukan resistor eksternal.
Nick Alexeev