Problem wygląda następująco...
Mam 2 wyłączniki krańcowe podpięte do portu C (Piny 1 i 2). Obydwa są są podciągnięte do Vcc przez wewnętrzne rezystory podciągające. Wyłączniki są normalnie rozłączone i zwierają układ w momencie załączenia. Mój problem polega na tym że załączenie jest wykrywane tylko dla pinu 1, a 2 nie jest wykrywany.
Zamieniałem przełączniki miejscami i mogę stwierdzić że obydwa działają poprawnie, problem leży po stronie mikrokontrolera. Obawiam się że nie dysponuję chwilowo miernikiem i nie mogę sprawdzić dokładnego poziomu napięcia na pinie. Z konieczności podłączyłem zwykłą diodę RGB, która wskazuje na normalną pracę układu (normalnie świeci, a gaśnie dla załączenia wyłącznika)
Poniżej zamieszczam fragment kodu odpowiedzialny za detekcję załączenia. Nie sądzę by był tu błąd, gdyż działa normalnie po zmianie na PC1
Dla pinu 2 program wychodzi z pętli w pierwszym obejściu.
Czy macie jakieś sugestie odnośnie przyczyny problemu?
Mam 2 wyłączniki krańcowe podpięte do portu C (Piny 1 i 2). Obydwa są są podciągnięte do Vcc przez wewnętrzne rezystory podciągające. Wyłączniki są normalnie rozłączone i zwierają układ w momencie załączenia. Mój problem polega na tym że załączenie jest wykrywane tylko dla pinu 1, a 2 nie jest wykrywany.
Zamieniałem przełączniki miejscami i mogę stwierdzić że obydwa działają poprawnie, problem leży po stronie mikrokontrolera. Obawiam się że nie dysponuję chwilowo miernikiem i nie mogę sprawdzić dokładnego poziomu napięcia na pinie. Z konieczności podłączyłem zwykłą diodę RGB, która wskazuje na normalną pracę układu (normalnie świeci, a gaśnie dla załączenia wyłącznika)
Poniżej zamieszczam fragment kodu odpowiedzialny za detekcję załączenia. Nie sądzę by był tu błąd, gdyż działa normalnie po zmianie na PC1
while(1)
{
_delay_ms(500);
if((PINC & 0b00000100) == 0)break;
}Dla pinu 2 program wychodzi z pętli w pierwszym obejściu.
Czy macie jakieś sugestie odnośnie przyczyny problemu?