Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 kwi 2026, o 15:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 25 sie 2014, o 07:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 lut 2014
Posty: 96
Lokalizacja: Łódź
Pomógł: 6

Witam serdecznie

Studiuję właśnie procedurę odbioru kodów RC5 stworzoną przez Mirka. Zastanawia mnie zapis:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Dokładnie chodzi mi o sytuację, kiedy, dany bit został odebrany w 65530 tyknięciu Timera1, natomiast kolejny z ramki nadejdzie w, powiedzmy dla uproszczenia, 20 tyknięciu po zatoczeniu koła przez licznik.

Co daje 20 + (65535 - 65530) + 1 = 26 tyknięć licznika dla odebrania jednego bitu w tym przypadku. Jak zachowa się powyższa procedura (konkretnie to odejmowanie uintów) w takiej sytuacji - na granicznych wartościach timera?

Czyli skoro: PulseWidth = 20 - 65530;
To: PulseWidth == ?



Próbowałem to rozpisywać w kodzie uzupełnień do dwóch, ale coś mi nie idzie :)

Czuję się zaskoczony - już tyle czasu ćwiczę te mikroklocki, różne kombinacje odczyniam, a tu nagle mnie taka podstawowa sprawa zaskakuje :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2014, o 08:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

weź sobie dla uproszczenia rozważań jeden bajt ;) i zobacz co wyjdzie np z:

2 - 254= ???

pomóż sobie nawet kalkulatorem windows, przestawionym w tryb programisty, wykonaj to działanie i przełącz się na podgląd BIN, mając ustawioną długość liczby WORD

zobacz co ci wyjdzie ;) .... spójrz na zawartość starszego bajtu ale SZCZEGÓLNIE na zawartość młodszego bajtu i pamiętaj - że operację przeprowadzamy na JEDNYM bajcie ;)

_________________
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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2014, o 08:07 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Może to ci pomoże :-)
(uint16_t) 0 - 1 = 65535
więc dalej
(uint16_t) 20 - 65530 = 20 - 21 - 65509 = 65535 - 65509 = 26


Autor postu otrzymał pochwałę

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2014, o 08:08 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

o i kolega wyżej podał już gotową odpowiedź ;)


Autor postu otrzymał pochwałę

_________________
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 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2014, o 09:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

No to jeszcze jeden mały przykładzik topic5609.html#p65742


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 sie 2014, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 lut 2014
Posty: 96
Lokalizacja: Łódź
Pomógł: 6

Już kumam :D

Dzięki wielkie!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 10 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO