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

Bascom, lampka sterowana jednym przyciskiem.

michał651 14 Maj 2013 21:21 1530 5
  • #1 14 Maj 2013 21:21
    michał651
    Poziom 8  

    Witajcie. Popatrzyłem na inne tematy w google, na elektrodzie itp. ale nie mogę znaleźć satysfakcjonującej odpowiedzi :D Otóż mój problem polega na tym, że chcę sterować moją super lampkę jednym przyciskiem. Niestety po wielu próbach cały czas jestem niezadowolony z rezultatów. Tryby pracy przeskakują to z I=1 do I=3 itd. Ogólnie cały układ albo pracuje poprawnie, albo szaleje i nie da się nic zrobić. Wrzucam kod który napisałem. Procek to attiny2313.

    Kod: basic
    Zaloguj się, aby zobaczyć kod

    0 5
  • #2 14 Maj 2013 21:47
    domansolarpower
    Poziom 13  

    A pin int0 podciągnięty do masy dodatkowym opornikiem? Na wejście dałeś jakiś kondensator? Łatwiej wewnętrzym pullupem podciągnąć do vcc i int1=falling.

    Przerwania powinny być możliwie krótkie. Sprawdź też czy konfiguracja przerwania jest w odpowiedniej kolejności (w helpie jest to opisane).

    0
  • #3 15 Maj 2013 08:01
    glu80
    Poziom 2  

    1. Podprogram obsługi przerwania "Przerwanie" musi kończyć się instrukcją "Return"
    2. Wciśnięcie przycisku z tego co widzę łapiesz przerwaniem zewnętrznym INT0, w takiej sytuacji równolegle z przyciskiem przydałby się kondensator rzędu 100nF lub większy (trzeba popróbować), inaczej będziesz miał trzaski i w efekcie wielokrotne pojawienie się przerwania przy jednym wciśnięciu.

    A tak na marginesie to tego typu program można zorganizować w ten sposób, że ustawiasz przerwanie od timera, w tym przerwaniu sprawdzasz stan przycisku i masz to w postaci zmiennej. Na tej podstawie, ewentualnie na podstawie jeszcze innych warunków, zmieniasz stan maszyny stanowej, w rezultacie masz stan całego cyklu. Ostatecznie w programie głównym na podstawie stanu maszyny stanowej zapalasz odpowiednie lampki itd.

    0
  • #4 15 Maj 2013 11:52
    michał651
    Poziom 8  

    Dzięki za odpowiedzi :) domansolarpower, wszystko jest podłączone bez żadnych rezystorów i kodensatorów (rzecz jasna nie diody led). Dzisiaj postaram się dodać ten kondensator. Glu80, ten podprogram kończy się returnem chyba :P

    0
  • #5 15 Maj 2013 18:17
    domansolarpower
    Poziom 13  

    Przeczytaj swój kod!

    Podciągasz portd.3 (stan wysoki) i chcesz wymusić przerwanie stane też wysokim ( a raczej zboczem rosnącym - rising). To nie ma prawa dobrze działać.

    zamień na = falling, i zwieraj ten pin z masą układu.

    0