Witam.
Ostatnio zacząłem bawić się w obsługę RC5, ponieważ jest mi ona potrzebna w pewnym projekcie. Po uruchomieniu odbiornika na M8 przyszedł czas na nadajnik. Prowizoryczny był na M8 jednak docelowy miał być na attiny45, ale trochę zbyt późno dowiedziałem się, że Attiny nie posiada 16-bitowego timera1, a także Bascom nie potrafi skonfigurować jego liczników.
Dlatego postanowiłem napisać procedurę wysyłania w RC5. Kod jest kompletny, jednak nie wiem, czy wszystko jest tak jak powinno, czy timery chodzą tak jak tego chciałem.
Nadajnik nadaje, tylko nie zawsze to co ja bym chciał - zmieniają się odebrane liczby.
Jeżeli ktoś byłby tak miły i spojrzał na te moje wypociny i powiedział, dlaczego tak się dzieje bardzo zobowiązany
Odbiornik jest tak skonfigurowany, że jeśli pojawi się coś podczas odbioru rc5 to wyświetla adres i komendę <255 i dlatego nie jest ważne co wyślę; powinno się pojawić.
Wątpliwości mam co do dobranych przeze mnie czasów i do kolejności wysyłania bitów. U mnie jest od najstarszego (5-tego lub 6-tego) w dół.
Czasy to:
wartość timera, to liczba, którą ma odliczyć, nie wpisana
wartość_timera__preskaler___czas taktu
111___________*___1____*0,000 000 125 = 13,875 us częstotliwość 72 072kHz
______________________________________ 72 072 / 2 = 36 036kHz - nośna
27____________*__256___*0,000 000 125 = 864us - czas połówki bitu wysyłanego
______________________________________864*2 = 1,728ms czas 1 bitu
Co do schematu, to nie ma w nim nic nadzwyczajnego. Zasilanie 5 V, kondensator 10 uF na 15cm przewodzie, brak ceramika 100 uF, tranzystor KSB772 (innego nie miałem).
Wszystko ma się zmieścić na płytce 1,5 cm x 0,5 cm, dlatego jest attiny w smd i będą jeszcze dodatkowo 3 przyciski. Zależy mi na jak najmniejszej ilości elementów zewnętrznych.
Strony z których korzystałem:
http://www.ustr.net/infrared/index.shtml
http://www.slideshare.net/biometria/rc5
///edit///
Naniosłem małą poprawkę
zamiast
Teraz działa jak powinno przy 1 wysyłaniu, ale przy następnych wysyła mi różne inne cuda
A dokładnie:
wysyłam adr 3 i kom 12
za pierwszym razem otrzymuję adr 3 i kom 12, ale później
com 191 i adr 31 czyli binarnie 1011 1111 i 0001 1111
i tak cały czas. W sumie nie jest mi to potrzebne, bo wystarczy jak wyśle 1 raz, bo procesor podczas każdego naciśnięcia włącza się, a gdy nie ma wciśniętego przycisku to jest odłączony od zasilania. Ale może w późniejszym czasie wykorzystam przytrzymanie przycisku, dlatego chciałbym wiedzieć gdzie jest błąd?
Ostatnio zacząłem bawić się w obsługę RC5, ponieważ jest mi ona potrzebna w pewnym projekcie. Po uruchomieniu odbiornika na M8 przyszedł czas na nadajnik. Prowizoryczny był na M8 jednak docelowy miał być na attiny45, ale trochę zbyt późno dowiedziałem się, że Attiny nie posiada 16-bitowego timera1, a także Bascom nie potrafi skonfigurować jego liczników.
Dlatego postanowiłem napisać procedurę wysyłania w RC5. Kod jest kompletny, jednak nie wiem, czy wszystko jest tak jak powinno, czy timery chodzą tak jak tego chciałem.
Nadajnik nadaje, tylko nie zawsze to co ja bym chciał - zmieniają się odebrane liczby.
Jeżeli ktoś byłby tak miły i spojrzał na te moje wypociny i powiedział, dlaczego tak się dzieje bardzo zobowiązany
Odbiornik jest tak skonfigurowany, że jeśli pojawi się coś podczas odbioru rc5 to wyświetla adres i komendę <255 i dlatego nie jest ważne co wyślę; powinno się pojawić.
Wątpliwości mam co do dobranych przeze mnie czasów i do kolejności wysyłania bitów. U mnie jest od najstarszego (5-tego lub 6-tego) w dół.
Czasy to:
wartość timera, to liczba, którą ma odliczyć, nie wpisana
wartość_timera__preskaler___czas taktu
111___________*___1____*0,000 000 125 = 13,875 us częstotliwość 72 072kHz
______________________________________ 72 072 / 2 = 36 036kHz - nośna
27____________*__256___*0,000 000 125 = 864us - czas połówki bitu wysyłanego
______________________________________864*2 = 1,728ms czas 1 bitu
Co do schematu, to nie ma w nim nic nadzwyczajnego. Zasilanie 5 V, kondensator 10 uF na 15cm przewodzie, brak ceramika 100 uF, tranzystor KSB772 (innego nie miałem).
Wszystko ma się zmieścić na płytce 1,5 cm x 0,5 cm, dlatego jest attiny w smd i będą jeszcze dodatkowo 3 przyciski. Zależy mi na jak najmniejszej ilości elementów zewnętrznych.
Strony z których korzystałem:
http://www.ustr.net/infrared/index.shtml
http://www.slideshare.net/biometria/rc5
Kod: VB.net
///edit///
Naniosłem małą poprawkę
Kod: VB.net
zamiast
Kod: VB.net
Teraz działa jak powinno przy 1 wysyłaniu, ale przy następnych wysyła mi różne inne cuda
A dokładnie:
wysyłam adr 3 i kom 12
za pierwszym razem otrzymuję adr 3 i kom 12, ale później
com 191 i adr 31 czyli binarnie 1011 1111 i 0001 1111
i tak cały czas. W sumie nie jest mi to potrzebne, bo wystarczy jak wyśle 1 raz, bo procesor podczas każdego naciśnięcia włącza się, a gdy nie ma wciśniętego przycisku to jest odłączony od zasilania. Ale może w późniejszym czasie wykorzystam przytrzymanie przycisku, dlatego chciałbym wiedzieć gdzie jest błąd?