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

ATMEGA8 - Jak zaimplementować modulację ASK na PB3 przy 1MHz?

marnowak 12 Mar 2013 08:32 2151 7
REKLAMA
  • #1 12049493
    marnowak
    Poziom 15  
    Witam!
    Takie pytanie.
    Mam przebieg 1MHz za pomocą CTC na PB3.
    Teraz jak go modulować?
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Chodzi o to, że chcę transmitować sygnał z modulacją ASK. Coś przychodzi mi na UART, układam ramkę danych i gdy chcę przesłać '1' logiczną mam przebiegi 1MHz, a gdy '0' przebieg jest wyłączony.

    Zastanawiam się, czy 'force' 0 lub 1 na PB3 nie spali ATMEGI. Po za tym jak z takiego force'a wrócić do generacji przebiegu na PB3?

    Konkretnie ma pytanie dotyczące włączania i wyłączania przebiegu 1MHz na PB3 w dowolnej chwili czasu. Wiem, że mógłbym wrzucić AND-a na PB3 i podłączyć drugie wejście tego AND-a do innego portu. Wówczas miałbym kluczowanie, ale wolałbym robić to w pełni programowo, bez użycia dodatkowych układów.
  • REKLAMA
  • #2 12049506
    BlueDraco
    Specjalista - Mikrokontrolery
    Wystarczy programowo włączać/wyłączać wyjście sygnału PWM - rejestr TCCR2, bity COM2x: 00 - wyłączone, 01 - zmiana na końcu okresu.
  • REKLAMA
  • #3 12052289
    adampyndzel
    Poziom 16  
    można tak

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    spowoduje to zatrzymanie licznika
  • #4 12085966
    marnowak
    Poziom 15  
    OK. Dzięki.
    Mam jeszcze jedno pytanie.
    Stosując zamieszczony w pierwszym poście kod, przy kwarcu 8MHz otrzymuję ładnie 1MHz, ale otrzymuję także sygnał niepożądany o częstotliwości około 16-20 Hz. Problem w tym, że urządzenie ma kluczować światło 1MHz. W odbiorniku także otrzymuję te 16-20 Hz.

    Nie za bardzo rozumiem skąd mi bierze się dodatkowy sygnał na wyjściu ATMEGA. Średnio uśmiecha mi się stosować filtr na wyjściu. Jest ktoś w stanie mi odpowiedzieć skąd na wyjściu dodatkowy sygnał? Sprawdzałem zasilanie ATMEGI oscyloskopem i jest gładkie. Stosuję też dodatkowe kondensatory 100nF na ATMEGA. Czy istnieje rozwiązanie na eliminację sygnału niepożądanego?
  • #5 12086030
    BlueDraco
    Specjalista - Mikrokontrolery
    Przecież kluczujesz ten 1 MHz z jakąś częstotliwością, nieprawdaż? Jak nie będziesz kluczował - nie będziesz miał tej składowej.
  • REKLAMA
  • #6 12086831
    marnowak
    Poziom 15  
    Właśnie chodzi o to, że bez kluczowania. Kod dokładnie jak w pierwszym poście.
    Coś jakby 50 Hz dzielone, ale na zasilaniu nie mam żadnych drgań.
  • REKLAMA
  • #7 12086865
    BlueDraco
    Specjalista - Mikrokontrolery
    Niewiele z tego rozumiem. Gdzie masz te 16 Hz i skąd wiesz, że je masz? Czym mierzysz/oglądasz? Oscyloskop na wyjściu timera?

    Czy linię RESET uC masz podpiętą przez rezystor do + zasilania?
  • #8 12086890
    marnowak
    Poziom 15  
    Na wyjściu PB3, tam gdzie powinno być 1MHz jest 1MHz:
    ATMEGA8 - Jak zaimplementować modulację ASK na PB3 przy 1MHz?

    oraz pasożytniczy przebieg:
    ATMEGA8 - Jak zaimplementować modulację ASK na PB3 przy 1MHz?

    Skąd się bieże przebieg pasożytniczy i jak się go pozbyć bez używania filtrów na wyjściu PB3?

    Dodano po 4 [godziny] 6 [minuty]:

    Więc tak.
    Zasiliłem z akumulatora przez stabilizator 5V.
    Okazuje się, że nie jest to problem pochodzący od zasilania.
    Załaczam przebieg na XTAL2. Widać, że oprócz 8 MHz jest tam, także przebieg około 30 Hz.
    Czy to oznaka, że kondensator przy kwarcu uszkodzony/nie taki. Skąd na XTAL dodatkowy przebieg o częstotliwości kilkudziesięciu Hz?
    ATMEGA8 - Jak zaimplementować modulację ASK na PB3 przy 1MHz?
REKLAMA