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] - Attiny13 - Przerwanie Timer'a - krótki impuls

kjuba13 28 Kwi 2013 17:19 1659 5
  • #1 28 Kwi 2013 17:19
    kjuba13
    Poziom 11  

    Piszę program, do czasowego wyzwalania migawki:
    Na pokładzie mam attiny13, tact-switcha, oraz diodę led i transoptor.
    Układ ma wysyłać impuls ok 300ms co określony czas. Czas ustawia się poprzez wciskanie przycisku - jedno wciśnięcie = 0.5s więcej. Dłuższe przyciśnięcie (pow. 3s) powoduje ustawienie minimalnego czasu(0.5s).
    Problem jest taki, że im dłużczy czas ustawię, tym dłużej trwa sam impuls. Co może być nie tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Z góry dziękuję za pomoc

    Edit: Na sposób mrugania led'em proszę nie patrzeć - zrobione na szybko, tylko do testów

    0 5
  • #2 28 Kwi 2013 17:42
    BlueDraco
    Specjalista - Mikrokontrolery

    Prawie wszystko jest nie tak - oczekiwanie w przerwaniu, brak eliminacji drgań. To nie tak się robi - potrzebujesz przerwania timera zgłaszanego ze stałą częstotliwością, np. 100 Hz, i w nim robisz wszystko - sprawdzasz stan przycisku i odmierzasz czasy impulsów.

    0
  • #3 28 Kwi 2013 17:46
    kjuba13
    Poziom 11  

    O eliminacji drgań pamiętam - na razie jest poprzez kondensator i opornik, lecz jak będę kończył program, to to dopiszę.
    Możesz mi wyjasnić dlaczego jest źle?:
    Sprawdzam sobie stan samego timera z częstotliwością 10hz w tym wypadku, a stanu przycisku nie sprawdzam, ponieważ jest wywoływany przerwaniem INT0

    Edit: Już sobie poradziłem - pomyliłem PINB z PORTB

    0
  • #4 28 Kwi 2013 19:04
    BlueDraco
    Specjalista - Mikrokontrolery

    Przycisk na przerwaniu... świetny pomysł... prosisz się o kłopoty.

    0
  • #5 29 Kwi 2013 15:48
    SylwekK
    Poziom 29  

    Ale namieszałeś, posłuchaj lepiej i zrób jak radzi @BlueDraco. Timery można szybko ogarnąć, program zyskał by na przejrzystości i zapewne zajął dwa razy mniej miejsca niż w obecnej wersji, przy okazji działał bardziej przewidywalnie.

    0
  • #6 29 Kwi 2013 15:50
    kjuba13
    Poziom 11  

    Usiadłem do tego jeszcze wczoraj wieczorem i poprawiłem :)
    Wcześniej czytając o przerwaniach na przycisku i testując kilka rzeczy własnoręcznie - człowiek uczy się całe życie.

    0