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



Teraz jest 30 mar 2026, o 19:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
 Tytuł: 11_RC5_decode
PostNapisane: 8 lip 2013, o 18:46 
Offline
Nowy

Dołączył(a): 26 cze 2013
Posty: 19
Pomógł: 0

Witam,

Kto z forumowiczów jest w stanie powiedzieć mi coś na temat długości półowki jak i całego bitu. Z tego co wiem to w rc5 połówka to 889us.
Z obliczeń wychodzi mi MIN_HALF_BIT=1378us
MAX_HALF_BIT=2178us przecież to długość ponad całego BITU!
MAX_BIT=3956us
#define TIMER1_PRESCALER 8

// przeliczanie tyknięć Timera1 przy danym preskalerze na mikrosekundy
#define ir_micro_s(us) ((us)*(F_CPU/1000000)/TIMER1_PRESCALER)

// stałe czasowa i tolerancja wyrażone w us
#define TOLERANCE 200
#define MIN_HALF_BIT ir_micro_s(889 - TOLERANCE)//((689)*(16M/1M)/8) czyli (689*2)czyli MIN_HALF_BIT = 1378us
#define MAX_HALF_BIT ir_micro_s(889 + TOLERANCE)//(1089*2)czyli MIN_HALF_BIT = 2178us
#define MAX_BIT ir_micro_s((889+889) + TOLERANCE)//(1978*2) czyli MAX_BIT = 3956us

Ps ma zestaw EVB 4.3 ustawiony na zewnętrzy KRYSZTAŁ 16MHz.
Układ działa odczytuje kody z pilota



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lip 2013, o 21:35 
Offline
Moderator
Avatar użytkownika

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

Źle podchodzisz do tego przeliczania :(

to makro powstało nie po to aby na wyjściu obliczać mikrosekundy panie kochany a ilości tyknięć timera. Dlatego te twoje wyliczenia są o tyle złe że na końcu dodałeś sobie us!

#define TOLERANCE 200
#define MIN_HALF_BIT ir_micro_s(889 - TOLERANCE)//((689)*(16M/1M)/8) czyli (689*2)czyli MIN_HALF_BIT = 1378us
#define MAX_HALF_BIT ir_micro_s(889 + TOLERANCE)//(1089*2)czyli MIN_HALF_BIT = 2178us
#define MAX_BIT ir_micro_s((889+889) + TOLERANCE)//(1978*2) czyli MAX_BIT = 3956us

więc jeszcze raz to nie us - tylko ilość tyknięć timera - spróbuj to sobie przeliczyć dla 8MHz ;) to się akurat wtedy będzie zgadzało z mikrosekundami ponieważ przy 8MHz jedno tyknięcie to 1us .... ale już przy 16us jak się domyślasz nie ;)

_________________
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: 9 lip 2013, o 06:17 
Offline
Nowy

Dołączył(a): 26 cze 2013
Posty: 19
Pomógł: 0

Piekne dzięki! , aczkolwiek zmylił mnie komentarz:

// stałe czasowa i tolerancja wyrażone w us.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lip 2013, o 08:10 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
// stałe czasowa i tolerancja wyrażone w us.


tak w us dla użytkownika biblioteki ;) tzn wygodnie podajesz argument makra w us - bo komu chciałoby się wciąż go przeliczać - szczególnie gdy np zmieniasz sobie troszkę tolerancję

_________________
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: 9 lip 2013, o 21:15 
Offline
Nowy

Dołączył(a): 26 cze 2013
Posty: 19
Pomógł: 0

No wszystko jasne 1/2M = tykniecie co 0.5us. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 20:40 
Offline
Nowy

Dołączył(a): 26 cze 2013
Posty: 19
Pomógł: 0

Jeszcze takie małe pytanko w pliku ir_decode.c

Mamy następujący zapis:

if((TCCR1B & (1<<ICES1))) IrData |= 0x0001;

Mam wrażenie , że marnujemy tu niepotzebnie 2 nawiasy, wydaje mi się , że zapis:

if(TCCR1B & (1<<ICES1)) IrData |= 0x0001; będzie również prawidłowy/czytelny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 20:49 
Offline
Moderator
Avatar użytkownika

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

tomavka napisał(a):
Mam wrażenie , że marnujemy tu niepotzebnie 2 nawiasy


A powiedz mi w czym to marnotrastwo się przejawia ? .... w pisaniu dodatkowych znaków na klawiaturze ? czy może upatrujesz tu jakichś dodatkowych działań ze strony kompilaora ? ;)

oczywiście, że można tak jak piszesz .... zrezygnować z tych dodatkowych nawiasów - tyle że to jest książka, w której staram się na swój sposób tłumaczyć początkującym co to są wyrażenia ... i dlatego często umieszczam dodatkowe nawiasy aby coś lepiej pokazać....

Marnotrawstwa tu żadnego nie ma jeśli chodzi o kod, za to dydaktyka jest lepsza. Nie wszystko co super zoptymalizowane jest panie kolego łatwe do zrozumienia dla kogoś kto zaczyna.

_________________
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: 15 lip 2013, o 20:58 
Offline
Nowy

Dołączył(a): 26 cze 2013
Posty: 19
Pomógł: 0

Tak się składa że właśnie czytam książkę, dla mnie(nie wiem jak dla reszty)kod staje się nieczytelny/niejasny, więc pytam się grzecznie czy jest jakiś ukryty sens.
Jeśli nie, dziękuje pięknie za odpowiedź.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lip 2013, o 21:11 
Offline
Moderator
Avatar użytkownika

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

No to napisałem jaki jest sens - i wcale nie ukryty. Tylko wyjaśniłem jaki - też grzecznie oczywiście ....

if( (wyrażenie) )

o ile wyrażenie będzie np a>5 czyli

if( a>5 )

sprawa jasna i przejrzysta

ale jeśli będzie to np

if( a & (1<<5) ) ....

to niektóre osoby bez żadnego doświadczenia się tu gubią - to że dla ciebie to jest już nieczytelne:

if( ( a & (1<<5) ) )

to już całkiem inna kwestia .... niestety nie wszystkim uda mi się dogodzić w książce. Natomiast nie można oceniać czegoś tylko przez że tak powiem (bez urazy proszę) czubek własnego nosa .... tzn że jak dla ciebie niejasne to znaczy że dla wszystkich niejasne i nieczytelne.

Dlatego jeszcze raz powtórzę - ja mam w książce swój pewien plan dydaktyczny - i myślę, że oceną czy jest zły czy dobry może się zająć ktoś kto chociażby spróbował - nawet nie w postaci książki ale np jakichś poradników, kursów itp - wyjaśniać te same zagadnienia po swojemu - wg swojej wizji i ocenić wtedy zainteresowanie i zadowolonych ludzi z takich poradników.

Ja wierzę, że pewnie byłoby ich sporo - gdyż ja ze swoimi metodami nie do wszystkich dotrę - to zrozumiałe, więc jeśli już krytyka że coś źle przekazuję w książce i że jest nieczytelne i niezrozumiałe - to mówię - proszę pokazać innym solidną własną alternatywę a nie kończyć na takiej - no troszkę wg mnie bezpodstawnej krytyce.

A tym bardziej, że jeszcze raz podkreślę ilość nawiasów NIE WPŁYWA tu na wielkość kodu

mam nadzieję, że teraz precyzyjnie się wyraziłem i nie uraziłem kolegi - bo na pewno nie było to moim zamiarem.

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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