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

Jak uzyskać prawdziwy 16-bitowy PWM na Atmega 8?

karol17 16 Gru 2017 23:02 1113 5
REKLAMA
  • #1 16895486
    karol17
    Poziom 15  
    Witam, męczy mnie temat, wydaje się prosty a jednak nie do końca ponieważ nie znajduję zbyt wiele wiedzy w tym temacie w sieci ni w dokumentacji producenta. Zaznaczam że używałem timerów już kilkakrotnie jednak nie potrzebowałem wcześniej takiej rozdzielczości.

    Otóż chodzi o uruchomienie Timera1 w trybie PWM-a na Atmega8 o rozdzielczości 16 bitów.
    Uruchamiałem różne tryby timera skończywszy na trybie 15, gdzie wypełnienie steruję wartością rejestru OCR1X. Jednak jak się okazuje rozdzielczość PWM-a wynosi nie 16 bitów a 10 bitów (regulacja wypełnienia widziana na oscyloskopie jest w granicach OCR1A= 0-1024).
    Wszelkie poradniki traktują o tym timerze jednak żaden nie opisuje owej 16 bitowej rozdzielczości PWM-a która jest zadeklarowana w dokumentacji (s. 75) jednak tu też nie znajduję informacji prócz tej że rozdzielczość ustawiam rejestrem OCR1X lub ICR1 (s. 98).
    Wiem że mogę użyć przerwań i trybu 1 ale przerwań chcę uniknąć ze względów technicznych.

    Z góry dziękuję za odpowiedź.
  • REKLAMA
  • #2 16895535
    excray
    Poziom 41  
    Możesz użyc trybu 0 - Normal. Co do trybów 15 i 16 to nie sprawdzałem, choć dokumentacja sugeruje, że jest to jak najbardziej możliwe.
  • REKLAMA
  • #3 16899745
    karol17
    Poziom 15  
    Udało się
    A więc dla zagubionych i potomnych :)
    Według mnie producent opisał ten temat ciut niezrozumiale a poradniki najczęściej go pomijają.
    Otóż rozdzielczość 16 bitową PWM-a osiągnąłem przy zastosowaniu trybu opisanego w dokumentacji numerem 14.
    W rejestrze ICR1 ustawiam rozdzielczość PWM-a (max 65535 ponieważ licznik jest 16 bitowy).
    Natomiast w rejestrze OCR1x (u mnie OCR1A) ustawiam wypełnienie biorąc pod uwagę iż wartość ICR1 to wypełnienie 100%.
    Warto zwrócić też uwagę na rozmieszczenie bitów WGM w 2 różnych rejestrach.

    W trybie 15 taki ani odwrotny układ nie zadziałał, nie wnikam czemu.

    excray
    Tryb 0 odpada ponieważ nie ma żadnej regulacji wartości progowej licznika. Użycie przerwań odpada.

    Temat rozwiązany - zamykam :)
  • REKLAMA
  • #4 16899901
    dondu
    Moderator na urlopie...
    karol17 napisał:
    Otóż rozdzielczość 16 bitową PWM-a osiągnąłem przy zastosowaniu trybu opisanego w dokumentacji numerem 14.
    W rejestrze ICR1 ustawiam rozdzielczość PWM-a (max 65535 ponieważ licznik jest 16 bitowy).
    Natomiast w rejestrze OCR1x (u mnie OCR1A) ustawiam wypełnienie biorąc pod uwagę iż wartość ICR1 to wypełnienie 100%.

    Dokumentacja jest prawidłowo opisana pod tym kątem także w tabelce, z której wybierałeś tryb 14 - patrz kolumna TOP.

    karol17 napisał:
    Warto zwrócić też uwagę na rozmieszczenie bitów WGM w 2 różnych rejestrach.

    Zawsze trzeba szukać rejestru zawierającego bity, które chcemy wykorzystać.
  • REKLAMA
  • #5 16920474
    karol17
    Poziom 15  
    No dziękuję bardzo ale z całym szacunkiem: taka odpowiedź właśnie nic nie wnosi :D Jedynie tyle że: "jest tam napisane i napisane jest dobrze".

    Jak by był tak miły kolega wskazać dokładnie z opisem gdzie jest to napisanie w dokumentacji to wtedy ma to jakąś wartość a takiej odpowiedzi może udzielić prawie każdy :)

    Może jestem ślepy, może zbyt głupi ale nie widzę w dokumentacji ani grama jasnej informacji co do tematu, a o uważaniu na rejestry wspomniałem dlatego iż bity odpowiadające za wybór trybu opisane są pod rejestrem TCCR1A a część z nich znajduje się w rejestrze TCCRR1B to tylko taka delikatna podpowiedź bo ktoś początkujący może się tu pomylić. I temat ma co raz większą objętość a nie przybywa w nim cennych informacji dlatego go zamknąłem :)

    Pozdrawiam
  • #6 16920775
    dondu
    Moderator na urlopie...
    karol17 napisał:
    No dziękuję bardzo ale z całym szacunkiem: taka odpowiedź właśnie nic nie wnosi :D Jedynie tyle że: "jest tam napisane i napisane jest dobrze".

    Jak by był tak miły kolega wskazać dokładnie z opisem gdzie jest to napisanie w dokumentacji ...

    Toć przecież napisałem :) :

    dondu napisał:
    .. w tabelce, z której wybierałeś tryb 14 - patrz kolumna TOP.
REKLAMA