Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[ATMEGA88] [BASCOM] 4xPWM

Bartek_Sab 10 Lut 2009 21:22 2764 6
  • #1 10 Lut 2009 21:22
    Bartek_Sab
    Poziom 9  

    Witam
    Jak w Bascomie skonfigurować 4 PWMy w tym procku? Do tej pory używałem jedynie Atmegi8.

    Bardzo proszę o nie odsyłanie do manuala tego procka, niestety jestem z pokolenia gdy jeszcze język angielski ograniczał się do znajomości gumy Donald w Pewexie i kilku mniej cenzuralnych słów...
    Przeglądałem oczywiście manuala, ale udało mi się jedynie rozkaligrafować pod którymi są wyprowadzeniami i że w tym procku jest ich 6. Powyżej tego ciężko mi się przebić.

    Ale pomóżcie mi teraz to pożenić z Baskomem.

    Jak zrozumiałem, muszę skonfigurować Timer0 - Dla pojedynczego PWMa będzie to:

    Code:

    Config Timer0 = Pwm, Pwm = 8, Compare A Pwm = Clear Down, Compare B Pwm = Clear Down, Prescale =8


    To kumam wiem jak korzystać z tych dwóch wyjść (doświadczenia na procku Atmega8) i jak zmieniać parametry.
    Ale jak to się odbywa dla pozostałych 4 kanałów??

    Pomóżcie początkującemu.
    Z góry dziękuję i proszę o wyrozumiałość.

    B.

    0 6
  • Pomocny post
    #2 10 Lut 2009 21:38
    ZbeeGin
    Poziom 38  

    Taka składnia dotyczy tylko Timer1/Timer3/Timer4/Timer5. Nie zadziała poprawnie dla Timer0 i Timer2. Choć z moich osobistych obseracji to najnowszy BASCOM-AVR i spora grupa procesorów poprawnie obsłuży taką składnię:

    CONFIG TIMER0 = PWM , PRESCALE = 1 | 8 | 64 | 256 | 1024 , COMPARE A PWM = CLEAR UP | CLEAR DOWN | DISCONNECT , COMPARE B PWM = CLEAR UP | CLEAR DOWN | DISCONNECT
    (kreski oznaczają parametry opcjonalne)

    Jak chcesz 4 PWM to wykorzystasz liczniki: 2 kanały OC0A/OC0B z Timer0 (lepiej konfigurowany przez zmianę bitów w rejestrach - nie uciekniesz niestety od noty katalogowej!), 2 kanały OC1A/OC1B z Timer1 - oba kanały w trybie 8-bit wg składni w helpie. Pamiętaj by końcówki OC0A i OC0B ustawić jako wyjścia.

    0
  • Pomocny post
    #3 10 Lut 2009 21:45
    nouki
    Poziom 25  

    Witam.

    Można np. tak :) 6 x Pwm

    Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera

    Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

    0
  • #4 10 Lut 2009 22:31
    Bartek_Sab
    Poziom 9  

    Dzięki za pomoc. Teraz już wiem z czym mam eksperymentować.
    Niestety w tej chwili piszę czysto teoretyczne.
    Do szpitala nie było jak brać płytki z prockiem.
    Więc jedynie co w tej chwili mogę to testy w emulacji Bascoma, wiec czysto teoretycznie.
    Ale mam już jakiś początek.

    Czyli jak rozumiem Timer0 odpowiadać będzie za wyjścia OC0(A,B), Timer1 za OC1(A,B), Timer2 OC2(A,B) ?
    I obsługa tych kanałów odbywać się będzie przez załadowanie wartości do rejestrów OCR(0-2)(A,B)?

    Przynajmniej tak wnioskuję z przyglądania się manualowi.

    Jeszcze raz dzięki za pomoc.
    B.

    0
  • Pomocny post
    #5 10 Lut 2009 22:35
    ZbeeGin
    Poziom 38  

    Tak

    0
  • #6 03 Paź 2010 19:58
    msnake
    Poziom 11  

    np
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1

    Config Timer0 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down

    Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down 'Konfiguracja Timera

    Config Timer2 = Pwm , Prescale = 1 , Pwm = On , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down



    Pwm1a = 220
    Pwm1b = 200
    Pwm0b = 10
    Pwm0a = 80

    0
  • #7 03 Paź 2010 20:22
    inventco.eu

    Poziom 29  

    Moderowany przez inventco.eu:

    Wykopaliska zamykam. Proszę zapoznać się z regulaminem forum.

    0