Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Atmega 2560[BASCOM]Obsługa RC5 w przerwaniu - nie działa

11 Gru 2009 23:16 2570 4
  • Poziom 24  
    Witam
    Męczę się nad umieszczeniem procedury odbioru RC5 w przerwaniu. Na atmega32 pod INT0 nie ma nic łatwiejszego ale przy tym procku już parę rzeczy mnie zaskoczyło ale nie spodziewałem się że będę miał problem z przerwaniami.
    Otóż TSOP mam podłączony pod pin PB7 ,nóżka numer 26 (patrz obrazek)

    Atmega 2560[BASCOM]Obsługa RC5 w przerwaniu - nie działa

    Z tego co widzę to jest to INT7 prawda?

    Zrobiłem tak:

    Code:
    Config Rc5 = Pinb.7                                     
    
    On Int7 Readir
    Config Int7 = Low Level
    Enable Int7
    Enable Interrupts 



    i procedurka odbioru:

    Code:
    Readir:
    
     Disable Int7
     Enable Interrupts
     If Ir_flag = 0 Then
    Getrc5(adres , Rozkaz)
        'If Adres = 0 Then
         Rozkaz = Rozkaz And &B01111111
         Ir_flag = 1
         End If

    Return



    Oczywiście nie dostaje żadnej odpowiedzi z przerwania.
    Jeśli odwołam się do procedury odbiorczej bezpośrednio za pomocą Gosub to wszystko chodzi pieknie więc nie ma tu mowy o błędach w podłączeniu. Dodam że nie mogę uzyć już innego pinu procka gdyż płytka jest już zrobiona i doszedłem teraz do wniosku aby upchnąć RC5 do przerwania.


    Czy czasem nie powinienem podciągnąć rezystorem do Vcc linii z czujnika do procka?
    Może dlatego przerwanie nie działa. Ale to tylko moja teoria.

    Proszę o jakieś rady .



    Dodano: próbowałem z tym rezystorem i też nic.
  • Pomocny post
    Poziom 42  
    A po co tak teoretyzować - wystarczy zajrzeć do PDF'a scalonego odbiornika TFMS czy TSOP żeby zobaczyć jak należy postąpić nie tylko z linią sygnału wyjściowego ale też jak podać zasilanie. Ludziom nie chce się tam zajrzeć a potem zdziwienie, że nawet jak działa - to jednak jakieś błędy się wkradają, czasem jakieś zakłócenia itp (jak tam już zajrzysz - a na prawdę warto - to zobaczysz, że podciągnięcie tej linii do VCC za pomocą zewnętrznego rezystora jest wręcz wymagane)

    to jedno, a druga sprawa - to pokaż jak masz rozwiązany kawałek kodu w pętli głównej odpowiedzialny za odbieranie kodów IR gdy flaga=1
  • Poziom 24  
    Na razie to tylko pętla testowa:

    Code:
    Do
    


    Gosub Readtouch                                             'odczyt panela dotykowego
    'Gosub Readir                                                'odczyt RC5
    Gosub Wysw                                                  'Wyświetlanie
    Gosub Readtime                                              'odczyt czasu i daty z PCF-a


    If Ir_flag = 1 Then
    Locate 15 , 1
    Lcd "RC5 rozkaz:" ; Rozkaz
    Ir_flag = 0
    End If



    Enable Int7

    Loop


    Co do rezystora to rzeczywiście zalecany ale sprawdzałem i z nim także nie działa. Może Bascom nie obsługuje przerwań powyżej 5(bo gdzieś pamiętam kiedyś czytałem) ?




    hehhhhhh.........

    Temat do zamknięcia.Problemem była po prostu pinologia procka i pomyłka przy odczytywaniu pdf-a.
  • Pomocny post
    Poziom 34  
    Jednym słowem pcint to nie to samo co int0 ;) A dla potomnych int 0 w m2560 pin43 i o ile się nie mylę to to zabrakło opisu że program jest napisany w Bascomie ... Popraw temat zgodnie z normami ;)
  • Poziom 24  
    Dokładnie. Czeski błąd naciągnął mnie na ładnych parę godzin dłubaniny. A tym czasem przerwanie cały czas działało poprawnie a ja męczyłem nie ten pin co trzeba.
    Jednak trzeba bardzo dokładnie studiować noty aplikacyjne.... I tu mam nauczkę i radę dla innych..... Czytaj a potem pytaj :]



    Temat do zamknięcia.