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.

Attiny2313 i debounce. Drgania na przełącznikach.

30 Lis 2011 18:41 1999 6
  • Poziom 10  
    Witam
    Mam problem z napisanym programem na attiny 2313, program może jest prosty ale dopiero co się uczę programowania mikroprocesorów w Bascomie.Program sam w sobie działa ale jest problem z drganiami na przełącznikach,switche mam podciągnięte do gnd,diody katodami do gnd anodami do procka.Czytałem o funkcji debounce i o timerach ale narazie timery zostawiłem na boku przyjdzie na to czas.Po prostu nie jestem w stanie weliminować tych drgań,proszę was o pomoc.
    Kod programu
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    Za Pomoc będę wdzięczny.
    Pozdrawiam
  • Poziom 8  
    Zacznij od tego
    Code:
    if pin.x=0 then
    
    waitms 30
    call podprogram
    else
    end if


    Po przejściu do podprogramu też możesz dać na wstepie waitms 100 (jeśli w nim też używasz tego przycisku).

    Switch podciągnięty do masy? - rozwiń temat :)
  • Poziom 42  
    zabardzo napisał:
    Zacznij od tego
    Code:
    if pin.x=0 then
    
    waitms 30
    call podprogram
    else
    end if


    Po przejściu do podprogramu też możesz dać na wstepie waitms 100 (jeśli w nim też używasz tego przycisku).

    Switch podciągnięty do masy? - rozwiń temat :)


    Kolego zabardzo, to co podpowiadasz to niestety jest niezabardzo, albo nawet gorzej :( ... spróbuj wytłumaczyć gdzie jest w tym twoim przykładzie eliminacja drgań styków? (to może sam dostrzeżesz swoje błędy), a już pomysł o dodaniu kolejnego waitms na wstępie podprogramu to już niestety w ogóle hmmm .. pomysł.

    Jeśli już Bascom panie autor, to jednak polecam ci zdecydowanie gotową funkcję, którą masz DEBOUNCE bo ona do działania żadnych timerów nie potrzebuje a bardzo dobrze robi to co ma robić jak na takie podstawowe potrzeby.

    Dodano po 1 [minuty]:

    zabardzo napisał:

    Switch podciągnięty do masy? - rozwiń temat :)


    Poza tym zwyczajowo podciąga się switch do VCC i to programowo nawet a nie zewnętrznym rezystorem, a jeśli zewnętrznym to też najlepiej do VCC.
  • Poziom 10  
    Witam

    Przyciski podłączone są do gnd.Narazie walczę z twoją wskazówką ale nic nie wychodzi, dalej diody reagują na drgania styków tzn. że co jakiś czas się zapalają tak jak powinny czyli jedno naciśnięcie przycisku 1 zapala jedna diodę ponowne naciśniecie zapala 2 diodę i ponowne naciśniecie zapala 3 diodę,a nieraz zapalą się 2 na raz albo 1 i 3 się zapali po jednym naciśnięciu.

    Zmieniłem trochę oprogramowanie ale problem pozostał taki sam.

    Pozdrawiam

    Witam

    Walcząc dalej wklepałem taki kod do attiny2313 ale coś nie działa jak powinien zamiast zapalać 3 diody to zapala 1 i 2 switchem gasi.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod



    Wiem że można zastosować sprzętowe rozwiązanie, ale na taki prosty układ powinno wystarczyć polecenie debounce jak napisał kolega parę postów wyżej.

    Pozdrawiam

    2 kod który działa ale to jeszcze nie to:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Pytanie początkującego czemu w 1 kodzie nie działa z funkcją elseif?
    pozdrawiam
  • Poziom 8  
    Drganie styków możesz rozwiązać nie programowo a sprzętowo :) Wtedy będziesz wiedział czy to żeczywiście wina programu czy sprzętu.

    Proszę poprawić treść wiadomości - gramatyka.
    Poza tym, interpunkcja też jest bardzo ważna.
    [zumek]
  • Pomocny post
    Poziom 16  
    Witam.
    Wypróbuj to:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Program pisany na szybkiego, ale powinien działać wg założeń.

    Pozdrawiam
  • Poziom 10  
    jacekk232 napisał:
    Witam.
    Wypróbuj to:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Program pisany na szybkiego, ale powinien działać wg założeń.

    Pozdrawiam



    Witam

    Dzięki kolego jacekk232 twój program działa wyśmienicie :D, tak właśnie chciałem żeby działał.Teraz na przykładzie twojego kodu, już będę wiedział jak pisać program z wykorzystaniem switchy i funkcją debounce.Powiedz mi tylko czemu nie działał mój program z elseif co tam było zle napisane.
    Jeszcze raz dzięki za pomoc.
    Pozdrawiam wszystkich co wzieli udział w tej dyskusji.