2010-04-08 12 views
5

Ho quello che spero sia una semplice domanda relativa ai microcontrollori Atmel AVR. Quindi voglio usare il comparatore analogico di ATTiny85 per determinare se un segnale è sopra o sotto una soglia. Questo segnale è normalmente "flottante" e tirato verso terra quando "attivo" (cioè è un segnale collettore attivo basso aperto). Se attivo pullup sul pin di ingresso (che è anche l'ingresso del comparatore) facendo:Comparatore analogico AVR + Pullup interno?

DDRB = 0x00; // DDRB.1 = 0 = input 
PORTB = 0xFF; // PORTB.1 = 1 = internal pullup enabled 

Se uso comparatore analogico e selezionare PORTB.1 come AIN1 sarà pullup interna essere applicati al mio segnale di ingresso ? Spero che qualcuno abbia esperienza personale per verificare questo comportamento. Spero che questa domanda non sia troppo "orientata all'hardware" per lo stack overflow. Grazie!

EDIT In risposta ad alcune delle osservazioni di seguito per l'effetto di "perché non trattarlo digitially", è perché il mio "segnale" viene generato da un sensore (cioè un sensore IR ottico). Non posso essere sicuro che verrà abbattuto "abbastanza difficile" da essere interpretato come zero in digitale, quindi userò il riferimento interno da 2,56 V come soglia di commutazione. Sto solo cercando di raccogliere l'evento "IR", quindi questo mi è sembrato il modo più semplice per me.

Inoltre, utilizzando il comparatore analogico, posso rilevare l'evento "asincrono" utilizzando un'ISR. Certo, alcuni dei pin possono invocare un interrupt su un bordo digitale, ma quello non vuole fare affidamento sulla risposta per abbassarsi sotto V_IL.

risposta

4

Dal datasheet figura 10-5 si può vedere che l'ingresso allo stadio analogico è influenzato dal pull-up.

Così è possibile utilizzare il pull-up interno insieme al comparatore. Come menzionato nella scheda tecnica, è possibile disabilitare lo stadio di ingresso digitale di quella porta per ridurre il consumo energetico, ovviamente solo se non lo si utilizza per l'ingresso digitale.

Nota: perni mobili possono causare enorme consumo di corrente per lo stadio di ingresso digitale. Cerca di evitarli.

+0

+1 per indirizzarlo alla scheda tecnica; sempre il primo posto dove guardare. – Clifford

+0

Sì, è quello che pensavo, grazie! – vicatcu

+0

Sfortunatamente, ho accettato questa risposta prima di provarla. Risulta (nonostante l'inferenza dal foglio dati) che il pullup interno * deve * essere disabilitato per poter usare un pin come input per il comparatore analogico. – vicatcu

2

non posso dire per certo che funzionerà (non ho mai fatto caso che stai descrivendo), ma parlando elettronicamente il tuo ragionamento è il suono. Quando l'interruttore è aperto, AIN1 vedrà VCC attraverso il pullup interno, e quando l'interruttore è chiuso, entrambi vedranno 0V.

VCC 
| 
100k(?) 
| 
AIN1 
| 
/
| 
GND 

Senza realtà leggendo il foglio di dati per quel processore, c'è una possibilità che non sarà in grado di utilizzare un pull-up interno su un perno configurato per l'ingresso analogico; in tal caso, potrebbe essere in grado di utilizzare un altro pin sul chip, configurato come ingresso digitale, per il pullup:

VCC 
| 
100k(?) 
| 
Other---AIN1 
     | 
     /
     | 
     GND 

Ma se la tensione su AIN1 è costante del "né logico alto né logico basso "range, che potrebbe portare il tuo consumo attuale abbastanza alto.

+0

A meno C'è qualcos'altro qui utilizzare un pin di ingresso digitale con un pull-up per questo, non c'è motivo per utilizzare il comparatore. Con un tirare il potere utilizzo di un segnale a collettore aperto non dovrebbe essere male. Quando il perno è mobile, dovrebbe essere molto vicino a 0. – Mark

+0

ha modificato la mia domanda alla luce di questa risposta, grazie! – vicatcu

+0

@Mark ha modificato la mia domanda alla luce di questa risposta, grazie! – vicatcu

2

Normalmente si utilizza l'ingresso digitale con il pull-up, poiché sembra che si disponga di un segnale di ingresso digitale.

C'è un motivo per utilizzare l'ingresso analogico?

+1

+1 per chiedere l'ovvia domanda "perché ha bisogno di un input analogico quando ci sono solo due stati di interesse?". Sembra un candidato per un input digitale per me. – Clifford

+0

ha modificato la mia domanda alla luce di questa risposta, grazie! – vicatcu

+0

@ Michael ha modificato la mia domanda alla luce di questa risposta, grazie! – vicatcu