Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

adambehnke 11 Dec 2009 23:16 2798 4
  • #1
    adambehnke
    Level 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:

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



    i procedurka odbioru:

    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.
  • Helpful post
    #2
    mirekk36
    Level 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
  • #3
    adambehnke
    Level 24  
    Na razie to tylko pętla testowa:

    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.
  • Helpful post
    #4
    kamyczek
    Level 38  
    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 ;)
  • #5
    adambehnke
    Level 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.