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

[Rozwiązano] PWM - Czy jest biblioteka, która obsługuje kilka pinów na jednym timerze?

mxmxmxmxmx 15 Kwi 2024 10:29 261 2
REKLAMA
  • #1 21045862
    mxmxmxmxmx
    Poziom 16  
    Posty: 318
    Pomógł: 8
    Ocena: 12
    Czy jest biblioteka, która obsługuje kilka pinów PWM jednego timera i pozwala ustawić na nich zadaną częstotliwość?
    Na przykład chcę użyć pinów 2, 3 and 5 na Arduino Mega. Muszą mieć one taką samą częstotliwość, po pracują na jednym timerze. Potrzebuję tylko innych współczynników wypełnienia.

    Próbowałem bibliotekę AVR_PWM. Wszystko działa idealnie, dopóki używam pinów na różnych timerach. Nie chcę tracić kilku timerów, bo wystarczy mi jedna częstotliwość. Czy robię coś nie tak z tą biblioteką? Czy po prostu nie obsługuje ona kilku pinów jednego timera jednocześnie.

    Czy jedynym wyjściem jest bezpośrednie ustawienie częstotliwości w rejestrach timera korzystanie z wbudowanej analogWrite?
    Czy też użyć jakiejś biblioteki tylko do ustawienia timera i dalej wbudowanej funkcji analogWrite?

    ```
    #include "AVR_PWM.h"

    //#define pinToUse 12 // Timer1B on Mega
    //#define pinToUse 11 // Timer1A on Mega
    //#define pinToUse 9 // Timer2B on Mega
    //#define pinToUse 2 // Timer3B on Mega
    //#define pinToUse 3 // Timer3C on Mega
    //#define pinToUse 5 // Timer3A on Mega
    //#define pinToUse 6 // Timer4A on Mega
    //#define pinToUse 7 // Timer4B on Mega
    //#define pinToUse 8 // Timer4C on Mega
    //#define pinToUse 46 // Timer5A on Mega
    //#define pinToUse 45 // Timer5B on Mega
    //#define pinToUse 44 // Timer5C on Mega

    void setup() {
    AVR_PWM* PWM_Instance = new AVR_PWM(2, 5000, 0);
    AVR_PWM* PWM_Instance2 = new AVR_PWM(3, 5000, 0); // Tried with only one instance per timer, setting different pins on the same instance.

    PWM_Instance->setPWM(2, 5000, 50);
    //delay(4000); //to be able see on oscilloscope.
    PWM_Instance2->setPWM(3, 5000, 50); //That disables PWM on pin2 and enables PWM on pin3. I just want to have both
    }
    ```
  • REKLAMA
  • Pomocny post
    #2 21046505
    mpier
    Poziom 29  
    Posty: 817
    Pomógł: 153
    Ocena: 141
    Witam,
    jeśli Ci gotowe biblioteki nie pasują, możesz napisać własną. Jeśli ograniczysz się do jednego mikrokontrolera i jednego timera, to całość nie powinna być dłuższa od postu, który napisałeś.
    Pierwsze co mi w google wyskoczyło: TimerThree. Zajrzyj do środka, i zobacz jak to działa. Biblioteki nie znam i nie używałem.

    Pozdrawiam.
  • #3 21046915
    mxmxmxmxmx
    Poziom 16  
    Posty: 318
    Pomógł: 8
    Ocena: 12
    Polecona biblioteka w 100% zrealizowała moje zadanie.
REKLAMA