logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATtiny2313] ATtiny2313 Bascom: Dekodowanie RC5 w przerwaniu INT1 nie działa poprawnie

Pedzik42 15 Kwi 2012 13:46 1676 1
REKLAMA
  • #1 10796248
    Pedzik42
    Poziom 10  
    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:
    
    $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 :D
  • REKLAMA
  • #2 10819830
    Konto nie istnieje
    Konto nie istnieje  
REKLAMA