Dva PWM u ATTINY13 současně ?

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
elnovy
Příspěvky: 769
Registrován: 04 črc 2010, 02:00
Bydliště: ČR - JČ
Kontaktovat uživatele:

Dva PWM u ATTINY13 současně ?

#1 Příspěvek od elnovy »

Zdravím inicializoval jsem jeden vystup PB0 = OC0A to mi funguje:
ldi R16,0b10000011
out TCCR0A,R16 ; Fast PWM Mode, Clear on OC0A
;------------------------------------------VOLBA FRAKVENCE---------------------------------
ldi R16,0b00000010 ;TCCR0B = FOC0A ,FOC0B, –, –, WGM02 ,CS02 ,CS01, CS00

;CS02 CS01 CS00 Description
;0 0 0 No clock source (Timer/Counter stopped)
;0 0 1 clkI/O/(No prescaling)........T=200mikrosec
;0 1 0 clkI/O/8 (From prescaler).............T=2ms
;0 1 1 clkI/O/64 (From prescaler).............T=14ms
;1 0 0 clkI/O/256 (From prescaler).............T=60ms
out TCCR0B,R16 ; Used fclk/256 prescale
;------------------------------------------VOLBA STRIDY--------------------------------

LDI R16,0b10000000 ; ROZSAH HODNOT 0B11111110 = MAX ....0B00000001 = MIN
out OCR0B,R16 ; OCR0A = R16
;------------UKONCENI VOLBY PWM-------------------------------------------------------
Dle pdf MÁ PROCESOR DVA VÝSTUPY pwm ALE NENI MI JASNÉ JAK ZPROVOZNIT DRUHEJ KANÁL pwm TAK ABY BĚŽELY OBA DVA NARÁZ NEZÁVISLE ...DRUHEJ KANÁL PWM = PB1=OC0B
----
PODLE MÉHO TO NEJDE ABY BĚŽELY OBA DVA KANÁL PWM SOUČASNĚ
NEBO SE MÍLÍM ???
Děkuju za odpověď .
el.návrhář HW a SW a DPS

Uživatelský avatar
Ondra2
Příspěvky: 530
Registrován: 19 bře 2014, 01:00

#2 Příspěvek od Ondra2 »

Hned první řádek, přepiš hodnotu do R16 na 0b10100011. pak se připojí i ten druhý compare match blok na výstupní pin. BTW nikde nevidím nastavení DDRx.

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#3 Příspěvek od Bernard »

"NEBO SE MÍLÍM ??? "
Mýlit se je lidské.
http://www.atmel.com/Images/doc8020.pdf

Uživatelský avatar
elnovy
Příspěvky: 769
Registrován: 04 črc 2010, 02:00
Bydliště: ČR - JČ
Kontaktovat uživatele:

#4 Příspěvek od elnovy »

PWM dva kanaly soucasně pro ATTINY 13
funguje to dik pro pana Ondra2

; Initial I/O
ldi R16,0b00010011 ; Set PB0=Output,PB1=Output, PB2=Input, PB3=Input,PB4=Output
out DDRB,R16 ; DDRB=0x13

; Initial PWM KANALů OC0A a OC0B = dvou kanalů


ldi R16,0b10100011 ;VSECHNY KANALY ZAPNUTY
out TCCR0A,R16 ; Fast PWM Mode, VSECHNY KANALY ZAPNUTY
;---------------------------VOLBA FRAKVENCE---------------------------------
ldi R16,0b00000010 ;TCCR0B = FOC0A ,FOC0B, –, –, WGM02 ,CS02 ,CS01, CS00
out TCCR0B,R16 ; Used fclk/256 prescale


;----------------------VOLBA STRIDY kanalu A--------------------------------

LDI R16,0b10000000 ; ROZSAH HODNOT 0B11111110 = MAX ....0B00000001 = MIN
out OCR0A,R16 ; OCR0A = R16

;----------------------VOLBA STRIDY kanalu B--------------------------------

LDI R16,0b11110000 ; ROZSAH HODNOT 0B11111110 = MAX ....0B00000001 = MIN
out OCR0B,R16 ; OCR0A = R16

N100: RJMP N100



Pro ATMEGA 328 kterej ma 6 kanálů PWM nezavislejch
bude tedy pokud budu chtiti mit všech šest PWM v provozu

ldi R16,0b10100011 ;VSECHNY KANALY ZAPNUTY
out TCCR0A,R16 ; Fast PWM Mode, VSECHNY KANALY ZAPNUTY

Snad je to tak dobře ???
Ondro ještě jednou děkuji .
el.návrhář HW a SW a DPS

Uživatelský avatar
Ondra2
Příspěvky: 530
Registrován: 19 bře 2014, 01:00

#5 Příspěvek od Ondra2 »

elnovy píše: Pro ATMEGA 328 kterej ma 6 kanálů PWM nezavislejch
bude tedy pokud budu chtiti mit všech šest PWM v provozu
Nerozumím řeč tvá kmen :D

Nícméně to že ta 328 má 6 PWM kanálů neznamená že se všechny zapnou tím samým registrem. U 328 bude ten rozdíl, že těch 6 PWMek bude na 3 timerech (pokud vím má 2x8bit a jeden 16bit timer), takže mód, předděličku atd. je potřeba nastavit pro všechny timery a compare match bloky. Chce to nastudovat datasheet, tam je to pěkně i s blokovýma schématama timerů.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“