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 avr - licznik impulsów

komor34 28 Gru 2012 16:48 2532 10
  • #1 28 Gru 2012 16:48
    komor34
    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.

    0 10
  • #2 29 Gru 2012 09:24
    Mundi1970
    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.

    0
  • #3 29 Gru 2012 11:55
    komor34
    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.

    0
  • #4 29 Gru 2012 23:58
    Fredy
    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.

    0
  • #5 31 Gru 2012 13:21
    komor34
    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.

    0
  • #6 02 Sty 2013 18:59
    paavo91
    Poziom 19  

    Powiedz coś więcej, jak podajesz te impulsy - przyciskiem?

    0
  • #7 04 Sty 2013 21:11
    komor34
    Poziom 12  

    Impulsy podaje ręcznie dotykając portu zasilaniem.

    0
  • #8 04 Sty 2013 21:22
    paavo91
    Poziom 19  

    No a jak podciągnąłeś to wejście? Podaj więcej kodu

    0
  • #9 04 Sty 2013 21:24
    Rokita1993
    Poziom 19  

    A możesz wrzucić zdjęcia płytki, schemat, i obecny program jaki wgrywasz?

    0
  • #10 04 Sty 2013 23:54
    Fredy
    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.

    1
  • #11 05 Sty 2013 10:17
    komor34
    Poziom 12  

    Dziękuję bardzo za odpowiedź, spróbuję to zrobić na układzie 555.

    0