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 

MikroC

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
primozsu
Član
Član



Pridružen-a: Sre 16 Feb 2005 9:11
Prispevkov: 412
Aktiv.: 1.74
Kraj: MB - Šentjur

PrispevekObjavljeno: Pon Apr 16, 2012 11:01 am    Naslov sporočila:  MikroC Odgovori s citatom

Pozdravljeni!

Kako bi naredil v mikroC, da bi pri ADC pretvorbi "ADC_Read()" imel manjšo resolucijo. Da bi namesto 10 bit-ne pretvorbe imel 8 bit-no ali pa še manjšo, ker mi resolucija ni tako pomembna, hitrost pa mi je.

Lp, Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonny
Član
Član



Pridružen-a: Sre 23 Dec 2009 11:57
Prispevkov: 289
Aktiv.: 1.53
Kraj: Vrhnika - MS

PrispevekObjavljeno: Pon Apr 16, 2012 11:21 am    Naslov sporočila:   Odgovori s citatom

Pozdravljen,

Enostavna rešitev je, da v svoji kodi ne uporabljaš ADC_Read, ampak bereš samo iz registra pomembnejših bitov rezultata pretvorbe (ADRESH). Tako boš dobil 8-bitni rezultat. Hitrejše možnosti mislim da ni. Ob tem pazi, da je bit ADFM=0 (rezultat je levo poravnan).
To je tako v splošnem. Je pa možno, da ima kateri od PIC-ev drugačno strukturo ADC registrov.

Lp, Toni
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
primozsu
Član
Član



Pridružen-a: Sre 16 Feb 2005 9:11
Prispevkov: 412
Aktiv.: 1.74
Kraj: MB - Šentjur

PrispevekObjavljeno: Pon Apr 16, 2012 11:37 am    Naslov sporočila:   Odgovori s citatom

Problem je v tem, da sem popolni začetnik in nimam pojma kako bi to naredil.
Bi lahko prosim pripel primer kode kako bi prebral vrednost takšne pretvorbe?

Lp, Primož
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Tonny
Član
Član



Pridružen-a: Sre 23 Dec 2009 11:57
Prispevkov: 289
Aktiv.: 1.53
Kraj: Vrhnika - MS

PrispevekObjavljeno: Pon Apr 16, 2012 12:06 pm    Naslov sporočila:   Odgovori s citatom

Celotna tvoja koda ostane popolnoma enaka, zamenjaš le
Koda:
tvoja_spremenljivka = ADC_Read(x); // x je kanal iz katerega bereš

s to vrstico
Koda:
tvoja_spremenljivka = ADRESH;


Poleg tega je dobro, da optimiziraš še svojo spremenljivko. Namesto unsigned int tvoja_spremenljivka;, kot jo imaš verjetno definirano sedaj, uporabi unsigned short tvoja_spremenljivka;.

Lp, Toni
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
primozsu
Član
Član



Pridružen-a: Sre 16 Feb 2005 9:11
Prispevkov: 412
Aktiv.: 1.74
Kraj: MB - Šentjur

PrispevekObjavljeno: Pon Apr 16, 2012 1:22 pm    Naslov sporočila:   Odgovori s citatom

Hvala.
Bom preizkusil.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MvE
Član
Član



Pridružen-a: Ned 04 Jan 2009 12:24
Prispevkov: 146
Aktiv.: 0.73
Kraj: MB

PrispevekObjavljeno: Pon Apr 16, 2012 3:59 pm    Naslov sporočila:   Odgovori s citatom

Mislim da PIC nima možnosti izbire za 8 ali 10 bitno pretvorbo. V vsakem primeru bo dal 10 bitni rezultat, z ADRESH boš jih pač prebral samo prvih 8. Tako, da če ti čas dopušča raje uporabiš "original" rezultat (da lepše zgleda) Very Happy

Samo s tem:
Koda:
tvoja_spremenljivka = ADRESH;

...boš vedno prebral enako vrednost, pred tem moraš sprožiti pretvorbo in povedati na katerem kanalu se naj izvede.

Ne vem kateri PIC uporabljaš. V prilogi je funkcija napisana za PIC 18F14K50, ADC_Read() za ta model namreč ne deluje.



18f14k50adc.txt
 Opis:
18f14k50adc

Download
 Ime datoteke:  18f14k50adc.txt
 Velikost datoteke:  1.08 KB
 Downloadano:  5 krat

Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.42

PrispevekObjavljeno: Pon Apr 16, 2012 4:41 pm    Naslov sporočila:   Odgovori s citatom

MvE je napisal/a:
Mislim da PIC nima možnosti izbire za 8 ali 10 bitno pretvorbo.

Pretvorba je vedno 10 bit, lahko pa izbereš, kako se bo vrednosti poravnala v dveh registrih. Če rabiš samo 8 bitov izbereš levo poravnavo in enostavno ignoriraš ADRESL register.

_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koroška-Mežica

PrispevekObjavljeno: Pon Apr 16, 2012 5:21 pm    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
MvE je napisal/a:
Mislim da PIC nima možnosti izbire za 8 ali 10 bitno pretvorbo.

Pretvorba je vedno 10 bit

Se ne strinjam. Lahko je tudi 12 ali 16 bitna. Odvisno od mikrokrmilnika.

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
gumby
Član
Član



Pridružen-a: Sob 28 Apr 2007 12:32
Prispevkov: 4066
Aktiv.: 18.42

PrispevekObjavljeno: Pon Apr 16, 2012 5:50 pm    Naslov sporočila:   Odgovori s citatom

Tiste z 10 bitnim A/D sem imel v mislih Rolling Eyes
_________________
Tule nisem več aktiven.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Tonny
Član
Član



Pridružen-a: Sre 23 Dec 2009 11:57
Prispevkov: 289
Aktiv.: 1.53
Kraj: Vrhnika - MS

PrispevekObjavljeno: Pon Apr 16, 2012 6:16 pm    Naslov sporočila:   Odgovori s citatom

MvE je napisal/a:
Mislim da PIC nima možnosti izbire za 8 ali 10 bitno pretvorbo. V vsakem primeru bo dal 10 bitni rezultat, z ADRESH boš jih pač prebral samo prvih 8. Tako, da če ti čas dopušča raje uporabiš "original" rezultat (da lepše zgleda) Very Happy


To je seveda res, ampak če je hitrost kritična (kot je omenil primozsu), potem lahko z le nekoliko manj natančnim branjem rezultata prihraniš na nekaj ciklih, poleg tega pa še na pomnilniku. ADC pretvorbo pa tako ali tako potrebuješ v obeh primerih. Je pa res, da sem v drugem primeru pozabil še na ADCON0=1; za začetek pretvorbe in še while(ADCON0); za čakanje, da se ta bit ponovno postavi na 0 (ponavadi se sicer uporabi prekinitev). Šele nato lahko prebereš rezultat. Kanal (če uporabljaš enega) lahko nastaviš že v inicializaciji.
Vsekakor pa toplo priporočam branje datasheet-ov. Tam piše vse.

Me pa čisto iz firbca zanima, katera aplikacija potrebuje tako optimizacijo, glede na to, da se ima avtor za popolnega začetnika Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
ljudsko
Član
Član



Pridružen-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koroška-Mežica

PrispevekObjavljeno: Tor Apr 17, 2012 12:28 am    Naslov sporočila:   Odgovori s citatom

gumby je napisal/a:
Tiste z 10 bitnim A/D sem imel v mislih Rolling Eyes

apology accepted Razz

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Microchip PIC Č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: 492 dni


Powered by phpBB © 2001, 2005 phpBB Group