Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATMEGA 8] Problem z rezystorem podciągającym do masy

23 Maj 2011 00:59 2964 11
  • Poziom 2  
    Zrobiłem taki układ (to jego fragment):
    [ATMEGA 8] Problem z rezystorem podciągającym do masy

    Jeśli mam w nim rezystor R21 łączący całość z masą to po wystawieniu na PD2 stanu wysokiego procesor nie rozpoznaje stanu wysokiego na PC3, pomimo tego, że jest tam zmierzone napięcie 5V. Po odpięciu tego rezystora da się rozpoznać stan wysoki, no ale wtedy nigdy nie ma tam stanu niskiego. Próbowałem różne rezystory od 1kΩ do 200kΩ. Próbowałem tez usunąć kondensator, ale nic to nie zmienia.

    Dlaczego tak się dzieje?

    Wiem, że najprościej było by wykrywać stan niski, ale tak jak napisałem wcześniej jest to fragment całości i potrzebuję właśnie czegoś takiego.
  • Poziom 32  
    Po pierwsze, to powiedz chociaż, że podłączyłeś odpowiednio wszystkie piny zasilania, bo przyjdą bardziej doświadczeni elektronicy z tego forum, zobaczą ten schemat i cię zjedzą już za samo to, a jest więcej rzeczy do przyczepienia się. :)

    Czy wiesz, że przy drobnej pomyłce możesz doprowadzić do efektu specjalnego w postaci eksplozji mikrokontrolera? O ile jeszcze nie uszkodziłeś portu, to wystarczy, że jeden z pinów ustawisz jako wyjście z włączonym pull-upem, a drugi jako wejście i naciśniesz przycisk. Tak się w ogóle nie robi, jak chcesz obsługiwać przycisk, to podłącz go do przycisku zwierającego z masą zasilania, ustaw pin jako wejście i włącz rezystor podciągający (ustaw stan wysoki na tym pinie).
  • Poziom 25  
    Witam,

    wskazane jest jednak abyś pokazał pełen schemat, bo z tego wyrywka, który zaprezentowałeś nie wynika czemu ci tak bardzo zależy na takim (bezsensownym nota bene) połączeniu...

    Pozdrawiam,
    GSM
  • Poziom 16  
    Ja wykrywam stany na portach bez problemu. Pod port podpinam drabinkę rezystancyjną 4k7 lub 10k pod VCC. W avrach trzeba zmieniać port raz na wyjściowy raz na wejściowy w zależności czy wystawiamy stan czy sczytujemy. Bo może problem jest w programie.
  • Moderator Mikrokontrolery Projektowanie
    McMonster napisał:
    Po pierwsze, to powiedz chociaż, że podłączyłeś odpowiednio wszystkie piny zasilania, bo przyjdą bardziej doświadczeni elektronicy z tego forum, zobaczą ten schemat i cię zjedzą już za samo to, a jest więcej rzeczy do przyczepienia się. :)

    Oj, tam zaraz zjadą :)
    Ale Twój apel do autora jak najbardziej zasadny.

    GSM napisał:
    ... bo z tego wyrywka, który zaprezentowałeś nie wynika czemu ci tak bardzo zależy na takim (bezsensownym nota bene) połączeniu...

    Faktycznie, trudno dostrzec sens, ale masz rację, że trzeba pytać o intencje by zrozumieć autora i podpowiedzieć prawidłowe rozwiązanie. Stąd pytanie do autora tematu:
    Co takim sposobem podłączenia chcesz osiągnąć?

    maxiu25 napisał:
    Pod port podpinam drabinkę rezystancyjną 4k7 lub 10k pod VCC.

    A nie wystarczą wewnętrzne pull-upy?


    maxiu25 napisał:
    W avrach trzeba zmieniać port raz na wyjściowy raz na wejściowy w zależności czy wystawiamy stan czy sczytujemy. Bo może problem jest w programie.

    Woow! Ale oczywiście to prawda, więc program przydałby się także.

    No i ostatnie pytanie: Jaki język programowania?
    Jeśli odpowiedź będzie taka jaką, oczekuje to dostaniesz ode mnie 20 pkt boś biedny strasznie (1,19pkt) :)
  • Poziom 2  
    Wczoraj siedząc po nocy doszedłem do jeszcze innej dziwnej rzeczy związanej z tym, ale sprawdzę to jeszcze raz dzisiaj, i wieczorem wszystko opiszę tak jak trzeba.

    Co do celu zastosowania tego, to chce tym osiągnąć klawiaturę matrycową gdzie na 4 pinach mam 6 przycisków.
  • Moderator Mikrokontrolery Projektowanie
    :miko: napisał:
    Co do celu zastosowania tego, to chce tym osiągnąć klawiaturę matrycową gdzie na 4 pinach mam 6 przycisków.

    Przeczucie mnie nie zawiodło, że masz jakiś specyficzny cel.
    Rozrysuj całość tej klawiatury bo z tego fragmentu niewiele wynika.
  • Poziom 30  
    Nie wiem jaki tam rezystor ściągający zastosowałeś ale ja w swoich projektach daje zazwyczaj 3,3k (max do 4,7k) i bez problemu wykrywam stan wysoki. Wg mnie coś przekombinowałeś z programem - błędna konfiguracja portów albo odczyt z pinów...
  • Poziom 25  
    To już nie lepiej zrobić klawiaturkę na 1 pinie ADC? Mniej kombinacji, prościej, i oszczędzasz jeszcze więcej pinów :wink:

    Pozdrawiam,
    GSM
  • Poziom 30  
    @GSM - pomysł z klawiaturą na ADC jest w pewnych sytuacjach genialny i niezastąpiony ale ma jednak tę wadę, że komplikuje nieco fakt wciśnięcia np. dwóch klawiszy i samo badanie jest ciut wolniejsze. W każdym razie autor projektu powinien rozważyć też i taką możliwość aczkolwiek nauka oprogramowania matrycy na pewno zaowocuje w przyszłości...
  • Poziom 32  
    Ale po co się męczyć, skoro Atmel napisał notę aplikacyjną na ten temat, gdzie jest matrycowa klawiatura, działanie na przerwaniach i niski pobór prądu.
  • Poziom 2  
    W końcu zabrałem się za to przez weekend i okazało się, że przyczyna jest oczywiście najprostsza i najbardziej oczywista z możliwych, aż głupio pisać, że winne było drganie styków. Niestety to co działało (albo mi się wydawało, że działało) na płytce stykowej, po zlutowaniu zupełnie nie zdało egzaminu i powodowało takie a nie inne zachowanie programu.


    Skoro już temat zacząłem to opisze jaki był tego zamysł:

    [ATMEGA 8] Problem z rezystorem podciągającym do masy

    INT0 i INT1 jako wejścia z podciągnięciem do Vcc, na porcie C (PC2 i PC3) stany niskie, po naciśnięciu przycisku wywoływane jest przerwanie, pin na którym zostanie wywoływane przerwanie przełącza się w stan wysoki, następnie zczytywana jest wartość portu C, wyodrębniane są stany odpowiednich pinów (PC2 i PC3). Jeśli wciśnie się lewy przycisk to odczytywana jest 1, jeśli prawy 2, a jeśli środkowy 3, bo diody puszczają stan wysoki na obydwa używane piny portu C.

    Problem drgania styków rozwiązałem w taki sposób:
    [ATMEGA 8] Problem z rezystorem podciągającym do masy
    Niestety nie jest on do końca prawidłowy, mniej więcej przy co 20 - 40 naciśnięciu (a w zasadzie przy puszczeniu) pojawia się drganie wywołujące powtórne przerwanie.

    Dawałem również kondensator między styki przełącznika a masę, ale wtedy pojawiał się problem przy zmianie stanu z niskiego na wysoki, napięcie za wolno narastało i procedura przerwania za bardzo by się wydłużyła. Być może kondensator jest za duży, jeszcze spróbuje z mniejszym.

    Kod: c
    Zaloguj się, aby zobaczyć kod