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



Teraz jest 4 maja 2026, o 14:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 10 lut 2016, o 15:01 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Dzień Dobry

Chciałem zapytać tylko o potwierdzenie poprawnego toku rozumowania odnośnie makrodefinicji zawartej w przykładowych kodach z niebieskiej książki. Jest ona związana z dekodowaniem podczerwieni i wygląda tak:

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


I moje pytanie brzmi czy zachodzą tutaj takie zależności:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2016, o 23:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

To makro po wywołaniu z wartością num
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
zwraca wynik wyliczania dla podanego num
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Czyli jak przy TIMER1_PRESCALER o wartości 8 dasz
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to będzie to równoważne z
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2016, o 14:26 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Jeszcze jedno pytanie. Chcę zrozumieć pewną rzecz. Ostatnio częściej zaglądam do manuali i mam pewną wątpliwość:

Obrazek

W manualu jest podany taki wzór. Z tego co mi wiadomo to obliczenia robimy w oparciu o:

OCRx = ((Częstotliwość taktowania/Preskaler)/Częstotliwość którą chcę uzyskać)

Dlatego skąd się wzięło "2" to przed N i "1 +" przed OCRnA. Być może nie doczytałem ale nie wywnioskowałem z obrazka, ale chciałbym to w pełni zrozumieć. Dlaczego nie korzystam z tego wzoru podanego w dokumentacji?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2016, o 15:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

IRQ (przerwanie):
OCRx = ( F_CPU / N / FREQ ) - 1

CTC Toggle OCx pin:
OCRx = ( F_CPU / 2N / FREQ ) - 1

gdzie:
F_CPU - częstotliwość taktowania procesora
N - peskaler
FREQ - częstotliowść pożądana


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2016, o 23:10 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Ok, ale potrzebuję pomocy w zrozumieniu procedury obsługi przerwania z niebieskiej książki która dekoduję podczerwień. Czytałem różne posty innych użytkowników, ale nie rozwiało to moich wątpliwości. Załączę fragment przerwania z którym mam problemy i zadam pytania.

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


1. Pierwsze pytanie zadam odnośnie zwiększania rc5cnt. Po spełnieniu warunku:

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


Można tą zmienną zwiększyć w dwóch miejscach a mianowicie:

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


i na dole:

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


Moje pytanie brzmi dalczego to jest tak zrobione? Dlaczego w dwóch miejscach jest zwiększanie tej zmiennej? Będę zadawał po jednym pytaniu. Myślę, że będzie ich ok 5-6. Potrzebuję pomocy w rozłożeniu tego na czynniki pierwsze. Proszę serdecznie o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lut 2016, o 23:27 
Offline
Moderator
Avatar użytkownika

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

moscow18-1990 napisał(a):
Dlaczego w dwóch miejscach jest zwiększanie tej zmiennej?

Ja zawsze powtarzam każdemu kto analizuje tę funkcję

- weź kartkę papieru i ołówek
- rozrysuj sobie pełną ramkę dla np adr=0 oraz cmd=1

i wtedy razem z tym analizuj po kolei ... to zawsze pomaga, gdy ktoś robi bez tego to ma same problemy ...

zmienna ta nie jest zawsze zwiększana dwa razy jak zauważysz - analizując z rysunkiem, a tylko w pewnych przypadkach


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: 16 lut 2016, o 11:36 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Czy ten specjalny przypadek i ten if wynika z tego że np. po nadaniu 1 od razu nadaję po niej zero?

Chodzi o tego ifa:

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


Sytuację ilustruje ten obrazek:

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 12:05 
Offline
Moderator
Avatar użytkownika

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

Dokładnie i jak widzisz (o ile rozpisałeś sobie całą ramkę - tzn pełną) to sam już wiesz, że to nie jest jedyny przypadek ;) bywa ich zwykle kilka a co najmniej jeden w okolicy bitu toggle


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: 16 lut 2016, o 12:27 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Ok. Rozrysowałem całą ramkę. Wcieliłem się w mikrokontroler i wykonuję to przerwanie na kartce. Jestem już bardzo blisko zrozumienia całości. Jeszcze pojawią się 2-3 pytania. Jestem w środku drugiego bitu startu, jest to trzecie przerwanie wyzwalane zboczem opadającym. Zmienna rc5cnt=2, także spełniam ten warunek:

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


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


Mam problem z tą linią:

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


Warunek ten jest spełniony gdy przerwanie jest wyzwolone zboczem narastającym. Zbocze narastające oznacza "0" po stronie odbiorczej. Do IrData wpisuję 1 gdy mam 0 po stronie odbiorczej??? Jedynkę powinienem wpisać właśnie teraz. Mam drugi bit startu czyli "1" po stronie odbiorczej, ale mam zbocze opadające czyli warunek nie jest spełniony. Tu jest kluczowy moment. Zapisanie tych danych a później ich "wyłuskanie". Jak to pojmę to wszytko stanie się zrozumiałe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 16:14 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Jeżeli ktoś byłby w stanie naprowadzić na właściwy tok rozumowania będę wdzięczny. Stanąłem w tym miejscu i coś jest nie tak w trakcie rozpisywania tego na kartce.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 16:27 
Offline
Moderator
Avatar użytkownika

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

moscow18-1990 napisał(a):
Do IrData wpisuję 1 gdy mam 0 po stronie odbiorczej???

A co ma wspólnego to ZERO czyli stan logiczny z zerem albo jedynką prezentowaną w kodzie Manchester? To chyba właśnie tego nie zrozumiałeś ...

poczytaj jeszcze raz i zobacz jak wygląda JEDYNKA w kodzie Manchester a jak ZERO (zobaczysz, że zarówno w jednym jak i drugim przypadku występuje i stan niski i wysoki ;) ..... czym się więc różni jedynka i zero w tym kodowaniu ? nie mów, że tego nie ma w książce.


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: 16 lut 2016, o 16:40 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Różni się tym, że ZERO posiada zbocze narastające a JEDYNKA opadające jeżeli chodzi o stronę odbiorczą. Wydaje mi się że ten warunek:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
sprawdza zbocze i na podstawie tego czy jest ono narastające lub opadające zapisuje do IrData jaki stan logiczny wystąpił w kodzie manchester. Tylko tak mi się wydaje. W trakcie rozpisywania moja teza nie potwierdziła się.



Ostatnio edytowano 16 lut 2016, o 16:44 przez moscow18-1990, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 16:43 
Offline
Moderator
Avatar użytkownika

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

No na pewno się tym nie różnią bity w manchesterze .... tzn też ale podstawowa różnica jest inna ( a to, że ja akurat wykorzystałem zbocza to już kwestia podejścia w algorytmie do analizy bo można też na inne sposoby analizować taki kod)


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: 16 lut 2016, o 16:53 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

W takim razie nie mam bladego pojęcia. Mogę liczyć na jakąś wskazówkę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 17:48 
Offline
Moderator
Avatar użytkownika

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

No ale przecież masz to w książce opisane jak ,....

str 331 rysunek 63 .... (nowe wydanie w twardej oprawie)


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: 16 lut 2016, o 17:57 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Myślałem, że najbardziej istotna informacja płynąca z tego rysunku to zbocze jakie znajduje się w środku bitu... No różnica jest taka przy logicznym 0 mamy najpierw stan niski a później wysoki a w logicznej jedynce odwrotnie, najpierw wysoki a później niski. Jeżeli o to chodzi to jak ma to się do tego warunku i zbierania wartości do IrData?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 lut 2016, o 18:48 
Offline
Moderator
Avatar użytkownika

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

moscow18-1990 napisał(a):
Jeżeli o to chodzi to jak ma to się do tego warunku i zbierania wartości do IrData?

Ma się i to bardzo mocno, bo po pierwsze wolę żebyś zdał sobie sprawę z tej różnicy o której piszę w książce bo jak trafisz na inny kod do analizy RC5 to nagle wymiękniesz albo powiesz, że w BB było to źle opisane ....

Po drugie to opisując wyżej popełniłeś właśnie błąd porównując stan niski do tego że warunek, którego nie rozumiesz - akurat wtedy zapisuje jedynkę ....

teraz jaśniej ?

bo zauważ, że bez tego warunku pozostaje bit zero w tej ramce zaś po spełnieniu warunku wstawiana jest jedynka

dlatego jeśli masz na kartce narysowaną ale całą ramkę, to słusznie robisz (że próbujesz wcielić się w rolę procka bo to najlepsza droga) ... próbuj teraz tak jak procek działać na tej zmiennej IrData, która na początku ramki jest zerowana.


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: 16 lut 2016, o 20:38 
Offline
Użytkownik

Dołączył(a): 15 sie 2014
Posty: 87
Pomógł: 0

Ok. Zadam pytania w punktach.Jeżeli ktoś mógłby potwierdzić dosłownie: TAK/NIE lub dać małą dygresję jak błędnie rozważam. Jutro spróbuję to jeszcze raz rozrysować ze świeżym umysłem bo dziś to już nie dam rady.

1. "Modulo 2" powoduje że "trafiamy" w środek bitu w kodzie manchester. Musimy sprawdzić czy w kodzie manchester mamy do czynienia z 0 lub 1. Dla logicznego 0 mamy zmianę ze stanu niskiego na wysoki(zbocze narastające) a dla logicznego 1 zmianę z wysokiego na niski(zbocze opadające)

2. Można zdekodować ramkę za pomocą rejestru TCCR1B i bitu ICES1(gdy 1 to zbocze narastające, gdy 0 to opadające). Warunek
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
powoduje, że:

- warunek jest spełniony gdy ICES1 = 1. Oznacza to wyzwalanie zboczem narastającym a to z kolei oznacza LOGICZNE 0 W KODZIE MANCHESTER(trafiamy w środek bitu jest zbocze narastające). Gdy mamy spełniony warunek do zmiennej IrData wpisujemy wartość 0x0001.

- warunek nie jest spełniony gdy ICES1 = 0. Oznacza to wyzwalanie zboczem opadającym a to z kolei oznacza LOGICZNE1 W KODZIE MANCHESTER(trafiamy w środek bitu jest zbocze opadające). Wtedy niczego nie wpisujemy do zmiennej IrData. Robimy tylko przesunięcie bitowe tej zmiennej o 1.

Przepraszam, że tak dogłębnie to wałkuję, ale muszę to zrozumieć bardzo dobrze. Chciałbym zrobić poradnik odnośnie struktur i wskaźników(gra Snake) a jest tam wykorzystywany pilot na podczerwień i zwrotne wywołania funkcji. Muszę to pojąć w 100%.

Jutro to rozrysuję jeszcze raz i być może zamieszczę to tutaj w paincie. Może innym to też się przyda.



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: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO