ATNEL tech-forum https://forum.atnel.pl/ |
|
[STM32F103 ][STD] Sterowanie Pilotem Biblioteka Nec https://forum.atnel.pl/topic21384.html |
Strona 1 z 1 |
Autor: | danny [ 7 paź 2018, o 14:19 ] |
Tytuł: | Re: [STM32F103 ][STD] Sterowanie Pilotem Biblioteka Nec |
Do zrobienia jest obsługa dłużej przytrzymywanego przycisku. Oryginał pochodzi ze strony firmy Lispol, przy okazji oferty sprzedaży pilota NEC. W miejscach gdzie ingerowałem w kod, oryginalna częśc jest zakomentowana. Dodałem callbacki i wydaje mi się, że w oryginale był błąd: Standard NEC mówi, że bity address i command są ustawione tak, że bit najmłodszy LSB powinien być po lewej stronie, najstarszy po prawej. Źródło: http://techdocs.altium.com/display/FPGA ... n+Protocol Tak więc ramkę z załącznika powinien odczytywać: address 0x04; command 0x72 Natomiast odczytywana była jako: address 0x20, command 0x4E nec.h język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
nec.c język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
main.c |
Autor: | mikandrzej [ 19 paź 2018, o 22:28 ] |
Tytuł: | Re: [STM32F103 ][STD] Sterowanie Pilotem Biblioteka Nec |
Napisz ją sam Wystarczy użyć przerwania sprzętowego oraz jednego z TIMERów Ja robię to tak: 1. W przerwaniu wyzwalanym na zboczu opadającym odczytuję z TIMERa czas jaki minął od ostatniego przerwania. Licznik tyka co 0,1ms. 2. pierwszy impuls powinien trwać 155 tyknięć (wartość +/- ustawiłem na 3 tyknięcia [0,3ms]) jeśli jest poprawny, to zwiększam licznik poprawnych bitów, jeśli nie, to zeruję licznik i znów czekam na impuls przynajmniej 155 tk 3. kolejne impulsy to: a) 12 tyknięć (+/- 3tk) - logiczne 0 b) 22 tyknięcia (+/- 3tk) - logiczne 1 4. Z każdym tyknięciem inkrementuję licznik i w przypadku logicznej jedynki, ustawiam odpowiedni bit w 32 bitowej zmiennej 5. Jeśli cała ramka zostanie odebrana poprawnie, to wywołuję zarejestrowaną funkcję. Jeśli nie, zeruję licznik i czekam na impuls startowy. Z każdym przerwaniem zeruję timer. Należy zawrzeć w programie możliwość wystąpienia impulsu startu nawet w trakcie liczenia bitów, w razie gdyby w trakcie transmisji coś zawiodło ( w praktyce często tak jest) - czyli za każdym razem jak przyjdzie impuls 155 tk należy przerwać odbiór, wyzerować licznik i czekać na kolejne dane. Kod tak naprawde na kilka linijek Dodatkowo trzeba jeszcze opanować przytrzymywanie przycisku - ja tego nie robiłem, ale z analizatorem stanów nie powinien to być problem. Powodzenia btw. polecam stronę: https://exploreembedded.com/wiki/NEC_IR_Remote_Control_Interface_with_8051 |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |