logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.
REKLAMA
  • #1 6142919
    lezu
    Poziom 10  
    Generuje sygnał PWM z timera1 naPB5, potrzebuje ten sam sygnał opóźnić o kilka taktów zegara ,zanegować i wystawić na innym wyjściu . Czy jest to możliwe wewnątrz procesora, bez wykorzystania zewnętrznych elementów? Jeśli tak to proszę o sugestię.
    Próbowałem bezskutecznie w ten sposób :
    while (1) 
    	{
    PORTD=~PORTB;
    }
  • REKLAMA
  • Pomocny post
    #2 6143308
    marenc
    Poziom 24  
    Opóźnienie - zatrzymanie timera na określoną ilość cyklów zegara.

    Zanegowanie - zmiana wartości w rejestrze porównywania(chyba OCRx). Zamiast 10 dajesz 255-10=245.

    Wystawić na innym wyjściu - zmienić timer.

    Pomyliłeś pojęcia myśląc, że układ sprzętowego PWM steruje na rejestrze PORTx. Takie rozwiązanie nie pozwalało by użytkownikowi na korzystanie z tego portu podczas pracy PWM. Innym wyjściem jest napisanie programowego PWM, co może Ci skomplikować życie w przypadku, gdy program masz prawie gotowy :D
  • #3 6156718
    lezu
    Poziom 10  
    wykorzystałem timer 3 do generacji drugiego przebiegu PWM. wartość wypełnienia wpisuje taką sama do OCR1A i OCR3A zmieniam tylko wartość COM3 z 2 na 3 co powoduje negacje przebiegu. Opóźnienie wynika z późniejszego włączenia timera 3.
    Dzieki za podpowiedź. Pozdrawiam
REKLAMA