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

Atmega32 BasCom RC5 (Nie działa)

I.T.I 13 Mar 2010 22:30 1531 3
  • #1 13 Mar 2010 22:30
    I.T.I
    Poziom 16  

    Witam ostatnio na szybko próbowałem odpalić sterowanie za pomocą pilota na rc5 tak dla poznania ale coś nie działało wiec to porzuciłem. Dzisiaj do tego wróciłem bo potrzebuje to do projektu.
    Wiec problem następujący ciągle sczytuje mi ze adres = 255 a Komeda = 128 (ucięty ostatni bit) nie wiem dlaczego tak jest dodam ze odbiorniki są na 100% działające (nowe na 3 próbowałem) a połączenie według noty katalogowej a odbiornik to TSOP1736.

    1.Co jest ze nie działa.
    2.Czy odbiornik może być podłączony do innego portu niż port z int0 (podłączałem do pind.2 który ma int0 i do pinc.0 który nie ma.

    Program standardowy z helpa

    Code:
    '
    
    -------------------------------------------------------------------
    '                        RC5.BAS
    '                (c) 2000 MCS Electronics
    '         oparte na nocie aplikacyjnej AVR410 f-my Atmel
    '-------------------------------------------------------------------
    'użyjemy poniższej biblioteki by zmniejszyć rozmiar kodu
    $lib "mcsbyte.lbx"


    'Ten przykład pokazuje jak odczytać sygnały w kodzie RC5
    'odbierane przez detektor SFH506-35.

    'Wyjście detektora podłącz do PIND.2
    'Funkcja GETRC5 używa licznika TIMER0 i jego przerwania.
    'Ustawienia licznika są zapamiętywane i odtwarzane po wykonaniu funkcji.
    'Nie dotyczy to jednak obsługi przerwań!

    'ustawiamy linię wejściową dla danych RC5
    Config Rc5 = Pind.2

    'Procedura przerwania TIMER0 jest wstawiana automatycznie.
    'Należy tylko włączyć system przerwań!
    Enable Interrupts

    'określamy zmienne
    Dim Address As Byte , Command As Byte
    Print "Oczekiwanie na transmisję RC5..."


    Do
      'teraz sprawdzamy czy jakiś klawisz pilota został naciśnięty
      'Uwaga! Po włączeniu zasilania wszystkie linie portów pracują
      'jako wejścia. Dlatego nie używamy tutaj instrukcji określających
      'kierunki portów.
      'Jeśli wymagane jest określenie kierunku końcówki portu usuń
      'komentarz z poniższej linii.

      'Config Pind.2 = Input
      Getrc5(address , Command)

      'sprawdzamy czy adres jest równy 0 (korzystamy z pilota TV)
      If Address = 0 Then
         'zerujemy znacznik w słowie RC5
         'bit znacznika jest zmieniany podczas każdej transmisji
         Command = Command And &B01111111

         Print Address ; "  " ; Command
      End If
    Loop

    End

    (c) Zbigniew Gibek, 2002-2003   (c) MCS Electronics, 1999-2003

    0 3
  • #2 15 Mar 2010 17:57
    I.T.I
    Poziom 16  

    No co nikt nie wie a może się domyślacie?
    To chociaż odpowiecie mi na 2 pytanie.

    0
  • #3 15 Mar 2010 18:37
    tadzik85
    Poziom 38  

    Wystarczy sprawdzić czy funkcja odbierająca kod rc5 wykorzystuje to przerwanie. z listingu wynika, że nie. Jednak odbieranie kodów najczęściej realizuje się w przerwaniu.

    0
  • #4 15 Mar 2010 19:46
    I.T.I
    Poziom 16  

    Dobrze dzięki za wszystko jednak po kilku dniach zmagań i poszukiwań odnalazłem problem
    otóż żaden z 10 pilotów jakie posiadałem nie nadaje w kodzie rc5 :/ jest to rzecz której się najmniej spodziewałem jednak zbudowałem nadajnik(pilot) na atmedze8 z kwarcem 8Mhz i nadawanie jak i odbiór wyszedł wspaniale a i obornik możne być podłączony do każdego portu wejściowo wyjściowego.

    0