Witam
Mam pytanie. Analizuję kod obsługi RC5 z BB, zastanawia mnie jak mierzona jest długość impulsu w chwili gdy rejestr ICP1 jest w okolicach przepełnienia. Nie wiem czy dobrze to rozumiem, stąd moje pytanie. Ja rozumiem działanie kodu w ten sposób. Timer1 non-stop zlicza impulsy 1us w momencie wystąpienia zbocza opadającego zapamiętywana jest wartość rejestru ICP1 do zmiennej PulseWidth np 1000 minus LastCapture. Gdy impuls jest jako pierwszy to LastCapture jest = 0.
Kod:
PulseWidth = ICR1 - LastCapture;
LastCapture = ICR1;
więc PulseWidth = 1000, a LastCapture również = 1000.
Następnie przełączana jest reakcja na zbocze. Przy wystąpieniu przeciwnego zbocza ponownie obliczana jest wartość PulseWidth które teraz równa się PulseWidth = ICR1 (np 1800) - LastCapture(poprzednio1000) czyli PulseWidth = 800, a LastCapture = 1800.
Zgadza się?
Zastanawia mnie co będzie gdy po kolejnych impulsach pierwsze "otwierające" zbocze kolejnego z rzędu impulsu będzie w chwili gdy np ICP1 = 65100. W tedy do LastCapture zostanie również przepisana wartość 65100. Drugie zbocze "zamykające" impuls wystąpi już po przewinięciu rejestru który będzie wynosił np ICP1 = 365 i co w tedy?
Czy rejestr ICP jest w którymś momencie resetowany żeby się nie przewinął?
Zdaję sobie sprawę, że coś źle rozumuję bo kod dział znakomicie, dlatego proszę naprowadźcie mnie na "właściwe tory".