Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Attiny2313 - Sterowanie trzecim kanałem pwm

coolder 09 Mar 2013 20:03 1206 5
  • #1
    coolder
    Level 9  
    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:
    Code: vbnet
    Log in, to see the code


    Pozdrawiam
  • #2
    Fobos319
    Level 14  
    DS się kłania w programie konfigurujesz Timer 1 a nie konfigurujesz Timer 0 to jak ma działać wyjście OCR0 ????
  • #3
    coolder
    Level 9  
    Wiem że trzeba skonfigurować Timer 0 tylko właśnie nie wiem jak dlatego proszę o pomoc.
  • #4
    emarcus
    Level 38  
    coolder wrote:
    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
  • #5
    coolder
    Level 9  
    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 ?
  • #6
    emarcus
    Level 38  
    coolder wrote:
    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