logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega16] Problemy z microswitchem (nie zawsze styka)

krdln 28 Sie 2009 11:30 1387 5
REKLAMA
  • #1 6952977
    krdln
    Poziom 13  
    Witam,
    na początku chcę wspomnieć, że to mój pierwszy µC i w zasadzie pierwszy kontakt z elektroniką, więc proszę o wyrozumiałość. Zbudowałem sobie prosty układzik: avr, dwie diodki i przycisk, i na razie go testuję. Program wygląda tak, że w pętli sprawdza, czy wciśnięty jest przycisk, jeśli jest to zapala diodkę, jeśli nie – gasi.

    Problem jest taki, że diodka nie zawsze się świeci (nie chodzi o drobne drgania, jak nie świeci to nie świeci), kiedy wciskam przycisk (microswitch jest dobry, sprawdzałem omomierzem). Co ciekawe, kiedy przyłożę palec do gnd i vcc w okolicach przycisku, wszystko śmiga poprawnie.

    Przy podłączaniu woltomierza to nóżek przycisku jest coś takiego: jeśli jest niewciśnięty, pokazuje 5.65V (chyba trochę zawyża albo mam coś z usb), a czasami 0V (czyżby wyłączało się wewnętrzne podciąganie?). Jeśli jest wciśnięty (nawet jak dioda nie świeci) to pokazuje 0V, czyli na pewno styka.

    Czy w tym wszystkim chodzi o brak tego 100nF? Liczę na was :)

    Z góry odpowiadam na kilka pytań:
    Nie, mimo podłączonego zewnętrznego, avrka chodzi na swoim kwarcu (1Mhz).
    Tak, włączyłem podciąganie.
    Tak, wyłączyłem JTAGa w fuse'ach.
    Tak, wiem, że trzeba dać 100nF między vcc a gnd.
    Nie, nie kupię go teraz, bo moja mieścina nie posiada sklepu elektronicznego.
    Tak, używałem szukarki.
    Do kodu nie mam bezpośredniego dostępu chwilowo, ale wątpię, żeby tam tkwił błąd. Aczkolwiek jeśli bardzo chcecie to wrzucę :]

    [atmega16] Problemy z microswitchem (nie zawsze styka)
  • REKLAMA
  • Pomocny post
    #2 6953298
    loocasm
    Poziom 15  
    Ja bym stawiał na zimne luty... Skoro sprawdzasz miernikiem i przycisk działa, to innego problemu nie widzę.
    Jeśli chcesz sprawdzić czy to wina braku 100nF na zasilaniu, to zmodyfikuj program tak, by coś cyklicznie robił (np. zapalał diodki), byś mógł zaobserwować ewentualny samoistny reset, czy coś w podobie.
  • REKLAMA
  • #3 6953458
    kwesoly
    Poziom 15  
    Zrozumiałem że sprawdzałeś sam microswitch - skoro to pierwszy projekt to ATmega pewnie w obudowie DIP - możesz nawet w trakcie działania woltomierzem sprawdzić czy na nóżce procka po naciśnięciu guzika masz stan niski. Jeśli jest do będziesz wiedział ze problem jest z programem - jeśli nie ma na pewno z płytką/układem.
  • REKLAMA
  • #4 6953880
    krdln
    Poziom 13  
    Dzięki loocasm, to była wina właśnie zimnego lutu (nawet nie wiedziałem, że to się tak nazywa i może sprawiać takie dziwne problemy). Jak sprawdzałem płytkę to akurat zwierało i wydawało mi się, że problem leży gdzie indziej.

    Gdyby wzmianka o zimnych lutach była tu to byśmy uniknęli kolejnego bezsensownego tematu. Wiem, szukajka nie boli, ale ciężko coś znaleźć jeśli nie wiadomo czego się szuka.

    Temat proponuję przenieść do kosza, coby nie zaśmiecał forum.

    Pozdrawiam i dzięki za pomoc
  • REKLAMA
  • #5 6962342
    loocasm
    Poziom 15  
    Miło mi, że mogłem pomóc :)
    Swoją drogą rzeczywiście, powinna być w podanym przez Ciebie poście wzmianka o sprawdzaniu WSZYSTKICH połączeń "piszczałką"/omomierzem. To niby "oczywistość", ale trudno od każdego początkującego wymagać, by zdawał sobie sprawę ze wszystkich mniej lub bardziej "oczywistych" rzeczy.
    Życzę sukcesów! A w razie czego pytaj - ja osobiście jestem zdania, że nie ma głupich pytań, są tylko głupie odpowiedzi.

    P.S. No ok, pytania o rzeczy, które są jak byk opisane w datasheecie, są wyjątkiem i rzeczywiście nazwałbym je głupimi ;)
  • #6 7061437
    sebektomczyk
    Poziom 11  
    Wbrew pozorom obsługa styczników nie jest taka oczywista. Po wciśnięciu otrzymuje się falę prostokątną - dla człowieka to chwila, ale dla procesora do kilkunastu zmian stanu, które może obsłużyć. Dlatego wciśnięcie polega na wstępnym sprawdzeniu stanu, odczekaniu kilkunastu ms, i ponownym sprawdzeniu. Dopiero wtedy powinno się obsługiwać zmianę stanu.

    Pozdrawiam
    Sebastian Tomczyk
    http://www.stelektronik.pl/
REKLAMA