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

Atmega 162 i PWM, który nie działa...

sundayman 20 Kwi 2010 16:54 1579 4
  • #1 7983529
    sundayman
    Poziom 26  
    Właśnie próbuję uruchomić 4 wyjścia PWM na Atmedze 162 (TFQP 44)
    Mam podłączone :

    PB0 (OC0/T0) - timer0
    PB1 (OC2/T1) - timer2
    PD5 (OC1A) - timer1
    PE2 (OC1B) - timer1

    Zacząłem od timer2, i zrobiłem tak:

    
    
    $regfile = "M162def.dat"
    $crystal = 11059200
    $baud = 9600
    
    ' wyjścia PWM
    Config Pinb.0 = Output
    Config Pinb.1 = Output
    Config Pind.5 = Output
    Config Pine.2 = Output
    
    ' konfiguracja PWM
    Config Timer2 = Pwm , Async = Off , Prescale = 1 , Pwm = On , Compare Pwm = Clear Down
    
    Enable Interrupts
    Enable Timer2
    
    Compare2 = 100
    
    Do
    Loop
    
    End
    


    No i - nie hula :(
    Samo wyjście PB.1 mam podpięte do mosfeta z ledem.
    Kiedy macham nim "ręcznie", to jest ok. A tak nic.

    A druga sprawa - jak to jest z timerem1, który mi tu ma obsługiwać 2 niezależne PWM-y ? Możecie podpowiedzieć, jak to obsłużyć ?
  • #2 7983651
    sylwunia35
    Poziom 18  
    A co ma się dziać jak w pętli DO...LOOP jest nic.Jakieś INCR coś.
  • #3 7983678
    sundayman
    Poziom 26  
    No ale po pierwsze, przecież PWM są sprzętowe, co ma do tego czy coś w do_loop jest czy nie ?
    Po drugie, w rzeczywistości tam coś jest robione, bo jest tak teraz :

    
    
    ' konfiguracja PWM
    
    Config Timer2 = Pwm , Async = Off , Prescale = 1 , Pwm = On , Compare Pwm = Clear Down
    
    Enable Interrupts
    Enable Timer2
    
    Compare2 = 100
    
    Do
    Led_online = 1
    Waitms 300
    Led_online = 0
    Waitms 300
    Loop
    
    End
    
    


    Czyli mam miganie "kontrolnym" ledem.
    Ale nic to nie zmienia, na wyjściu PWM martwa cisza...
  • #4 7983686
    _Robak_
    Poziom 33  
    A po czym stwierdzasz że martwa cisza? PWMa tmera2 nie jestes w stanie zobaczyć, jeśli masz tam diodę to będzie się świecić po prostu (przy OCR2=100, jeśli to fast).
  • #5 7983719
    sundayman
    Poziom 26  
    Już działa. Żeby było ok, trzeba ustawić bity wrejestrze TCCR2 :

    
    Config Timer2 = Pwm , Async = Off , Prescale = 1024 , Pwm = On , Compare Pwm = Clear Down
    Reset Tccr2.com20
    Set Tccr2.com21
    
    Enable Interrupts
    Enable Timer2
    
    Compare2 = 20
    


    I teraz jest dobrze.

    Ale teraz - jak ustawić timer 0 jako PWM ? Bo config timer0 = pwm wywala mi błąd kompilatora.
REKLAMA