ciscoc napisał(a):
linika kodu której nie rozumie
Zmienna PulseWidth jak sama nazwa wskazuje - mówi nam za każdym razem ile ms trwał stan niski albo wysoki w ramce danych - przechwytujemy to wprost z rejestru ICR1 a przecież zainicjowaliśmy Timer1 w ten sposób, że jedno jego tyknięcie mówi nam dzięki makrom - że trwa to 1 ms
Do późniejszych obliczeń zapamiętujemy jeszcze wartość ICR1 w zmiennej LastCapture (która po restarcie ma wartość = 0) a później zawsze wartość długości przedostatniego impulsu. Opisuję też to w książce. Jak chcesz lepiej zrozumieć to weź kartkę i ołówek i sam sobie rozrysuj najprostszą ramkę RC5 i staraj się po kolei sobie rysować w którym miejscu jesteś po wykonaniu przerwania i który czas bierzemy pod uwagę.
ciscoc napisał(a):
i tutaj się pogubiłem, nie wiem czy w tym momencie jak mamy reakcję na zbocze opadające to wchodzimy do procedury obsługi przerwania ISR(TIMER1_CAPT_vect) czy do funkcji void ir_init() ?
Jak można z przerwania wejść do ir_init()? no coś ty ? toż ir_init() wywołujesz TYLKO RAZ na początku programu w MAIN.C przed pętlą główną i na tym koniec
później działasz już tylko cały czas w przerwaniu
mówię ci - kartka/ołówek i rysowanko - mi to pomogło i wielu czytelnikom też - nawet gdy o to samo tu pytali na forum bo jakbyś dobrze poszukał do IDENTYCZNE pytania już padały na tym forum
_________________
zapraszam na blog:
http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj
Kurs EAGLE ] [ mój kanał YT TV
www.youtube.com/mirekk36 ]