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

Attiny2313/Atmega8 - Odbiór RC5 - nie działają niektóre komendy

seja4321 03 Sty 2013 21:37 3063 16
  • #1 11737091
    seja4321
    Poziom 9  
    Witam
    Mam problem z odbiornikiem RC5 na attiny2313 otóż gdy wgram ten program:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    po odebraniu przez procesor komendy 38 zmienia się stan diody ale po odebraniu komendy 88 nic się nie dzieje. Gdy jednak ten sam program wrzuciłem na odbiornik zbudowany na atmega8:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    komendą 38 jak i 88 mogę zmieniać stan diody. Czemu zatem na atmega8 działają te kody a na attiny2313 nie??
  • #2 11737148
    Rokita1993
    Poziom 19  
    Wykorzystujesz przerwanie zewnętrzne od Int0?
    W takim wypadku odczyt adresu i komendy wykonaj w podprogramie obsługi tego przerwania.
  • #3 11737495
    zumek
    Poziom 39  
    Rokita1993 napisał:
    Wykorzystujesz przerwanie zewnętrzne od Int0?
    W takim wypadku odczyt adresu i komendy wykonaj w podprogramie obsługi tego przerwania.


    A gdzież to szanowny kolega, widzi tam przerwania od INT0 :?:
  • #4 11737566
    Rokita1993
    Poziom 19  
    Nie widzę przerwania, ale z analizy tego, że podpiąłeś tsop pod wejście Int0 dodatkowo dyrektywa właczenia przerwań naprowadzają mnie, aby realizację odbioru rc5 zrealizować z przerwaniu co upraszcza program mimo iż traci się jeden pakiet danych.
  • #5 11737801
    seja4321
    Poziom 9  
    Mam prośbę czy może mi to ktoś napisać ponieważ jestem początkujący i nie wiem jak się za to zabrać (jak napisać kod)
    Dziękuję
  • #6 11737951
    Rokita1993
    Poziom 19  
    Kod: text
    Zaloguj się, aby zobaczyć kod





    Tak z marszu ale myślę, że będzie prawidłowo działać.
  • #7 11739064
    seja4321
    Poziom 9  
    Po wgraniu tego kodu:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    kompletnie nic się nie dzieje. Po włączeniu zasilania dioda się zaświeca i tyle. Co może być przyczyną tego?
  • #8 11740581
    Rokita1993
    Poziom 19  
    To mój działający program. W oryginale mam jeszcze lcd i więcej wyjść, ale tutaj to usunąłem i zostawiłem to czego szukasz. Sprawdź czy zadziała.


    Kod: text
    Zaloguj się, aby zobaczyć kod


    Uzupełniłem o tagi SYNTAX i proszę o ich stosowanie w przyszłości.
    [zumek]
  • #9 11741310
    feriar
    Poziom 12  
    seja, można to o wiele łatwiej zrobić bo wg. mnie ten program jest troszkę "skomplikowany" bo Bascom się poprostu gubi :E .
    Getrc5 musi być na początku pętli, a nie poza nią. Zobacz jak może to łatwiej wyglądać ;)

    Kod: text
    Zaloguj się, aby zobaczyć kod
    [/code]

    To jest mój własny kod i on robi to samo co chcesz osiągnąć, działa tylko jak coś to sobie pozmieniaj wyprowadzenia ledów na takie jaki ty masz i RC5.
    Instrukcja PINx.y w tym programie została użyta po to by tym samym przyciskiem zmienić stan końcówki czyli po prostu negować stan bitu (0=1 ; 1=0)

    Pozdrawiam i zapraszam na mój blog
    Tam masz opisane dokładnie jak działa
    ;)
  • #10 11741824
    Rokita1993
    Poziom 19  
    Zauważ, że w twoim programie generowane są opóźnienia. Niedługie bo niedługie ale są.
    Co jeśli w trakcie zapalania diody i oczekiwania tego opóźnienia Waitms 150 naciśniemy jakiś przycisk na pilocie?
    Owa komenda nie zostanie odczytana. A naciśnięcie przycisku trwa kilka do kilkunastu ms.
  • #11 11741949
    feriar
    Poziom 12  
    Tak na start, ten program ma za zadnie pokazać jak obsługiwać instrukcję RC5 w bascomie przy czym ma zapalać i gasić diodę także PINx.y nie jest bez przypadku. Opóźnienia wstawiłem po to że przy wciśnięciu przycisku pilot wysyła jakby 2x ten sam kod także dioda się zapala i zaraz gaśnie, a jak jest opóźnienie to nie ma takiego problemu.
    To masz niezły refleks skoro w przeciągu 150ms wciśniesz drugi przycisk, ale jak ci się uda trafić w ten czas to ta dioda nie ma szans żeby się zapaliła.
  • #12 11742020
    Rokita1993
    Poziom 19  
    Tutaj podłem wartość 150ms jako przykładową.
    Co jeśli np dioda miałaby świecić się około sekundy albo dłużej?
    Wtedy twój program nie będzie zbyt odpowiedni, gdyz trzeba będzie odczekać ten czas, aby uC mógł odebrać kolejną z komend.


    W moim programie bez względu na moment wciśnięcia przycisku na pilocie uC odrazu przechodzi do odbioru rc5.
  • #13 11742050
    feriar
    Poziom 12  
    Rokita1993 napisał:
    W moim programie bez względu na moment wciśnięcia przycisku na pilocie uC odrazu przechodzi do odbioru rc5.

    Jak zmienie u siebie wszystko na porty i wywale opóźnienia to też tak będzie ale już nie róbmy offa ;)
  • #14 11743446
    WOBI
    Poziom 19  
    seja4321 napisał:
    Witam
    Mam problem z odbiornikiem RC5 na attiny2313 otóż gdy wgram ten program:
    Czemu zatem na atmega8 działają te kody a na attiny2313 nie??


    Nie wiem czy czytasz dokumentację obu procesorów, zauważ że tiny ma 128bajtów pamięci Ram a Mega8 ma 1024bajty Ram. Przypuszczam że jest go za mało na obsługę Bascomowego Gert c5, pewnie stos, i zmienne są nadpisywane.
    Dla tego procesora napisz własna procedurę odbioru RC5 używając timera1 i wejścia ICP, to naprawdę działa, jest proste, a z Ger Rc5 Bascomową daj sobie spokój bo dużo z nią kłopotów.
    Tu masz gotowca i opis problemów z Ger rc5 [Bascom] Odbiór RC5 w przerwaniu INT0 nie działa w nowej wersji kompilatora
  • #16 11746881
    WOBI
    Poziom 19  
    piotrva napisał:
    Getrc5 działa bez problemu na at90s2313 i attiny2313.

    Takie porady są najbardziej rzeczowe na tym forum ;), bardzo dużo pomogłeś, prawie problem rozwiązany :). Takie "nabijanie" tematu powinno być przez moderatorów korygowane...

    To dlaczego ciągle na tym forum jest mnogość tematów na temat GetRC5 i tiny2313 np. temat 1 temat 2 Temat3 temat4 itd... mógłbym tak prawie bez końca, ale nie o to chodzi. Poczytaj te tematy i zobaczych że większość pisze o Getrc5 negatywnie.

    Z mojej analizy po deasemblacji Getrc5 i dokładnej analizie na oscyloskopie dwukanałowym wynika, że zastosowany jest polling wejścia portu(a to już z góry wróży problemy), na dodatek jak użyjemy przerwania, które nawet w notach i przykładach jest podane, to Getrc5 gubi pierwszą ramkę transmisji RC5 i program "wisi" w przerwaniu około 115ms nic nie robiąc tylko czeka na poprawną ramkę z pilota. W tym czasie procesor mógłby coś robić.To podstawowa wada Getrc5 która ją dyskwalifikuje!!! Dlatego nie powinno używać się jej. Stąd te problemy i dziwne zachowania programów o których można się naczytać w dziesiątkach postów.

    Przecież napisanie prostej obsługi RC5 na przerwaniu ICP i pomiar timerem1 czasów bitów, poprawne napisanie procedury korekcji i obsługi błędów zaowocuje po pierwsze że nauczymy się coś,po drugie zrobimy to zgodnie ze sztuka programowania i nie będziemy mieli problemów, a program będzie działał idealnie i niezawodnie ku zadowoleniu autora. A tak to tylko przepychanki i udowadnianie niewiadomo czego i komu... i bieganie za własmym ogonem...

    seja4321 napisał:
    Witam
    Mam problem z odbiornikiem RC5 na attiny2313 otóż gdy wgram ten program:
    spróbuj dać tak
    Kod: text
    Zaloguj się, aby zobaczyć kod
    choć polecam taki gotowy program w Bascomie poczytaj RC5 Bascom ICP
  • #17 11747097
    piotrva
    VIP Zasłużony dla elektroda
    Owszem, bascomowe getrc5 w przerwaniu nie działa prawidłowo.

    Ogolnie Cię popieram i dlatego też wolę C, gdzie mam 100% kontroli nad wszystkim.

    Ale broń Boże nie napisałem tego żeby nabić post.
REKLAMA