Ciascuno dei pin IO deve avere il proprio resistore pull-up / down?


13

Una domanda molto semplice:

Ogni pin IO di un microcontrollore che funge da ingresso da un interruttore o da un ponticello deve avere una propria resistenza pull-up / down?

Semplice schema IO a 3 pin

In questo esempio, ciascun pin viene abbattuto da un resistore, quindi sollevato da un interruttore 1P3T su VCC.

Sembra semplice, ma poiché vengono utilizzati più pin IO, sono assolutamente necessari più resistori? Esiste un modo intelligente per tenere il conto alla rovescia del resistore?

Domanda correlata: condivisione di una resistenza pull-up

Risposte:


16

Secondo lo schema fornito, se tutti e 3 gli ingressi condividessero un resistore, allora una qualsiasi delle linee tirate in alto tramite l'interruttore solleverebbe tutte e 3 le linee in alto, contrastando lo scopo del progetto - l'MCU non saprebbe quale posizione dell'interruttore è selezionato.

Un modo comune per ridurre il conteggio delle parti , non il conteggio delle resistenze, per tali progetti è quello di utilizzare una rete o una matrice di resistori di bus comuni:
Array di resistori di bus comuni (da qui )


Questi sono disponibili come SIP / DIP a foro passante e SMD, in una varietà di conteggi di resistori, a seconda delle esigenze. Il pin del bus è collegato a terra e gli altri pin sono collegati ai rispettivi ingressi MCU come nello schema. Array di resistori SIP (da qui )

Matrici di resistori SMD (da qui )


8

La maggior parte degli MCU ha resistori pull-up (non down) opzionali integrati per ciascun pin, quindi è normale tirare i pin DOWN con l'interruttore (e gestire l'inversione di polarità nel software).

Quindi - nessuna resistenza necessaria.

Per quanto riguarda il motivo per cui il pullup, non il down, è un'abitudine rimasta dai circuiti logici TTL degli anni '70, dove ci voleva molta meno corrente per tirare un input verso l'alto che verso il basso: un resistore a discesa avrebbe sprecato più energia. Questo non si applica più alla logica CMOS di oggi, ma la tradizione dei pull-up è persistita, cosicché i primi chip CMOS a 5 V erano compatibili con la logica TTL precedente.


Ho pensato che il motivo del pull-up fosse perché il loro uso comune era con uscite open collector, e una volta che hai l'abitudine di andare in un modo continuerai a farlo in quel modo senza una buona ragione.
Dunker il

Inoltre, le uscite TTL possono assorbire 16 mA ma erogare solo 800uA, quindi un pull-up potrebbe essere utilizzato per aggiungere muscoli a un'uscita. Un input TTL si tirerebbe su se non lo connettessi, quindi un pull-up per motivi di input mi sembra un po 'strano. (Mi dispiace, ho aspettato troppo a lungo nel modificare il commento precedente ...)
Dunker il

"un ingresso TTL si tirerebbe su" ... in una certa misura sì, ma non in modo affidabile - il grande libro arancione specifica un 40 microamp Ih per garantire Vin> 2.4 V (per 7400; 20ua per 74LS) Lasciare aperti gli ingressi TTL era decisamente non raccomandato ovunque ho lavorato ...
Brian Drummond,

1
Pulldown contro pullup non è solo storico. Con una resistenza di pullup, l'altro lato dell'interruttore può essere messo a terra, il che è spesso conveniente.
Olin Lathrop,

1
La famiglia di microcontrollori TI MSP430 ha sia pull up che pull down interni.
Passante dal

0

Non si vuole mai lasciare un input per la logica aperto sul presupposto che si tirerebbe su o giù. se un ingresso viene lasciato aperto, è una piccola antenna e soggetta anche alle correnti all'interno del dispositivo logico. Quindi ti muovi su o giù per assicurarti di avere un input pulito e prevedibile. Ho imparato questa regola mentre lavoravo alla Fairchild Semiconductor negli anni '80.


1
Questo non risponde alla domanda che è stata posta.
The Photon,

Penso che il contesto della domanda originale sia che ci sono pulsanti e commutati che sono input per un MCU. Se un pin I / O non viene utilizzato, è possibile creare un'uscita, quindi spostarla in basso (o in alto) dal firmware. Ciò dovrebbe affrontare i problemi di EMI in agguato e non richiede un resistore esterno.
Nick Alexeev
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.