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

C++ - Atmega8: Jak wysterować piny portu D po odbiorze kodu RC5?

AdrianK17 25 Cze 2013 19:18 1755 2
REKLAMA
  • #1 12455576
    AdrianK17
    Poziom 16  
    Witam, mam problem z realizacją układu z tej strony:
    Link

    Chciałem, aby atmega po odbiorze kodu z pilota wysterowywała odpowiednio przypisane piny portu D.

    Tu jest kod po zmianach:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Czy konieczny jest kwarc 3.6846MHz podłączony do atmegi? Czy wystarczy tylko zdefiniować częstotliwość tak jak jest skomentowane na początku: "#define F_CPU 3686400L" ?

    Kody do casów zostały odczytane przez odbiornik TSOP1736 podłączony do portu COM w programie GIRDER. Pilot na 99% jest tupu RC5. Jest to jakiś starszy pilot o oznaczeniu RP520LP. Po wgraniu programu do Atmegi i jej uruchomieniu, nie reaguje na odbiór - nie zmieniają się stany na wyjściach mikrokontrolera. Przy kompilowaniu wyskakują dwa warningi:
    main.c:22: warning: function declaration isn't a prototype
    main.c:53: warning: function declaration isn't a prototype
  • REKLAMA
  • #2 12456070
    piotrva
    VIP Zasłużony dla elektroda
    Ten kod do obsługi RC5 jest meeeega nieprawidłowy. Opóźnienia w przerwaniu itp. - dramat.
    Polecam od razu wyrzucić całość do śmieci.
    Nawet pierwszy-lepszy kod z googla jest lepszy od tego, co zaprezentowałeś.
    https://www.google.pl/search?q=AVR+C+RC5 -> http://hobby.abxyz.bplaced.net/index.php?pid=3&aid=16
    Ten kod wymaga poprawnie zdefiniowanej częstotliwości F_CPU (w ustawieniach globalnych) oraz zgodnego z definicją kwarcu.
  • #3 12466319
    AdrianK17
    Poziom 16  
    Program z podanego przez Ciebie kursu działa perfekcyjnie :)
    O ile są to podstawowe klawisze, typu: 0 ... 9. Ale jak dla mojego zastosowania będzie to wystarczające.
    Zmieniłem program, żeby zamiast komendy wyświetlanej na porcie B, wysterował odpowiednie piny:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Po tej zmianie konieczne jest dwukrotne wciśnięcie danego klawisza...
    W jaki sposób się pozbyć się tego błędu? :)
    Czy przy tym kodzie możliwe jest wysterowanie pinów portu tylko w czasie gdy wciśnięty jest klawisz? (bez podtrzymania) Czy konieczne jest przerobienie całego programu?
REKLAMA