Rozumiem,że suma nodulo zaczyna się co 2, znam kod MANCHESTER, patrzę na fazę odbioru nie nadawczą. Jeszcze raz ostatni, drugie przerwanie czyli od zbocza narastającego, (pierwsze było od opadającego w którym to zmienna rc5cnt=0), gdyż jesteśmy w drugim bicie startu, zmienna rc5cnt =1 i czekamy na to aż zmienna PulseWidth będzie większa niż MAX_HALF_BIT (może tego nie zauważam),gdzie dokonuje się inkrementacja zmiennej rc5cnt na 2. Ale po tym czasie jesteśmy już w drugiej połowie 2 bitu startu i w kolejnym przerwaniu gdyż
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Dopiero tutaj następuje zmiana zbocza z wcześniejszego opadającego, które było ustawione zaraz na początku pierwszej połowy 2 bitu startu, teraz na wznoszące i bit ICES1 będzie miał wartość w rejestrze TCCR1B jeden, co po przejściu do warunku da nam w Irdata =1. Koniec mojego rozumowania, rejestr TCCR1B i bit ICES1 mają związek w tym warunku,stąd zdanie
Cytuj:
Po 1. Co ma bit ICES1 do tego co trafi do Irdata? To są 2 różne rzeczy. Warunek
jest moim zdaniem sprzeczne z tym kolejnym
Cytuj:
Kod:
if((TCCR1B & (1<<ICES1))) IrData |= 0x0001;
Sprawdza jakie z jakiego zbocza było wywołane przerwanie, aby wiedzieć czy dany bit był 1 czy 0.
jeżeli narastające bit 1 , opadające bit 0. Irdata =1 tylko gdy bit ICES1=1, zbocze narastajace.Koniec
Albo ja nie myślę logicznie albo coś mi tu ciągle ucieka.