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



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Jul 05, 2012 8:28 pm Naslov sporočila: ATmega in PWM |
|
|
Pozdravljeni
zanimam me kako preusmeriti PWM signal na določen pin, namreč želel bi jih imeti skupaj.
Hvala |
|
Nazaj na vrh |
|
 |
David2204 Član


Pridružen-a: Pon 03 Nov 2008 0:01 Prispevkov: 997 Aktiv.: 4.92 Kraj: Ljubljana - Nova Gorica
|
Objavljeno: Čet Jul 05, 2012 8:39 pm Naslov sporočila: |
|
|
Ne gre. Tiskanino boš moral prilagoditi. _________________ My favorite programming language is ... solder. -Bob Pease |
|
Nazaj na vrh |
|
 |
Saran Član


Pridružen-a: Pet 13 Feb 2009 16:26 Prispevkov: 729 Aktiv.: 3.66 Kraj: Zasavje
|
Objavljeno: Čet Jul 05, 2012 8:40 pm Naslov sporočila: |
|
|
Hardwareski PWM ne bo šlo, lahko pa implementiraš zadevo v sofrware-u in uporabiš bilokateri I/O pin. _________________ Moja mama je strela, moj fotr je grom. Če hočeš bit moja, prključ se na štrom. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14675 Aktiv.: 61.86 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Čet Jul 05, 2012 8:43 pm Naslov sporočila: |
|
|
David2204 je napisal/a: |
Ne gre. Tiskanino boš moral prilagoditi. |
A res?
Hardverski res ne gre na vsak pin sofwerskega pa lahko narediš na vsak pin, ki ga lahko določiš kot izhod. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
David2204 Član


Pridružen-a: Pon 03 Nov 2008 0:01 Prispevkov: 997 Aktiv.: 4.92 Kraj: Ljubljana - Nova Gorica
|
Objavljeno: Čet Jul 05, 2012 8:58 pm Naslov sporočila: |
|
|
Ko je bilo govora o preusmerjanju, sem mislil, da govori o hardverskem PWMju. _________________ My favorite programming language is ... solder. -Bob Pease |
|
Nazaj na vrh |
|
 |
besoft Član



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Jul 05, 2012 9:08 pm Naslov sporočila: |
|
|
Torej, PWM signal bi radd imel na recimo portu B na pinih 1,2,3,4
PWM pa je generiran z timerji 1 in 4, lahko pa kateri koli drugi timer, ta dva sem vzel za primer.
Torej je to hardwerski PWM in ga ni možno preusmeriti, če prav razumem.
hvala |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1715 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Čet Jul 05, 2012 9:34 pm Naslov sporočila: |
|
|
Torej: Hardverski pwm dobiš ven na pinih OC1A, OC1B ter OC2 (za večino AVRjev). Druge izbire nimaš. Kaj pa je narobe, če so malce "razsuti"?
LP G _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
besoft Član



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Jul 05, 2012 9:53 pm Naslov sporočila: |
|
|
Načeloma nič narobe..edino je uporabljen TIV, ki za to ni bil namenjen..in bo zdaj podobno novoletni jelki, povezave vsepovsod. Vsi porti so speljani na rob TIV na berg 10 pinske konektorje, mislim, da si že zdaj predstavljate kaj to pomeni.
Koliko je zanesljiv programski PWM, ima kdo kakšen primer?
Hvala |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1715 Aktiv.: 7.23 Kraj: Ig
|
Objavljeno: Čet Jul 05, 2012 10:55 pm Naslov sporočila: |
|
|
Programski PWM je zanesljiv tolikor, kolikor ga zanesljivega narediš. Sprašuješ se najbrž kako bi ga naredil. Načinov je več, jaz pabi napravil takole. Vzameš en timer, ki ga definiraš kot timer, ob overflowu se sproži prekinitev. S tem timerjem nastavljaš frekvenco tvojega PWM. Potem pa vzameš še 1 timer, ki ga prožiš s prej omenjenim interruptom. S tem timerjem nastavljaš duty cycle. Se pravi, ko se sproži interrupt, timer 2 štarta, po pretečenem času togglaš izhod. Za 3 PWM izhode boš potreboval 4 timerje, vsekakor bo pa to delovalo avtomatsko. Še ena varianta bi bila za avtomatsko delovanje. Nek zunanji clock pripelješ na zunanji interrupt pin, (to ti določa frekvenco PWM), za nastavljanje duty cycla je stvar ista kot prej. Če pa ima še kdo kako idejo, bo pa tudi meni prišla prav
LP G _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
David2204 Član


Pridružen-a: Pon 03 Nov 2008 0:01 Prispevkov: 997 Aktiv.: 4.92 Kraj: Ljubljana - Nova Gorica
|
Objavljeno: Pet Jul 06, 2012 12:43 am Naslov sporočila: |
|
|
Ena opcija je, da uporabiš en timer, ki ti daje interrupte. Ob vsakem interruptu prišteješ 1 neki spremenljivki in potem to primerjaš z drugo spremenljivko, ki določa duty cycle. Ob overflowu prve spremenljivke postaviš pin na logično 1, ko je prištevana spremenljivka enaka tisti od duty cycla, pin postaviš na 0.
Na praktično enak princip deluje hardverski PWM, s tem da se tam ne uporablja procesor za primerjanje in togglanje izhodov, ampak je vse izvedeno z logičnimi vrati. _________________ My favorite programming language is ... solder. -Bob Pease |
|
Nazaj na vrh |
|
 |
besoft Član



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Pet Jul 06, 2012 6:27 am Naslov sporočila: |
|
|
Bom zaenkrat ostal pri hardverskih PWM-jih. Ko bo čas, pa se bom malo poigral z softverskimi ali pa zunanji čip.
Hvala za odgovore. |
|
Nazaj na vrh |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.73 Kraj: Mengeš
|
Objavljeno: Pet Jul 06, 2012 8:14 am Naslov sporočila: |
|
|
Jaz imam softverski PWM narejen s 16 kanali in deluje brezhibno, res pa je da je frekvenca pri uporabi 16 MHz kristala tam okoli 60-70 Hz, nič več. Sicer je dovolj, razen če na hitro pogledaš vidiš da utripa, a ni moteče. Je pa varianta z enim timerjem, tako kot pravi David. |
|
Nazaj na vrh |
|
 |
besoft Član



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Pet Jul 06, 2012 8:25 am Naslov sporočila: |
|
|
Hitrost me ne moti. lahko malo izdaš, kako imaš narejeno ?
hvala |
|
Nazaj na vrh |
|
 |
protoncek Član

Pridružen-a: Sre 31 Jan 2007 9:41 Prispevkov: 9573 Aktiv.: 42.73 Kraj: Mengeš
|
Objavljeno: Pet Jul 06, 2012 9:53 am Naslov sporočila: |
|
|
npr. takole:
s spremenljivko I določiš število korakov od min. PWM do max. PWM, z A pa določiš širino pulza. PWM je v spodnjem primeru na portu A.0
Če gor priklopiš LEDico, se bo ta prižigala in ugašala od min. do max.
Koda: |
main:
For A = 0 To 100
Waitms 50
Next
For A = 100 To 0 Step -1
Waitms 50
Next
goto main
'_______________________________________________________________________________
'PODPROGRAMI
Timer0_isr:
Load Timer0 , Timer0reload
Incr I
If I >= 100 Then I = 0
If I >= A Then
Set Porta.0
Else
Reset Porta.0
End If
Return |
|
|
Nazaj na vrh |
|
 |
besoft Član



Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.63 Kraj: Žižki - Prekmurje
|
Objavljeno: Pet Jul 06, 2012 10:04 am Naslov sporočila: |
|
|
Protonček hvala  |
|
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: 503 dni
Powered by phpBB © 2001, 2005 phpBB Group
|