Witam,
jestem nowy zarówno na forum, jak i w świecie mikrokontrolerów. Chciałem zbudować sobie odbiornik podczerwieni do komputera i oczywiście pojawił się problem. Układ został zmontowany poprawnie, nie ma równieź zimnych lutów. Ale mam problem z programem. Otóż, do nóżki INT0 89c2051 podłączyłem element sfh5110 (36 kHZ). Napisałem (w Bascomie) program do odbioru komunikatu z pilota, ale nie działa. Poniżej odpowiednie fragmety listingu :
'deklaracje
Dim test As Bit
Dim Rozkaz_pilota As Byte
Dim Adr As Byte
Czerw Alias P1.1
'konfiguracja
Reset Tcon.0
On Int0 Odbierzrc5
Enable Int0
Enable Interrupts
(...)
'poczatek programu
Bitwait test , Set
Disable Int0
Reset test
(...)
'procedura obslugi przerwania
Odbierzrc5:
Getrc5(adr , Rozkaz_pilota)
If Adr = 0 Then
Set test
Else
Reset test
Reset Czerw
Waitms 240
Set Czerw
End If
Return
I pojawił się taki problem, ze z pilota odbieram jakieś bzdury (a mam go w standardzie rc5). Zmieniałem linijkę Reset Tcon.0 na Set Tcon.0, ale nic nie pomogło. Dla testów przesłałem zawartości zmiennych Adr i Rozkaz_pilota wprost na port i za każdym razem (a próbowałem róznych klawiszy i pilotów) dostawałem na porcie 10101011. Na oscyloskopie sprawdziłem to co wychodzi z elementu na podczerwień (sfh5110) i przebiegi zmieniają się w zależności od naciśniętego klawisza (zawsze jest jakaś różnica w stosunku do pozostałych). Czyli wychodzi na to, że coś nie tak jest z getrc5(). Ale może ktoś miał podobny problem, albo wie w czym może tkwić przyczyna. Jeśli potrzeba więcej szczegółów, chętnie dopowiem, bo już naprawdę nie mam pomysłu.
Z góry dziękuję.
jestem nowy zarówno na forum, jak i w świecie mikrokontrolerów. Chciałem zbudować sobie odbiornik podczerwieni do komputera i oczywiście pojawił się problem. Układ został zmontowany poprawnie, nie ma równieź zimnych lutów. Ale mam problem z programem. Otóż, do nóżki INT0 89c2051 podłączyłem element sfh5110 (36 kHZ). Napisałem (w Bascomie) program do odbioru komunikatu z pilota, ale nie działa. Poniżej odpowiednie fragmety listingu :
'deklaracje
Dim test As Bit
Dim Rozkaz_pilota As Byte
Dim Adr As Byte
Czerw Alias P1.1
'konfiguracja
Reset Tcon.0
On Int0 Odbierzrc5
Enable Int0
Enable Interrupts
(...)
'poczatek programu
Bitwait test , Set
Disable Int0
Reset test
(...)
'procedura obslugi przerwania
Odbierzrc5:
Getrc5(adr , Rozkaz_pilota)
If Adr = 0 Then
Set test
Else
Reset test
Reset Czerw
Waitms 240
Set Czerw
End If
Return
I pojawił się taki problem, ze z pilota odbieram jakieś bzdury (a mam go w standardzie rc5). Zmieniałem linijkę Reset Tcon.0 na Set Tcon.0, ale nic nie pomogło. Dla testów przesłałem zawartości zmiennych Adr i Rozkaz_pilota wprost na port i za każdym razem (a próbowałem róznych klawiszy i pilotów) dostawałem na porcie 10101011. Na oscyloskopie sprawdziłem to co wychodzi z elementu na podczerwień (sfh5110) i przebiegi zmieniają się w zależności od naciśniętego klawisza (zawsze jest jakaś różnica w stosunku do pozostałych). Czyli wychodzi na to, że coś nie tak jest z getrc5(). Ale może ktoś miał podobny problem, albo wie w czym może tkwić przyczyna. Jeśli potrzeba więcej szczegółów, chętnie dopowiem, bo już naprawdę nie mam pomysłu.
Z góry dziękuję.