www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

AtMega 32 ADC in Timer1

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 132
Aktiv.: 0.59
Kraj: Bled

PrispevekObjavljeno: Sre Mar 18, 2015 10:57 pm    Naslov sporočila:  AtMega 32 ADC in Timer1 Odgovori s citatom

Pozdravljeni!

S pomočjo Timer1 funkcije sem naredil PWM. Tol pa zato, da sem lahko dosegel točno specifično željeno frekvenco, ki jo z PWM funkcijo, ki je vprogramirana v Bascom-u ne morem doseči.

Ko se mi zgodi interrupt želim tudi prebrati analogno vrednost s pomočjo funkcije GETADC(1).

Tukaj pa se mi pojavi težava:
- po simulatorju vidim, da funkcija GETADC(1) vzame 30 ciklov. Nastavljen takt je 8 MHz.
Če imam PWM duty premajhen ali prevelik se frekevenca PWM zmanjša.
imam občutek, kakor da izvrševanje ADC funkcije timer1 prišteje svoje cikle.
Ampak po primerjavi simulatorja in dejanskih vrednosti se izkaže, da ADC ne porabi samo 30 ciklov ampak neprimerno več.

Primer: širina PWM=7000 ciklov.
Duty ON=700 ciklov... tukaj se frekvenca že podre.
Če imam Duty ON= 2000 ciklov frekevenca ostane takšna kot jo želim imeti.

Upam da sem razumljivo napisal težavo in da mi kdo lahko pomaga pri tem.

Hvala
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
int47
Član
Član



Pridružen-a: Pon 15 Dec 2003 0:10
Prispevkov: 2066
Aktiv.: 9.30
Kraj: Ljubljana

PrispevekObjavljeno: Čet Mar 19, 2015 7:47 pm    Naslov sporočila:   Odgovori s citatom

Ne vem, kako imaš nastavljen preskaler.

getadc sproži A/D pretvorbo in počaka na rezultat.

Če si se držal tega dokumenta, je za 10bit rezultat max frekvenca A/D ure 200kHz. A/D pretvorba rabi 13 ciklov ADC ure.
Če uC deluje z 8MHz, za A/D pretvorbo porabiš 13 *8MHz/200kHz = 520 ciklov.

Če PWM ni hitrejši od ADC, naj PWM samo sproži A/D pretvorbo.
Za branje rezultata imaš na voljo dve možnosti.
-Uporabiš prekinitev A/D pretvornika.
-V PWM rutini najprej prebereš rezultat A/D pretvorbe iz prejšnega cikla in sprožiš novo pretvorbo.

_________________
Kdor ni skregan, ni Slovenc !
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
veter
Član
Član



Pridružen-a: Tor 06 Jan 2004 9:25
Prispevkov: 132
Aktiv.: 0.59
Kraj: Bled

PrispevekObjavljeno: Čet Mar 19, 2015 7:51 pm    Naslov sporočila:   Odgovori s citatom

Hvala.
Ravno v tej smeri sedaj berem stvari na internetu.
Hvala za potrditev da sem na pravi poti.

Lep dan.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Osnove programiranja AVR-jev Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 49 dni


Powered by phpBB © 2001, 2005 phpBB Group