Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Attiny2313 - Sterowanie trzecim kanałem pwm

coolder 09 Mar 2013 20:03 1038 5
  • #1 09 Mar 2013 20:03
    coolder
    Poziom 7  

    Witam

    Szukałem dużo na forum ale niestety nie znalazłem odpowiedzi jak dokładnie zrobić pwm na pwm0a

    Czy może mi ktoś napisać co mam dopisać do programu abym mógł sterować 3 kanałem pwm?

    Oto program:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam

    0 5
  • #2 09 Mar 2013 20:10
    Fobos319
    Poziom 12  

    DS się kłania w programie konfigurujesz Timer 1 a nie konfigurujesz Timer 0 to jak ma działać wyjście OCR0 ????

    0
  • #3 09 Mar 2013 21:44
    coolder
    Poziom 7  

    Wiem że trzeba skonfigurować Timer 0 tylko właśnie nie wiem jak dlatego proszę o pomoc.

    0
  • #4 10 Mar 2013 02:34
    emarcus
    Poziom 34  

    coolder napisał:
    Wiem że trzeba skonfigurować Timer 0 tylko właśnie nie wiem jak dlatego proszę o pomoc.


    W zasadzie nie musisz tego wiedziec/(pamiętac szczegóły).
    Możesz wzorowac się na configuracji Timera1, ale wtedy nie masz pewności w jakim trybie PWM masz sconfigurowany twój timer; czy to jest Fast PWM, czy też PWM Phase Correct.
    Najszybsza i najpewniejsza forma to bezpośrednie wyedytowanie dwóch rejestrów Timera0:
    TCCR0A, oraz TCCR0B

    1. Najpierw otwórz Datasheet z tabelą 40 str.79 i uważne przestudiuj...
    2. zdecyduj tryb PWM (5 lub 7); drugi jest 2 x szybszy niż ten pierwszy.
    3.Masz tam tylko trzy bity do ustawienia, które decydują o trybie pracy timera0, ale niefortunnie jest, że są one rozrzucone w dwóch różnych rejestrach o których wspomniałem wyżej.
    Rejestry te zawierają również inne bity do ustawienia, z którymi poradzisz sobie posługując sie odpowiednimi tabelkami 35 lub 38 dla TCCR0A, oraz 41 dla TCCR0B; ta ostatnia dotyczy tylko ustawienia prescalera.
    W ten sposob wyedytowane rejestry konfigurujesz w programie zwyczjnie podając ich wartośc w dowolnej formie np: binary, hex lub dziesętnej
    Zauważ że odpowiednie ustawienie bitów z tabeli 35 lub 38 'łączy' wyjście timera do odpowiedniego portu (np: OCB0), ale port ten (PD.5) musi byc też sconfigurowany jako wyjście aby uzyskac tam oczekiwany sygnał PWM.
    To wszystko...

    Podobnie możesz posługiwac się odpowiednimi tabelami dla timera1.

    e marcus

    0
  • #5 10 Mar 2013 08:32
    coolder
    Poziom 7  

    Czytałem i niestety nie wiem co wpisać w TCCR0A oraz TCCR0B czy możesz mi podać co wpisać aby ten Timer działał tak samo jak Timer1 ?

    0
  • #6 10 Mar 2013 20:31
    emarcus
    Poziom 34  

    coolder napisał:
    Czytałem i niestety nie wiem co wpisać w TCCR0A oraz TCCR0B czy możesz mi podać co wpisać aby ten Timer działał tak samo jak Timer1 ?


    Timer1 masz skonfigurowany w trybie "Phase Correct PWM" - stąd obliczysz częstotliwośc.

    Więc sonfiguruj go podobnie jak Timer1 z pewnymi różnicami:
    Config Timer0 = Pwm , Prescale = 64 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect
    albo bezpśrednio:
    TCCR0A = &B11000001
    TCCR0B = &B00000011

    e marcus

    0