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

Atmega8 C - Kod do nadawania IR w standardzie NEC - prośba o sprawdzenie

lElektryk 06 Mar 2015 21:54 1218 6
  • #1 14507255
    lElektryk
    Poziom 18  
    Witam,
    jest to w sumie moje pierwsze starcie z AVR. Próbuje stworzyć prowizoryczny pilot IR nadający w standardzie NEC ale średnio mi idzie. Proszę o sprawdzenie kodu.
    Jeżeli chodzi o hardware to myślę, że nie ma się czego przyczepić, dioda podłączona anodą do wyjścia przez rezystor 100Ω, pstryczek też jakoś podłączony. Generalnie cośtam nadaje, ale nie wiem co i na pewno odbiornik tego nie rozumie. PWM miernikiem zmierzyłem i wychodzi 38kHz z wypełnieniem 1/3. Oscyloskopu ani analizatora stanów jeszcze nie mam, a szkoda bo pewnie byłoby po temacie ;)

    Jak widać założenie takie, że licznik cały czas sobie coś zlicza, przepełnia się przy stanie 216, a jak mu pozwolę to zmienia stan OC1A przy stanie 72.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #2 14507427
    BlueDraco
    Specjalista - Mikrokontrolery
    Odliczaj czas w przerwaniu timera, który generuje przebieg PWM. Wszystkie czas musisz wyrazić w okresach przebiegu 38 kHz.

    Aż strach pomyśleć, co będzie robiło takie wywołanie:
    _delay_us(562.5);

    Zgaduję, że wykonanie tego może zająć i z 10 ms.
  • #3 14507868
    lElektryk
    Poziom 18  
    Witam,
    dzięki za zainteresowanie tematem!

    Jeżeli chodzi o przerwania, to też już to trenowałem i nie zadziałało, zaraz zamieszczę kod.

    BlueDraco napisał:

    Aż strach pomyśleć, co będzie robiło takie wywołanie:
    _delay_us(562.5);

    Zgaduję, że wykonanie tego może zająć i z 10 ms.


    Dlaczego tak?

    Kod z przerwaniami:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #4 14512957
    aaadamw
    Poziom 16  
    kolego,
    tu bez jakiegoś analizatora to się wykończysz.
    kup sobie szklaną kulę, albo jakiegoś klona SALEAE na alleg*o za 40zł i przynajmniej będziesz widział co generujesz.
  • #5 14513001
    lElektryk
    Poziom 18  
    Hehe, tak właśnie myślałem, że się skończy na oczekiwaniu na analizator ;) Generalnie leci już do mnie z ryżowej krainy za niecałe 7 dolców, ale jeszcze będę musiał trochę poczekać. No trudno.

    Pozdrawiam
  • Pomocny post
    #6 14513316
    Eagle
    Poziom 24  
    Po każdym bajcie zakończasz transmisję w funkcji wyślij, zrób to tylko po ostatnim bajcie,tym z zanegowaną komendą. Obecnie między bajtami masz dwa następujące po sobie impulsy, jeden pod koniec funkcji wyślij, drugi na początku następnego bajtu.
  • #7 14514533
    lElektryk
    Poziom 18  
    Eagle napisał:
    Po każdym bajcie zakończasz transmisję w funkcji wyślij, zrób to tylko po ostatnim bajcie,tym z zanegowaną komendą. Obecnie między bajtami masz dwa następujące po sobie impulsy, jeden pod koniec funkcji wyślij, drugi na początku następnego bajtu.


    Trafiony zatopiony.

    Pozostało to w tej funkcji jak jeszcze wysyłałem do niej adres razem z komendą.

    Pięknie dziękuję jeszcze raz. Co dwie pary oczu to nie jedna...
    Pozdrawiam
    Bartosz
REKLAMA