|
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.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Pet Maj 03, 2013 9:45 am Naslov sporočila: Bascom AVR in generator frekvenCE |
|
|
Torej rabil bi generiranje impulzov za krmiljenje koračnega motorje preko PoStep25.
Trenutno imam narejeno takole :
Koda: |
const Timer1Reload = 11059
config timer1=timer,prescale = 1
load timer1 , Timer1Reload
on ovf1 Timer1_isr
enable timer1
start timer1
enable interrupts
Timer1_ISR:
load timer1, Timer1Reload
portk.0 = not portk.0
return
|
Vendar zadeva ne deluje. Če obesim gor osciloskop dobim "žago". Je še kakšna druga možnost? |
|
Nazaj na vrh |
|
|
mucek Član
Pridružen-a: Tor 01 Avg 2006 10:47 Prispevkov: 5337 Aktiv.: 24.72 Kraj: Domzale
|
Objavljeno: Pet Maj 03, 2013 10:18 am Naslov sporočila: |
|
|
Zakaj ne uporabiš strojnega PWM?
LP, g _________________ ...lahko pa se tudi motim ... |
|
Nazaj na vrh |
|
|
besoft Član
Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Pon Maj 06, 2013 10:07 am Naslov sporočila: |
|
|
Hvala za odgovor.
Z PWM zadeva deluje, vendar kako spreminajti frekvenco? Konfiguracija timerja sicer določi frkvenco z določitvijo bitov in preskalerja.
Želel bi spreminajti frekvenco na izhodu v nekem območju.
konfiguracija timerja:
Koda: |
Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1
|
|
|
Nazaj na vrh |
|
|
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.06 Kraj: KOPER
|
Objavljeno: Pon Maj 06, 2013 2:53 pm Naslov sporočila: |
|
|
Pwm1a = x
vrednost x spreminjaš od 0 do 1023 _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
besoft Član
Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Pon Maj 06, 2013 3:27 pm Naslov sporočila: |
|
|
Lp..to sem uporabil vendar se obrati motorja ne spreminjajo. Gre pa za modul za koračni motor PoStep25.
Če gledam sliko na osciloskopu se spreminajo le trajanje impulza in pa trajane pavze pri spreminjanju vrednosti PwmA ..frekvenca je stalno enaka..je pa impulz lepo pravokoten.
Pri uporabi prekinitve timerja je impulz v spodnjem delu popačen. danes še našel en primer generiranja takta na internetu, vendar ga nisem uspel preizkusiti. |
|
Nazaj na vrh |
|
|
rudiP Član
Pridružen-a: Tor 07 Avg 2007 15:30 Prispevkov: 1234 Aktiv.: 6.06 Kraj: KOPER
|
Objavljeno: Pon Maj 06, 2013 4:55 pm Naslov sporočila: |
|
|
Sem površno prebral in ti dal tudi površen odgovor. V tvojem koščku kode nisi
konfiguriral pin kot izhod. Drugače pa probaj z pulseout. _________________ Lep pozdrav iz Kopra Rudi |
|
Nazaj na vrh |
|
|
besoft Član
Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Maj 09, 2013 11:25 am Naslov sporočila: |
|
|
Še vedno se ukvarjam z generiranjem frekvence. Dosegel sem , da lahko generiram frekvenco nekje do 18 kHZ. Uporabil sem tale primer iz interneta:
Koda: |
$regfile = "2313def.dat"
$crystal = 4000000
Config Pind.6 = Output
Config Pinb.1 = Output
Config Timer1 = Timer , Prescale = 1
Const Timer1pre = 65100
Dim Wtime As Byte
Stop Timer1
Timer1 = Timer1pre
On Timer1 Pulse:
Start Timer1
Wtime = 100
Enable Interrupts
Enable Timer1
Do
Set Portd.6
Waitms Wtime
Reset Portd.6
Waitms Wtime
Loop
Pulse:
Stop Timer1
Timer1 = Timer1pre
Toggle Portb.1
Start Timer1
Return
End
|
Kar me moti je to, da se pri približevanju višjim frekvencam upočasni delovanje ostalega programa...ali se program celo ustavi.
Ker sem so sedaj le malo imel opravka z timerji in njihovimi interupti, me zanima ali ne delujejo interupti neodvisno od delovanja ostalega programa? ali interupt pri visokih frekvencah toliko "zamudi" procesor, da se to pozna na delovanju vsega ostalega.
Razmišljam o uporabi zunenjga čipa za generator takta..ali uporabo motorjev že z vgrajenim kontrolerjem in z serijsko komunikacijo, kot sem jih že uporabljal, vendar so cenovno kar vlik zalogaj. |
|
Nazaj na vrh |
|
|
gumby Član
Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 19.65
|
Objavljeno: Čet Maj 09, 2013 11:46 am Naslov sporočila: |
|
|
Izračunaj, koliko ciklov ti požre ena prekinitev. Nato izračunaj, na koliko ciklov se proži prekinitev. Nato ugasni žarnico, ki se ti bo nad glavo prižgala _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
|
Obelix Član
Pridružen-a: Pon 19 Maj 2008 13:59 Prispevkov: 1862 Aktiv.: 9.60 Kraj: Maribor
|
Objavljeno: Čet Maj 09, 2013 11:50 am Naslov sporočila: |
|
|
besoft je napisal/a: |
...Kar me moti je to, da se pri približevanju višjim frekvencam upočasni delovanje ostalega programa...ali se program celo ustavi... |
Si "vezan" na 4 MHz ? Poskusi z višjo frekvenco. 2313 gre do 20 MHz. |
|
Nazaj na vrh |
|
|
besoft Član
Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Maj 09, 2013 12:06 pm Naslov sporočila: |
|
|
Ne nisem vezan na 4 Mhz...to je le primer iz interneta. Uporabljam ATmega128 in 11.0592 MHz kristal. |
|
Nazaj na vrh |
|
|
besoft Član
Pridružen-a: Ned 01 Apr 2012 10:22 Prispevkov: 585 Aktiv.: 3.98 Kraj: Žižki - Prekmurje
|
Objavljeno: Čet Maj 09, 2013 1:10 pm Naslov sporočila: |
|
|
gumby je napisal/a: |
Izračunaj, koliko ciklov ti požre ena prekinitev. Nato izračunaj, na koliko ciklov se proži prekinitev. Nato ugasni žarnico, ki se ti bo nad glavo prižgala |
Bom megel preštudirati zadeve okoli timerjev in prekinitev. 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: 76 dni
Powered by phpBB © 2001, 2005 phpBB Group
|