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

Konfiguracja TIMER1, PWM, 8-bitowy

elektrokuba 24 Mar 2011 18:14 1732 6
REKLAMA
  • #1 9317480
    elektrokuba
    Poziom 12  
    Witam
    Trzeci dzień usiłuje skonfigurować PWM na timer1 a i b i nie wiem jak to zrobić. Konfiguracja na timer 0 i 2 przeszła bez problemu a tutaj jakoś nie chce. Mam skonfigurowany timer, wydaje mi się ze dobrze, więc proszę powstrzymać się od odsyłania mnie do dokumentacji. Chodzi mi po prostu o to w jaki sposób zapisać wartość zadaną. Rejestr OCR1A/B składa się z 16 bitów a ja mam PWMa 8 bitowego. Gdzieś wyczytałem że pozostałe bity są maskowane a u mnie jakby nie były. Poniżej zamieszczam przykładowe wyniki otrzymane dla zadanych wartości napięć i konfigurację timera. PWM powinien działać w trybie fast PWM 8 bitów, tak też ustawiłem rejestr TCCR1A(B). Proszę o odpowiedź w jaki sposób (do jakiego rejestru) wpisać wartość która ma być generowana, ewentualnie co pozmieniać, co mam źle. Zaznaczam że chcę wykorzystać oba kanały zarówno A jak i B.

    zadana [V] | na wyjściu [V]
    0 | 5
    0,5 | 3,2
    1 | 1
    1,5 | 2
    2 | 3
    2,5 | 5
    3 | 2
    3,5 | 3,5
    4 | 4
    4,5 | 3
    5 | 0

    ; PWM konfiguracja
    ldi
    r16,((1<<COM1B0)|(1<<COM1B1)|(1<<COM1A0)|(1<<COM1A1)|(1<<WGM10))
    out TCCR1A,r16
    ldi r16,((1<<CS10)|(1<<WGM12))
    out TCCR1B,r16
    
    ; w r24 i r25 znajdują się wartości które chcę generować (wypełnienie 8-bitowe)
    ldi r16,255
    out OCR1AL,r24
    out OCR1AH,r16
    out OCR1BL,r25
    out OCR1BH,r16
  • REKLAMA
  • #2 9317621
    Andrzej__S
    Poziom 28  
    Do OCR1H należy wpisywać wartość w pierwszej kolejności, później dopiero do OCR1L (przy odczycie jest odwrotnie). Dotyczy to oczywiście wszystkich rejestrów 16-bitowych.
    Przy odczycie i zapisie używany jest rejestr tymczasowy, więc należy uważać, by obsługa jakiegoś przerwania nie zmieniła jego wartości (jeśli w przerwaniu jest również wykonywany zapis lub odczyt z rejestru 16-bitowego). Można np. wyłączyć przerwania na czas zapisu do rejestrów 16-bitowych, jeśli to konieczne.
  • REKLAMA
  • #3 9317635
    elektrokuba
    Poziom 12  
    Dziękuję za uwagę ale w geście rozpaczy próbowałem już wszystkiego (taka zmiana nic nie zmienia w moich wynikach)
  • REKLAMA
  • #5 9317886
    elektrokuba
    Poziom 12  
    Spoko. W końcu znalazłem błąd. Konfiguracja jest ok, problem był w programie. Przepraszam za zamieszanie i dziekuję za uwagi. Temat do zamkniecie.
  • REKLAMA
  • #7 9318184
    elektrokuba
    Poziom 12  
    yhy
REKLAMA