Wojtek
Guest
Thu May 25, 2006 4:00 pm
mam pytanko czy są jakies wytyczne na temat rezonatora kwarcowego jeśli
mikrokontroler współpracuje z odbiornikiem podczerwieni TSOP1736 .
program ma mikroprocek wygląda następująco :
Dim Kod As Bit
Dim Command As Byte , Subaddress As Byte
Reset Tcon.0
On Int0 Receiverc5
Enable Int0
Enable Interrupts
Cls
Lcd "Waiting for RC5"
Cursor Off
Do
If Kod = 1 Then
Disable Int0
Cls
Lcd "Com: " ; Command ; ",Adr: " ; Subaddress
Kod = 0
Enable Int0
End If
Loop
Receiverc5:
Getrc5(subaddress , Command)
Kod = 1
Return
Odbiornik tak jak bozia przykazała podpięty do portu P3.2 . Mikrokontroler
to AT 89s8252 z rezonatorkiem 24 Mhz .
i w wyniku tego programu po próbach z chyba 10 albo 20 różnymi pilotami na
wyświtlaczu LCD wyświetla albo com = 0 adr = 0 z każdym nacisniętym
przyciskiem
alno com = 63 adr =63 albo com 21 adr = 42 jakies takie wartości ale nie ma
jakiejś logiki w tym czasem te liczby przeskakują na inne w wyniku
wcisnięcia tych samych klawiszy w pilotach . testowałem 2 rózne egzemplarze
odbiornika tsop 1736 wymieniałem kondensator oraz rezystor ( w projektach
z różnych źrudeł były różne wartości c i r dołączonych do tsop ) i wszystko
powodowało ten sam skutek .
Nie wiem czy wartość rezonatora przy procku gra role czy nie . zmieniałem
nawet ustawienia w bascomie na różne wartości kwarcu i to samo sie dzieje.
jeśli ktoś coś w tym temacie moze pomóc to bardzo będe wdzięczny
Piotrek_P
Guest
Fri May 26, 2006 6:06 am
Quote:
Receiverc5:
Getrc5(subaddress , Command)
Kod = 1
Return
Spróbuj wywalić tą procedurę obsługi przerwania a Getrc5 wstaw w pętlę
główną programu. Ja tak robiłem dla AVR'ów i chodziło idealnie. Wydaje mi
się że procedura Getrc5 sama w sobie korzysta z przerwań i nie może się
wykonać w trakcie obsługi innego przerwania.
Pozdrawiam
Piotrek
Wojtek
Guest
Fri May 26, 2006 7:57 am
czytałem na forach dyskusyjnych, że avr'y same w sobie inicjują sobie
system przerwań przy procedurze getrc5 a 8051 musi z niego korzystać .
Użytkownik "Piotrek_P" napisał w wiadomości
Quote:
Receiverc5:
Getrc5(subaddress , Command)
Kod = 1
Return
Spróbuj wywalić tą procedurę obsługi przerwania a Getrc5 wstaw w pętlę
główną programu. Ja tak robiłem dla AVR'ów i chodziło idealnie. Wydaje mi
się że procedura Getrc5 sama w sobie korzysta z przerwań i nie może się
wykonać w trakcie obsługi innego przerwania.
Pozdrawiam
Piotrek
ADAM
Guest
Sun May 28, 2006 7:59 am
Kiedyś z ciekawości zdeasemblowałm procedure RC5 z bascoma 8051 (była to
jedna z pierwszych wersji, byc moze w nowszych jest to inaczje
zrealizowane). Procedura ta nie korzysta z przerwań , a jedynie jej
wywołanie moze nastąpic poprzez przerwanie (jezeli wjescie IR podłaczone
jest do INT i odpowiednio napisany program). W momencie wykrycia pierwszego
impulsu na wejsciu (zbocza) przerwania zostaja wyłaczone a procedura
przystepuje do "rejestracji" tego co dostaje na wejscie a dokładniej to
czasu trwania stanu niskiego i wysokiego. Czasy te sa odmierzane prosta
petlą progrogramowa i zapisywane na stosie. I to jest głowna wada tej
procedury bo do jej wykonania potrzeba sporo pamieci której w małych
układach jest b.mało. Jezeli Bascom nie kontroluje wykorzystania pamieci i
przepełnienia stosu to przy bardziej skomplikowanych programach mogą
dziac sie dziwne rzeczy...
Procedura po rejestracji danych przystepuje do ich analizy. Nastepuje
porównywanie czasu trwania stanów niskich i wysokich i wyznacznie wartosci
odpowiednich bitów w ramce transmisji RC5.
Jedyną aleta tej procedury jest niezaleznośc od czestotliwości taktowania
procesora , chociaz u mnie nie chciała działac przy mniej niz chyby 2MHz
..
Użytkownik "Wojtek" napisał w wiadomości
Quote:
mam pytanko czy są jakies wytyczne na temat rezonatora kwarcowego jeśli
mikrokontroler współpracuje z odbiornikiem podczerwieni TSOP1736 .
program ma mikroprocek wygląda następująco :
Dim Kod As Bit
Dim Command As Byte , Subaddress As Byte
Reset Tcon.0
On Int0 Receiverc5
Enable Int0
Enable Interrupts
Cls
Lcd "Waiting for RC5"
Cursor Off
Do
If Kod = 1 Then
Disable Int0
Cls
Lcd "Com: " ; Command ; ",Adr: " ; Subaddress
Kod = 0
Enable Int0
End If
Loop
Receiverc5:
Getrc5(subaddress , Command)
Kod = 1
Return
Odbiornik tak jak bozia przykazała podpięty do portu P3.2 . Mikrokontroler
to AT 89s8252 z rezonatorkiem 24 Mhz .
i w wyniku tego programu po próbach z chyba 10 albo 20 różnymi pilotami na
wyświtlaczu LCD wyświetla albo com = 0 adr = 0 z każdym nacisniętym
przyciskiem
alno com = 63 adr =63 albo com 21 adr = 42 jakies takie wartości ale nie
ma
jakiejś logiki w tym czasem te liczby przeskakują na inne w wyniku
wcisnięcia tych samych klawiszy w pilotach . testowałem 2 rózne
egzemplarze
odbiornika tsop 1736 wymieniałem kondensator oraz rezystor ( w
projektach
z różnych źrudeł były różne wartości c i r dołączonych do tsop ) i
wszystko
powodowało ten sam skutek .
Nie wiem czy wartość rezonatora przy procku gra role czy nie . zmieniałem
nawet ustawienia w bascomie na różne wartości kwarcu i to samo sie dzieje.
jeśli ktoś coś w tym temacie moze pomóc to bardzo będe wdzięczny