 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Čet Avg 06, 2009 9:54 pm Naslov sporočila: ATmega8 tretji PWM kanal |
|
|
Pozdravljeni!
Imam eno težavo. Ponavadi sem rabil 1-2 PWM kanala, zdaj pa rabim 3. ATmega8 (ki je poleg mege32 redno na breadboardu) ima 3 PWM kanale, le da tretjega ne znam uporabljati
Programiram v Bascom-AVR.
ATmega8 ima tri PWM kanale, dva na 10-bitnemu Timer1 in enega na 8-bitnemu Timer2. Prva dva sta na pinih OC1A in OC1B, tretji je na pinu OC2.
Tak košček kode z dvema PWM kanaloma lepo dela:
'Omogočim Timer1 in ga definiram kot 8-bitni 43kHz PWM
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Enable Timer1
Potem v programu vrednost PWMja pišem z ukazoma:
Pwm1a = 0-255
Pwm1b = 0-255
To dela brez problema, problem pa nastane, ko hočem uporabljati še tretji kanal:
'Omogočim Timer1 in ga definiram kot 8-bitni 43kHz PWM
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Enable Timer1
'Omogočim 8-bitni Timer2 in ga definiram kot 8-bitni 43kHz PWM
Config Timer2 = Pwm , Compare Pwm = Clear Down , Prescale = 1
Enable Timer2
To še dela, problem je v naslavljanju/pisanju vrednost PWMja:
Pwm1a = 0-255 'Prvi kanal
Pwm1b = 0-255 'Drugi kanal
'Kaj pa tretji?
Poiskusil sem že ukaze:
Pwm1c =
Pwm2a =
Pwm2b =
Pwm2 =
Ampak pri vseh javi napako. Zato prosim za pomoč, če se je že kdo ukvarjal s tem oziroma ve Bascom-AVR ukaz za tretji PWM kanal.
Hvala. _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
strobos Član

Pridružen-a: Sre 24 Sep 2003 12:19 Prispevkov: 726 Aktiv.: 3.06 Kraj: Brežice
|
Objavljeno: Čet Avg 06, 2009 11:16 pm Naslov sporočila: |
|
|
Probaj z OCR2 = 0-255
Verjetno pa piše v helpu za Bascom ukaz.
Lp |
|
Nazaj na vrh |
|
 |
joze Član


Pridružen-a: Pet 26 Jan 2007 10:27 Prispevkov: 204 Aktiv.: 0.91
|
Objavljeno: Pet Avg 07, 2009 6:59 am Naslov sporočila: |
|
|
LP!
Mogoče kaj pomaga.
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1
Config Timer2 = Pwm , Pwm = On , Prescale = 1 , Compare Pwm = Clear Down
Dim Rdeca As Byte , Zelena As Byte , Modra As Byte
Dim Rdeca1 As Byte , Zelena1 As Byte , Modra1 As Byte , Pwmvrednst As Byte , Pwmvrednst1 As Byte , Pwmvrednst2 As Byte
Config Portb.1 = Output
Config Portb.2 = Output
Config Portb.3 = Output
Portb.1 = 0
Portb.2 = 0
Portb.3 = 0
Do
Rdeca = Rnd(255)
If Rdeca1 < Rdeca Then
For Pwmvrednst = Rdeca1 To Rdeca
Pwm1a = Pwmvrednst
Waitms 20
Next Pwmvrednst
Else
For Pwmvrednst = Rdeca1 To Rdeca Step -1
Pwm1a = Pwmvrednst
Waitms 20
Next Pwmvrednst
End If
Rdeca1 = Rdeca
Zelena = Rnd(255)
If Zelena1 < Zelena Then
For Pwmvrednst1 = Zelena1 To Zelena
Pwm1b = Pwmvrednst1
Waitms 20
Next Pwmvrednst
Else
For Pwmvrednst1 = Zelena1 To Zelena Step -1
Pwm1b = Pwmvrednst1
Waitms 20
Next Pwmvrednst1
End If
Zelena1 = Zelena
Modra = Rnd(255)
If Modra1 < Modra Then
For Pwmvrednst2 = Modra1 To Modra
Compare2 = Pwmvrednst2
Waitms 20
Next Pwmvrednst2
Else
For Pwmvrednst2 = Modra1 To Modra Step -1
Compare2 = Pwmvrednst2
Waitms 20
Next Pwmvrednst2
End If
Modra1 = Modra
Loop |
|
Nazaj na vrh |
|
 |
program_er Član


Pridružen-a: Sob 08 Mar 2008 13:47 Prispevkov: 2173 Aktiv.: 10.33 Kraj: Maribor (Pohorje)
|
Objavljeno: Pet Avg 07, 2009 11:20 am Naslov sporočila: |
|
|
Hvala obema, OCR2 = 0-255 dela, prav tako Compare2 = 0-255!
Je pa zanimivo pri LED diodah, da se pozna samo nekaj procentov PWM signala. Naprimer od PWM vrednosti 0-100 sveti enako močno (full), potem pa se počasi zmanjšuje svetlinost do 0 (255).
Hvala za pomoč. _________________ Upanje ni del naše projektne strategije.
Member of Trisat - 1. Slovenian satellite running new fault tolerant aerospace processor.
|
|
Nazaj na vrh |
|
 |
pirpy Član


Pridružen-a: Ned 30 Maj 2004 21:57 Prispevkov: 774 Aktiv.: 3.27 Kraj: Topolšica
|
Objavljeno: Pet Dec 04, 2009 8:31 pm Naslov sporočila: |
|
|
Pozdrav
v datasheetu za avr piše da je lahko pwm izhod tudi generator pravokotnega signala do 32 mhz če nastaviš rezolucijo pwm izhoda na 1 vendar mi v bascomu nikakor ne uspe zmanjšati rezolucije .
uporabljam timer2 ki je 8 biten.
Hvala
b |
|
Nazaj na vrh |
|
 |
pirpy Član


Pridružen-a: Ned 30 Maj 2004 21:57 Prispevkov: 774 Aktiv.: 3.27 Kraj: Topolšica
|
Objavljeno: Sob Dec 05, 2009 2:37 am Naslov sporočila: |
|
|
je slo po parih urah raziskovanja in preizkusov
izgleda pa takole
Config Timer2 = Timer , Compare = Toggle , Clear Timer = 1 , Prescale = 1
Enable Timer2
Ocr2 = 0
in na izhodnem pinu se pojavi pravokoten signal 10008192 pri 20 mega kristalu |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|