Timer2 jako PWM w atmega328


Witam kolegów.

Usiłuję w Bascomie skonfigurować timer2 jako pwm ale nic mi z tego nie wychodzi.
Konfigurowałem na timer0 i 1 i wychodzi. Potrzebuję wykorzystać akurat te piny
przypisane do timera2 jako pwm.

Z góry dziękuję za pomoc...




Portret użytkownika EDC

Odp.Timer2 jako PWM w atmega328

Zamieść kawałek kodu który Ci nie działa i napisz numer wersji Bascoma(2075-2079)
Mam nadzieję że nie piszemy o tej spolszczonej :D

-

BARTek
Moja strona

Portret użytkownika dyw

kod:

Do celów uruchomienia samego timera2, wersja Bascom 1.11.9.8 spolszczona :)

$regfile = "m328pdef.dat"                                   'informuje kompilator o mikrokontrolerze
$crystal = 16000000                                         'kwarc 16MHz
 
Config Pind.3 = Output
 
'Konfiguracja timer2 jako sygnał pwm
   Config Timer2 = Pwm , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 1
 
 
'Zmienne
 
 
  Enable Interrupts
 
 
 
'*******************************************************************************
Do
 
 
Incr Pwm2b
Waitms 50
Loop
 
End                                                         'end program
'*******************************************************************************

Może bezpośrednio na rejestrach, patrzyłem w notę ale :-D ?

Portret użytkownika dyw

Hej Panowie!!!

Nikt nie pomoże?
Nikt nigdy nie konfigurował timera2 jako PWM?

Ja gdybym wiedział to bym pomógł...

Sun... Pleace Help!

Portret użytkownika matrix

Re: Timer2 jako PWM w atmega328

Być może błąd tkwi w składni jaką budujesz ? Poniże instrukcja zaczerpnięta z polskiego helpa do bascoma.

Quote:
Licznika TIMER2 może pracować także jako 8 bitowy generator PWM (TIMER2 = PWM).
Można określić czy licznik ma zliczać w górę lub w dół po stwierdzeniu zgodności rejestru
COMPARE2 z zawartością licznika.

COMPARE PWM
Określa tryb pracy generatora PWM. Można ustawić: CLEAR UP
lub CLEAR DOWN

Uwaga! Instrukcja CONFIG TIMER2 musi być zapisana w jednej linii. Nie wszystkie jej
składniki muszą występować.

Z tego fragmentu:

Quote:
COMPARE PWM
Określa tryb pracy generatora PWM. Można ustawić: CLEAR UP
lub CLEAR DOWN

wynikało by że nie możesz zapisać Timer2 jako DISCONNECT

Portret użytkownika EDC

Odp.Timer2 jako PWM w atmega328

Proszę, ale jeśli używasz tak starej wersji Bascom i chcesz coś ustawiac po rejestrach to musisz znać angielski i czytać notę.
Ta polska wersja jest już tak stara że ma brodę po której można deptać. Te demo 2075 trzymam tylko by sprawdzać czasem kody umieszczane przez innych w sieci i piszacych że coś nie działa. Tej polskiej nie miałem nigdy.
Nie da sie programować bez znajomości angielskiego :D
Twój kod w kazdej innej wersji działa od strzała.
Poniżej masz wersję na rejestrach.

$regfile = "m328pdef.dat"                                   'informuje kompilator o mikrokontrolerze
$crystal = 16000000                                         'kwarc 16MHz
 
Config Pind.3 = Output
 
'Config Timer2 = Pwm , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 1
 
Tccr2b = &B00000001
Tccr2a = &B00110001
'*******************************************************************************
Do
 
Incr Ocr2b
 Waitms 50
 
Loop
End                                                         'end program
'*******************************************************************************

Miłego wieczoru

-

BARTek
Moja strona

Portret użytkownika dyw

Timer2 jako PWM w atmega328

No niestety taką mam wersję,
na razie spróbuję na rejestrach
i dam znać co wyszło.

Dzięki.

Portret użytkownika dyw

Timer2 jako PWM w atmega328

Jest śmiga aż miło :)

Poniżej trochę komentarzy dla potomnych odnośnie ustawień Timera2,
a właściwie jego rejestrów Tccr2a i Tccr2b

$regfile = "m328pdef.dat"                                   'informuje kompilator o mikrokontrolerze
$crystal = 16000000                                         'kwarc 16MHz
 
Config Pind.3 = Output
Config Pinb.3 = Output
'Config Timer2 = Pwm , Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Prescale = 1
 
'Tccr2a = &B11110001
'                  ^ - PWM, Phase Correct
'           ^^^^ - Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
'Tccr2a = &B10100011
'                 ^^ - Fast PWM
'           ^^^^ - Compare A Pwm = Clear Up , Compare B Pwm = Clear Up
'Tccr2a = &B00110011
'           --^^--^^ - Compare A Pwm = Disconnect , Compare B Pwm = Clear Down , Fast PWM
'
'Tccr2b = &B00000001
'                --^ - Prescale = 1 (3 - bitowa wartość ! zgodnie z notą)
 
 
Tccr2a = &B00110011
Tccr2b = &B00000001
 
'*******************************************************************************
Do
Incr Ocr2a
Incr Ocr2b
 Waitms 10
 
Loop
End                                                         'end program
'*******************************************************************************

Wielkie dzięki kolegom z forum.

Szczególnie Kolega BARTek bardzo pomógł!!!

P.S. czasami wystarczy tylko pchnąć palcem a dalej już idzie gładko :) Pozdrawiam...