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.

Bascom avr - licznik impulsów

28 Gru 2012 16:48 2727 10
  • Poziom 12  
    Witam. Mam problem z timerem, który będzie liczył impulsy na wejściu T1
    Wgrywam taki kod:
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Problem jest w tym, że jak daje zasilanie na t1 to cały czas uzyskuję wartość 0
    Pozdrawiam.
  • Poziom 24  
    Przyglądnij się temu fragmentowi, ale tak dokładnie :):

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    Należałoby też skonfigurować pin T1 jako wejście i podciągnąć rezystor do VCC lub GND.
  • Poziom 12  
    Faktycznie, powinno być chyba
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Spróbuję podciągnąć wejście i skonfigurować port.

    Dodano po 2 [godziny] 11 [minuty]:

    Działa, ale nie tak jak bym chciał. Teraz jak daję impulsy to wyskakują mi liczby nie po kolei. Ja potrzebuję uzyskać taki efekt, że jak dam zasilanie na port to zwiększy mi stan jakiejś zmiennej o jeden czyli: dotykam sobie portu zasilaniem i w zmiennej mam 1- jak przytrzymam dłużej to nie może zwiększać liczb, dopiero musi zwiększyć jak puszcze i drugi raz dotknę. Stan licznika zawsze musi być zwiększany co jeden.
  • Poziom 27  
    No bo licznik jest bardzo szybki. Twój jeden impuls spowodowany dołaczeniem przewodu to jest kilkadziesiąt impulsów które widzi procesor.
    Musisz dać tzw Debouncing, albo chociażby kondenstaor na wejściu np 100n.
  • Poziom 12  
    Dałem kondesator i jest lepiej z tym że zawartość timera nie zawsze jest zwiększana co jeden szczególnie gdy z większą częstotliwością podaje impulsy.
  • Poziom 19  
    Powiedz coś więcej, jak podajesz te impulsy - przyciskiem?
  • Poziom 12  
    Impulsy podaje ręcznie dotykając portu zasilaniem.
  • Poziom 19  
    No a jak podciągnąłeś to wejście? Podaj więcej kodu
  • Poziom 19  
    A możesz wrzucić zdjęcia płytki, schemat, i obecny program jaki wgrywasz?
  • Poziom 27  
    Oczywiste że tak zawsze będzie. Tym licznikiem możesz liczyć tylko impulsy które są ukształtowane np z enkoderów, natomiast dla styków mechaniczynych musisz albo je ukształtować sprzętowo, albo zrobić debouncing programowy.
    Chodzi o to, aby z sieczki krótkich impulsów które powstają po wciśnięciu przycisku zrobić jeden impuls wydłużony. Można to zrobić na bramkach, tranzystorze, układzie 555, komparatorze itp.
    Jeśli to jest dla ciebie problem, to proponuje ci dawać impulsy nie na wejście licznika, lecz na np INT0. W tym przerwaniu dajesz opóznienie 20ms a potem sprawdzasz czy impuls dalej jest. Jeśli tak to zwiekszasz licznik.
  • Poziom 12  
    Dziękuję bardzo za odpowiedź, spróbuję to zrobić na układzie 555.