[BASCOM] ATTiny2313 - Timer0 jako PWM

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
bajer71480
-
Posty: 2
Rejestracja: 24 gru 2014, 23:36
Lokalizacja: Polska

[BASCOM] ATTiny2313 - Timer0 jako PWM

Post autor: bajer71480 » 25 gru 2014, 11:44

Witam wszystkich forumowiczów i życzę Wesołych Świąt.
Buduję sterownik diod RGB sterowany z pilota RC5 na ATTiny2313 i mam problem z konfiguracją Timera0 jako generator PWM. Diody są ze wspólną anodą. Chcę sterować nim jednym z trzech kolorów. Timer1 skonfigurowałem poprawnie i działa on bez zarzutu. Co do Timera0 wyczytałem, że trzeba przeprowadzić ręczną konfigurację jego rejestrów, co jest opisane w nocie ATTiny2313. Jednak ze względu na to że dopiero zaczynam naukę programowania nie mogę sobie z tym poradzić. Czy któryś z forumowiczów mógłby wytlumaczyć w jak najprostszy sposób jak się konfiguruje tego Timera?

Oczywiście dodaję napisany przeze mnie program:

Kod: Zaznacz cały

$regfile = "attiny2313.dat"
$crystal = 8000000

'Konfiguracja portów

Config Pinb.4 = Output
Config Pinb.3 = Output
Config Pinb.2 = Output

Config Rc5 = Portd.2

'Konfiguracja PWM

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

'Włączenie przerwań globalnych

Enable Interrupts

'Definiowanie zmiennych

Dim Command As Byte
Dim Adress As Byte
Dim R As Byte
Dim G As Byte
Dim B As Byte

'Pętla główna programu


Do

'Odbiór kodu RC5

   Getrc5(adress , Command)
   Command = Command And &B01111111

'Zapalanie czerwonego

   If Command = 1 And Adress = 0 Then

   R = 255
   G = 0
   B = 0

   End If

   Pwm1b = R
   Pwm1a = G

Loop
End
Dalej oczywiście dopisywał będę kolejne konfiguracje kolorów.

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 gru 2014, 11:47

Może ja czegoś nie wiem ale o ile wiem to w bascomie nie można skonfigurować dwóch timerów dla PWM'a. Do PWM'a uzywa się tylko jednego.
A już na pewno nie w AtTiny2313 bo ten ma tylko jedne wyjścia OC1A i OC1B

bajer71480
-
Posty: 2
Rejestracja: 24 gru 2014, 23:36
Lokalizacja: Polska

Post autor: bajer71480 » 25 gru 2014, 11:54

Czyli mam rozumieć że na tym scalaku trzech kolorów nie wysteruję?

Awatar użytkownika
matrix
Użytkownik
Posty: 1796
Rejestracja: 15 mar 2006, 5:21
Lokalizacja: Sochaczew
Kontakt:

Post autor: matrix » 25 gru 2014, 22:32

A nie możesz skorzystać z programowego PWM'a ? Programowy da Ci tyle wyjść PWM ile masz wolnych pinów w procesorze. Odkąd poznałem programowy PWM tak innego nie chcę stosować.

trol.six
-
Posty: 2
Rejestracja: 21 mar 2015, 15:51
Lokalizacja: kraków
Kontakt:

Post autor: trol.six » 23 mar 2015, 18:32

matrix pisze:Może ja czegoś nie wiem ale o ile wiem to w bascomie nie można skonfigurować dwóch timerów dla PWM'a. Do PWM'a uzywa się tylko jednego.
A już na pewno nie w AtTiny2313 bo ten ma tylko jedne wyjścia OC1A i OC1B
Wygląda na to że ja też czegoś nie wiem.
W nocie są wyjścia. W załączniku. Bo mam wrażenie że fotek bezpośrednio tu sie nie da wkleić.

licznik T0 najlepiej ustawić w trybier Fast PWM. (tryb MODE 3 w nocie)
Które bity w którym rejestrze są opisane w dokumentacji.
Taktowanie zegarem w TCCR0B , wyjścia W TCCR0A
Piny w porcie (DDRD(2) DDRB(5)) zdajesie też trzeba w trybie wyjścia skonfigurować.

Oczywiście programowe PWM też można zrealizować.
Acz nie wiem jakie są możliwości BASCOMA.
Załączniki
tiny2313.png
tiny2313.png (29.51 KiB) Przejrzano 5921 razy

ODPOWIEDZ