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 ustawić wypełnienie PWM 50Hz na Timer2 w ATmega8 przy kwarcu 16MHz?

MaX.J 19 Lis 2016 22:16 663 4
REKLAMA
  • #1 16072968
    MaX.J
    Poziom 12  
    Witam,


    Szukam i znaleźć nie mogę.
    Muszę wysterować serwomechanizm. PWM 50Hz i sterowanie wypełnieniem. Problem w tym, że w ATmedze8 Timer1 mam już nieodwołalnie zajęty(odmierza czas, steruje grzałką) chciałbym użyc Timera0 lub Timera2.
    Przy kwarcu 16MHz i trybie CTC PWM do rejestru OCR2 wpisuję wartość 155 dostaję 50Hz.
    Teraz moje pytanie: jak wysterować wypełnienie?

    Przypominam, ze w Timerze2 nie ma rejestru ICR2.
  • REKLAMA
  • #2 16073020
    BlueDraco
    Specjalista - Mikrokontrolery
    No i właśnie ze tego powodu każdy projekt powinno zaczynać się od spisania wymagań, a następnie od wyboru mikrokontrolera na podstawie tych wymagań.
    Znajdź taki uC, który ma tyle kanałów PWM o programowanej częstotliwości i wypełnieniu, ile potrzebujesz, a nie staraj się na siłę zrobić na tam uC, jaki masz, czegoś, czego on nie potrafi.

    Jeśli liczba stopni wypełnienia nie jest zbyt duża (np. 10), możesz spróbować generować przebieg programowo, programując timer na 10 kHz.
  • REKLAMA
  • #3 16073034
    MaX.J
    Poziom 12  
    1) Chodzi mi tylko o 2 stopnie(max wychylenie i min).
    2) Użyłem ATmegi8 bo miałem taką. Jeżeli rozwiązanie nie będzie zadowalające zakupie inną.


    Z programowymi rozwiązaniami widziałem projekty, w których po prostu wstawiali opóźnienie w pętli głównej, jednak nie chciałbym pętli głównej opóźniać.
  • REKLAMA
  • #4 16073056
    michalko12
    Specjalista - Mikrokontrolery
    Jeśli to zwykłe serwo modelarskie to interesują cię tylko impulsy 1ms i 2ms co 20ms. Spokojnie można to zrobić na przerwaniach od dowolnego timera. PWM tu trochę nie bardzo pasuje.

    Edit:
    Muszę się poprawić - 0,3ms i 2,3 ms co 20ms
  • #5 16073074
    BlueDraco
    Specjalista - Mikrokontrolery
    To zaprogramuj timer na 1 kHz i odliczaj w przerwaniu do 20. Przy stanie 20 zerujesz licznik i wystawiasz na wyjście 1, a przy stanie 1 lub 2 wystawiasz 1.
REKLAMA