2010-04-08 8 views
5

Mam to, co mam nadzieję, jest proste pytanie dotyczące mikrokontrolerów AVR Atmel. Dlatego chcę użyć komparatora analogowego ATTiny85, aby określić, czy sygnał jest powyżej czy poniżej progu. Ten sygnał jest normalnie "pływający" i jest ciągnięty w kierunku ziemi, gdy jest "aktywny" (to znaczy jest aktywnym sygnałem niskiego otwarcia kolektora). Gdybym umożliwić pullup na pin wejście (który jest również wejście komparatora) przy pomocy:AVR Analogowy komparator + wewnętrzny pullup?

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

jeśli mogę użyć komparatora analogowego i wybierz PORTB.1 jako AIN1 będzie wewnętrzny pullup być stosowane do mojego sygnału wejściowego ? Mam nadzieję, że ktoś ma osobiste doświadczenie, aby zweryfikować to zachowanie. Mam nadzieję, że to pytanie nie jest zbyt "zorientowane sprzętowo" na przepełnienie stosu. Dzięki!

EDIT W odpowiedzi na niektóre komentarze poniżej do skutku „dlaczego nie traktować go digitially”, to dlatego, że moja „Sygnał” jest generowany przez czujnik optyczny (mianowicie czujnika IR). Nie mogę być pewny, że będzie on "wystarczająco twardy", aby zostać zinterpretowanym jako zero cyfrowo, więc zamierzam użyć wewnętrznego odniesienia 2.56V jako mojego progu przełączania. Po prostu próbuję odebrać "zdarzenie IR", więc wydawało mi się to najprostsze.

Ponadto, korzystając z komparatora analogowego, mogę wykryć zdarzenie "asynchronicznie" za pomocą ISR. Niektóre pinezki mogą wywoływać przerwanie na cyfrowej krawędzi, ale ta nie chce polegać na odpowiedzi na spadek poniżej V_IL.

Odpowiedz

4

Od datasheet rysunek 10-5 można zauważyć, że wejście do etapu analogowego ma wpływ na podciągnięcie.

W ten sposób można użyć wewnętrznego podciągania razem z komparatorem. Jak wspomniano w arkuszu danych, możesz chcieć wyłączyć cyfrowy stopień wejściowy tego portu, aby zmniejszyć zużycie energii - oczywiście tylko wtedy, gdy nie użyjesz go do wejścia cyfrowego.

Uwaga: Pływające szpilki mogą powodować ogromne zużycie prądu dla cyfrowego stopnia wejściowego. Staraj się ich unikać.

+0

+1 za skierowanie go do arkusza danych; zawsze pierwsze miejsce do patrzenia. – Clifford

+0

Tak, to właśnie myślałem, dzięki! – vicatcu

+0

Niestety, zaakceptowałem tę odpowiedź przed wypróbowaniem. Okazuje się (pomimo wnioskowania z arkusza danych), że wewnętrzny pullup * musi być * wyłączony, aby użyć szpilki jako wejścia do analogowego komparatora. – vicatcu

2

Nie mogę powiedzieć, że to zadziała (nigdy nie robiłem tego, o czym mówisz), ale elektronicznie mówiąc, twoje rozumowanie brzmi dobrze. Kiedy przełącznik jest otwarty, AIN1 wyświetli VCC przez wewnętrzny pullup, a gdy przełącznik zostanie zamknięty, oba będą widzieć 0V.

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

Bez rzeczywiście czytając arkusz dla tego procesora, istnieje szansa, że ​​nie będzie w stanie wykorzystać wewnętrzny pull-up na pin skonfigurowany dla wejścia analogowego; w tym przypadku, może być w stanie użyć innego pin na chipie, skonfigurowany jako wejście cyfrowe, dla pullup:

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

Ale jeśli napięcie na AIN1 jest stale w „ani logiki wysoki ani niski logika "zasięg, który może spowodować, że twoja obecna konsumpcja będzie dość wysoka.

+0

Jeśli nie ma czegoś innego, użyj cyfrowej pinezki wejściowej z podciągnięciem, nie ma powodu, aby używać komparatora. Przy podnoszeniu zużycie energii przez otwarty sygnał kolektora nie powinno być złe. Gdy kołek jest pływający, powinien znajdować się bardzo blisko 0. – Mark

+0

zredagowałem moje pytanie w świetle tej odpowiedzi, dzięki! – vicatcu

+0

@ Mark zmodyfikował moje pytanie w świetle tej odpowiedzi, dzięki! – vicatcu

2

Zwykle używasz wejścia cyfrowego z podciągnięciem, ponieważ wydaje się, że masz cyfrowy sygnał wejściowy.

Czy jest jakiś powód użycia analogowego wejścia?

+1

+1 za zadawanie oczywistego pytania "dlaczego to wymaga wejścia analogowego, gdy są tylko dwa stany zainteresowania?". Brzmi jak kandydat do cyfrowego wejścia do mnie. – Clifford

+0

zredagowałem moje pytanie w świetle tej odpowiedzi, dzięki! – vicatcu

+0

@Michael zredagował moje pytanie w świetle tej odpowiedzi, dzięki! – vicatcu

Powiązane problemy