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

[Atmega16][c] pwm Timer1. Dlaczego na wyjściach pojawia się to samo?

Trismagist 21 Mar 2011 17:56 1773 4
REKLAMA
  • #1 9304726
    Trismagist
    Poziom 11  
    Witam, mam problem z pwm, otóż niezależnie co wpiszę w OCR1A i OCR1B (wsp. wypełnienia) to i tak na wyjściu OC1B pojawia się to samo co na OC1A. Chyba że te dwa kanały nie są niezależne od siebie tylko działają równolegle.

    Kawałek kodu który steruje diodami
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 9305422
    Andrzej__S
    Poziom 28  
    Ustawienie bitów WGM13:WGM12:WGM11:WGM10 na 1001 (9) oznacza ustawienie timera w tryb pracy "PWM, Phase and Frequency Correct", w którym rejestr OCR1A służy do ustalenia wartości, przy jakiej wartości licznik ma rozpocząć odliczanie w dół (zmienić kierunek zliczania), a nie do ustawienia wypełnienia. Użyj innego trybu. Nie napisałeś, co chcesz osiągnąć, więc trudno doradzić jakiś konkretny.
  • REKLAMA
  • #3 9305521
    percol
    Poziom 12  
    Heh, na początek widzę błąd banalny.
    Otóż OCR1A wyznacza TOP dla licznika, stąd dla OCR1B to też jest wartość szczytowa, str. 107 manuala:

    Cytat:
    When changing the TOP value the program must ensure that the new TOP value is higher or
    equal to the value of all of the Compare Registers. If the TOP value is lower than any of the
    Compare Registers, a compare match will never occur between the TCNT1 and the OCR1x.


    Twój soft tego nie robi, nie sprawdza czy OCR1B jest mniejsze niż OCR1A - to pierwsze źródło błędów.

    Może użyj trybu 8 ze strony 112 manuala i częstość zmieniaj ICR1. Choć to i tak nie zwalnia cię ze sprawdzania czy któryś z rejestrów OCR nie jest większy niż TOP.
    Powodzenia!
  • REKLAMA
  • #4 9306138
    Trismagist
    Poziom 11  
    Dzięki wielkie za naprostowanie toku myślenia. Jak znowu będę miał chwilkę czasu to zasiądę z powrotem to tego.
  • #5 9306139
    Szumlus
    Poziom 17  
    Witam,

    Jak słusznie zauważyli koledzy układ działa poprawnie tylko nie w tym trybie co chciałeś.
    Niestety chcąc nie chcąc trzeba się zaprzyjaźnić z dokumentacjami i nauczyć się je czytać. Jest Ci coś potrzebne to szukasz, czytasz i konfigurujesz, nie sposób wszystkiego zapamiętać a po drugie głowa nie śmietnik i wszystkiego się tam nie ładuje.

    Pozdrawiam.
REKLAMA