Witam wszystkich
Mam problem nad którym siedzę od wczoraj. Szukałem odpowiedzi na forach, w googlu i nie udało mi się znaleźć odpowiedzi. Otóż za nic nie mogę odebrać informacji w RC5 w przerwaniu INT1 w ATtiny2313. Co ciekawe, procek w przerwanie wchodzi, nie zacina się (sprawdziłem diodami i odpowiednio ustawiając porty) ale nie chce zdekodować rozkazu z pilota. Pilot jest własnej konstrukcji, o adresie 11, testowany na większym układzie z ATmega8535 - działa na 100%. Tym bardziej, że mój ATtiny pięknie radzi sobie z odbiorem w pętli głównej. Fuse-bity są ustawione poprawnie (wewnętrzny oscylator 8MHz, brak podziału przez 8). Układ dość prosty, wykorzystuję jedynie odbiornik TSOP1736 oraz diodę LED. Nie mam już nerwów do walki z tym...
Oto kod "testowego" programu, który po odebraniu "czegoś" o adresie 11 przełączy diodę LED podłączoną do linii PB1:
Nie mogę pozwolić sobie na odbiór IR w pętli głównej, ponieważ planuję zatrudnić mikrokontroler w troszkę ambitniejsze zadanie niż mruganie diodą po odebraniu czegoś
Rok temu robiłem układ na ATmega8 i też korzystałem z INT1 do odbierania IR i wszystko szło idealnie.
I jeszcze jedno: Czytając helpa do Bascoma, zrozumiałem, że mogę wykorzystać Timer0 do swoich celów mimo tego, że program obejmuje także odbiór RC5. Wówczas, na czas odbioru, Timer0 będzie przeprogramowany na ten cel, a potem wróci do takiego stanu, w jakim był poprzednio. Dobrze zrozumiałem? Bo gdyby ten licznik mógłby być użyty przeze mnie w tym programie, bardzo ułatwiłoby mi to pracę, mimo występowania pewnych opóźnień związanych z odbiorem podczerwieni.
Pozdrawiam
Mam problem nad którym siedzę od wczoraj. Szukałem odpowiedzi na forach, w googlu i nie udało mi się znaleźć odpowiedzi. Otóż za nic nie mogę odebrać informacji w RC5 w przerwaniu INT1 w ATtiny2313. Co ciekawe, procek w przerwanie wchodzi, nie zacina się (sprawdziłem diodami i odpowiednio ustawiając porty) ale nie chce zdekodować rozkazu z pilota. Pilot jest własnej konstrukcji, o adresie 11, testowany na większym układzie z ATmega8535 - działa na 100%. Tym bardziej, że mój ATtiny pięknie radzi sobie z odbiorem w pętli głównej. Fuse-bity są ustawione poprawnie (wewnętrzny oscylator 8MHz, brak podziału przez 8). Układ dość prosty, wykorzystuję jedynie odbiornik TSOP1736 oraz diodę LED. Nie mam już nerwów do walki z tym...
Oto kod "testowego" programu, który po odebraniu "czegoś" o adresie 11 przełączy diodę LED podłączoną do linii PB1:
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Pind.3 = Input 'Odbiornik IR
Config Pinb.1 = Output 'Dioda LED
Config Int1 = Low Level
Config Rc5 = Pind.3 'Linia INT1
On Int1 Rc5
Enable Interrupts
Enable Int1
Dim Adres As Byte
Dim Komenda As Byte
Dim Odb As Bit
Do
If Odb = 1 Then
Reset Odb
If Adres = 11 Then
Toggle Portb.1
End If
Enable Int1
End If
Loop
End
Rc5:
Disable Int1
Enable Interrupts
Getrc5(adres , Komenda)
Komenda = Komenda And &B01111111
Set Odb
Return
Nie mogę pozwolić sobie na odbiór IR w pętli głównej, ponieważ planuję zatrudnić mikrokontroler w troszkę ambitniejsze zadanie niż mruganie diodą po odebraniu czegoś
Rok temu robiłem układ na ATmega8 i też korzystałem z INT1 do odbierania IR i wszystko szło idealnie.
I jeszcze jedno: Czytając helpa do Bascoma, zrozumiałem, że mogę wykorzystać Timer0 do swoich celów mimo tego, że program obejmuje także odbiór RC5. Wówczas, na czas odbioru, Timer0 będzie przeprogramowany na ten cel, a potem wróci do takiego stanu, w jakim był poprzednio. Dobrze zrozumiałem? Bo gdyby ten licznik mógłby być użyty przeze mnie w tym programie, bardzo ułatwiłoby mi to pracę, mimo występowania pewnych opóźnień związanych z odbiorem podczerwieni.
Pozdrawiam