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

ATTiny2313 - komenda Getrc5 zwraca wartości 255 i 127

Maciek_C 18 Mar 2016 22:10 1074 6
  • #1 15535695
    Maciek_C
    Poziom 14  
    Witam,
    Na wstępie chciałbym powiedzieć, że zanim zdecydowałem się napisać ten post, używałem szukajki na tym forum i wujka google ale bez pozytywnych rezultatów (przeczytałem bardzo wiele tematów i skopiowałem wiele kodów).
    Przejrzałem także plik Help w Bascom.
    Problem polega na tym, że funkcja getrc5 zwraca zawsze wartości adresu = 255 oraz komendy = 127 (wyjątkiem jest jeden pilot od CD, z którego wszystkie przyciski zwracają adres = 0 i komenda = 9).
    Sprawdzałem na pilotach od różnych urządzeń, w tym na pilocie od radia PHILIPS a także na pilocie uniwersalnym od amplitunera ONKYO (wpisując wszystkie kody urządzeń PHILIPS).
    Kod jest banalny (poniżej), zaś ustawienia FuseBitów na zdjęciu:

    ATTiny2313 - komenda Getrc5 zwraca wartości 255 i 127

    Kod: text
    Zaloguj się, aby zobaczyć kod

    W obecnej chwili mam zamiast przerwania funkcję If... Then... ponieważ program potrafił się zawiesić przy pracy funkcji getrc5 w przerwaniu (to raczej nie jest przyczyną problemu, ponieważ używałem różnych innych kombinacji).
    Attiny pracuje na zewnętrznym kwarcu 8MHz z odbiornikiem TSOP4836 na wejściu PIND.2 (INT0). Odbiornik podłączony według noty katalogowej (z dodatkowym rezystorem i kondensatorem).
    Oprócz Attiny 2313 próbowałem także na ATtiny13 i ATmega16.
    Podejrzewałem odbiornik więc podmieniłem go na drugi egzemplarz (co prawda był to TSOP4838 ale również reagował na piloty).
    Reset ATTiny podciągnięty przez rezystor 10k do Vcc. Na pinie Vcc kondensator filtrujący.
    Docelowo układ ma sterować mostkiem H i przekaźnikiem (na razie nieistotne).
    Próbowałem pracy Getrc5 w przerwaniu i bez.
    Program kompiluję w Bascom 2.0.7.5, choć próbowałem także w wersji 1.11.9.5 (wiele osób pisze, że w nowym Bascomie są problemy z funkcją Getrc5).

    Może przeoczyłem jakiś drobny, oczywisty szczegół, który jest istotny?
    z góry dziękuję i pozdrawiam.
  • #2 15535845
    Konto nie istnieje
    Konto nie istnieje  
  • #3 15536222
    Maciek_C
    Poziom 14  
    Dziękuję za zainteresowanie.
    Racja, dziękuję za uwagę.
    Wsadziłem Getrc5 do If.. Then..
    Oczywiście zakładam, że Do... Loop wykonuje się dużo szybciej niż czas trwania jednego bitu w ramce kodu.

    Przesłany przez Ciebie kod też nie zadziałał w sposób prawidłowy (wciąż odczytuje wartości 255 i 127): przy użytkowaniu wszystkich możliwych wariacji kodów Philips w pilocie uniwersalnym oraz użycu pilota od radia Philips nie wyświetla się nic (co jest zapewne spowodowane zastosowanym u Ciebie w programie fragmentem: If Address <> 255 Then ...), zaś po naciśnięciu jakiegokolwiek przycisku na pilocie od CD wyświetla się "000 009", czyli sytuacja się nie zmieniła.

    Czy FuseBity są w porządku? Może tu gdzieś coś przeoczyłem?

    Zaczynam podejrzewać, że to wina Hardware'owa. We wtorek będę miał w rękach odbiorniki TSOP1736 (o wiele popularniejsze od 4836) i na nich spróbuję, bo już mi się pomysły skończyły (choć to dziwne, bo sprawdzałem na dwóch egzemplarzach).
  • #4 15536365
    Konto nie istnieje
    Konto nie istnieje  
  • #5 15536614
    Maciek_C
    Poziom 14  
    Dziękuję za sugestie.
    Piloty działają na pewno (wiem, bo na bieżąco są w użyciu).
    Nadajnik na wyjście coś podaje, bo po naciśnięciu przycisku na pilocie program wchodzi w Pętlę If (więc na pewno zmienia stan z jeden na zero), tylko nie wiem, czy tym "cosiem" jest poprawna ramka RC5 czy nieużyteczny przebieg.
    Mógłbym podłączyć na wyjście odbiornika oscyloskop ale mam jedynie zabytkowy polski jednokanałowy analogowy oscyloskop, więc nawet nie mam jak zatrzymać obraz by przeanalizować ramkę.
    Głupia sprawa. Na pewno ja gdzieś popełniłem błąd, tylko nie mam pojęcia gdzie, bo dziwne byłoby, gdyby wszystkie trzy AVRy były uszkodzone lub oba odbiorniki (kupione w TME i dostarczone w woreczkach ESD safe). Szczególnie niepokojące jest to, że program jest do bólu prosty a nie działa.
    Próbowałem nawet nadawać przez kartki papieru by osłabić sygnał (wyczytałem że te TSOPy są bardzo czułe i tu może tkwić problem) ale bez zmian.
    Wytrawiłem nawet w tym celu dwie płytki (osobno do Attiny 13 i osobno do 2313) więc niemożliwe bym popełnił błąd na obu.
  • Pomocny post
    #6 15538098
    M. S.
    Poziom 34  
    Też miewałem problemy z Getrc5. Pomagały "dziwne rzeczy" tak jak wprowadzenie niepotrzebnej zmiennej tekstowej "A".

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Wtedy, jak i teraz nie zastanawiałem się dlaczego.

    Później najczęściej obsługiwałem pilota sprawdzając w pętli czy na porcie odbiornika IRED występuje zero i wtedy uruchamiałem Getrc5. Działało.
  • #7 15538970
    Maciek_C
    Poziom 14  
    Dziękuję, Twój sposób pomógł !
    Wniosek - Bascom nie zawsze rządzi się prawami logiki :)
    O ile admin nie ma nic przeciwko temat można zamknąć.
REKLAMA