|
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
ElGrigon Član
Pridružen-a: Pon 24 Jul 2006 22:38 Prispevkov: 3880 Aktiv.: 18.03 Kraj: okolica Lenarta
|
Objavljeno: Čet Jul 11, 2013 10:29 pm Naslov sporočila: A/D in ADRESH/ADRESL |
|
|
Pozdravljeni,
ADC nam zapiše 10-biten rezultat v omenjena registra. Kako se prebere oziroma uporabi vseh 10-bitov oziroma ali sploh?
Pri zapisu se izbere opcija Left/Right justified, glede na to vemo kam je kaj zapisal. Pri Left justified beremo iz ADRESH 8-bitov. Kaj je z ostalima 7-6 iz registra ADRESL?
Gledam različne kode in vidim, da se bere samo iz tistega v katerega je naslovljeno. Zakaj potem ostala dva bita v drugem registru? _________________ lp, ElGrigon |
|
Nazaj na vrh |
|
|
Highlag Član
Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 18.17 Kraj: Črnuče
|
Objavljeno: Čet Jul 11, 2013 10:46 pm Naslov sporočila: |
|
|
Ja če so registri 8 bitni, resolucija AD pretvornika pa 10 bitov ti nekje 2 bita višek hodita se ti ne zdi?
Da pobereš vso resolucijo pač rabiš 2 registra. 6 bitov, ki ti hodi viška so pač ničle.
Če ne rabiš 10 bitov resolucije, poravnaš podatke v levo in ADRESL enostavno pozabiš.
Drugače pa moraš preračunavanje tako spisati, da upoštevaš oba registra.
Kako pa poglej kakšen Application note, ki jih Microchip ponuja. _________________ If at first you don't succeed, destroy all evidence that you tried. |
|
Nazaj na vrh |
|
|
ElGrigon Član
Pridružen-a: Pon 24 Jul 2006 22:38 Prispevkov: 3880 Aktiv.: 18.03 Kraj: okolica Lenarta
|
Objavljeno: Čet Jul 11, 2013 11:05 pm Naslov sporočila: |
|
|
Ja, imaš 8-bitno resolucijo. Kaj pa je dejanski rezultat teh 8-bitov?
Recimo, da AD vrne 10-bitno 0110100101, pomakneš to v levo in dobiš? 01101001, 01 pa ostane v desnem?
Se pravi rezultat AD-ja je 421 (10-bitno), ker pa bereš samo ADRESH dobiš za nadaljno uporabo 105 (8-bitno)? _________________ lp, ElGrigon |
|
Nazaj na vrh |
|
|
igo Član
Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3638 Aktiv.: 17.11
|
Objavljeno: Pet Jul 12, 2013 11:09 am Naslov sporočila: |
|
|
ElGrigon je napisal/a: |
Recimo, da AD vrne 10-bitno 0110100101, pomakneš to v levo in dobiš? 01101001, 01 pa ostane v desnem? |
10-bitni AD vrne 16-bitno vrednost 00000001 10100101. Zgornjih 6 bitov je pač vedno 0.
Priporočam, da vse nadaljne izračune delaš v 16-bitnem načinu. Če je le možno, naj bodo najprej množenja in seštevanja, z deljenji in odštevanji pa odlašaj. Po potrebi za funkcijo (npr. odziv termostata) uporabi ločen izračun od tistega za prikaz (manj pomembno).
Šele čisto na koncu po potrebi zaokroži rezultat na 8 bitov (če je npr. maksimalen možen rezultat 16-bitnega izračuna 14-biten, zanemariš zgornja 2 bita in spodnjih 6, da dobiš vmesnih 8). Če boš že na začetku oklestil 2 bita, nato pa še malo delil, boš hitro dobil le še 5 ali 6 uporabnih bitov.
Dodano:
Izogibaj se tudi akrobacijam v stilu ADC*5000/200 , uporabi raje ADC*25.
Včasih se kakšen izračun bistveno poenostavi, če izmerjen rezultat ne more biti večji od 1000. Za tista 2% na skrajnem robu merilnega dosega, ko je merjena vrednost itak nevarno blizu resnim težavam pri delovanju sistema, pa si lahko privoščiš ločen okleščen izračun za odziv v sili.
Še več. Če naprimer veš, da bo ADC rezultat pri normalnem delovanju vedno znotraj nekega območja, imaš lahko ločene izračun/odziv za vrednosti izven meja. S tem lahko povečaš natančnost izračuna v delovnem območju.
Najprej moraš poznati enačbo (ne)linearne funkcije (npr. ADC v odvisnosti od temperature), nato pa jo razteguješ in premikaš po x-y oseh, da jo spraviš v obliko, ki omogoča najnatančnejši izračun. Važno je, da bo odziv na meritev pravilen. Prikaz je običajno drugotnega pomena.
In še ... po toliko kompliciranja ... Izračun porabi konstantno število ciklov, zato ga lahko uporabljaš namesto pavze. Samo ne pozabi prave pavze zmanjšati za kakšno milisekundo ali dve . _________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
|
ElGrigon Član
Pridružen-a: Pon 24 Jul 2006 22:38 Prispevkov: 3880 Aktiv.: 18.03 Kraj: okolica Lenarta
|
Objavljeno: Pet Jul 12, 2013 1:08 pm Naslov sporočila: |
|
|
Saj, če seštejem registra je rezultat 8-biten. _________________ lp, ElGrigon |
|
Nazaj na vrh |
|
|
mujo Član
Pridružen-a: Ned 02 Jan 2005 19:24 Prispevkov: 722 Aktiv.: 3.25 Kraj: MB
|
Objavljeno: Pet Jul 12, 2013 1:47 pm Naslov sporočila: |
|
|
ElGrigon je napisal/a: |
Saj, če seštejem registra je rezultat 8-biten. |
Če sešteješ registra dobiš... nič kaj uporaben podatek.
registra moraš združiti v eno 16 bitno spremenljivko. Ali pa vzeti samo 8 najbolj uteženih bitov.
Tukaj je zdaj vse na tebi.
ElGrigon je napisal/a: |
Se pravi rezultat AD-ja je 421 (10-bitno), ker pa bereš samo ADRESH dobiš za nadaljno uporabo 105 (8-bitno)? |
Da. In s tem izgubiš 2 bita resolucije.
Primer: Če imaš "merilno območje" (razlika med REF- in REF+, pustimo zdaj kako ima čip nastavljeno) 3.3V potem pri 10 bitnem imaš 1024 različnih možnosti vrednosti.
Torej tvoja ločjivost je 3.2 mV. Rezultat AD-ja bi potem bil 421*3.3/1024 = 1,357 V.
Če uporabiš samo zgornjih 8 bitov imaš 256 različih vrednosti. Ločljivost je: 12,89 mV. Isti izračun kot zgoraj: 105*3.3/256 = 1,354 V.
Številka je na prvi pogled ista. Ampak če izračunaš na več decimalk boš videl razliko.
Vse je zdaj odvisno od tega kaj bo s tem delal. |
|
Nazaj na vrh |
|
|
ElGrigon Član
Pridružen-a: Pon 24 Jul 2006 22:38 Prispevkov: 3880 Aktiv.: 18.03 Kraj: okolica Lenarta
|
Objavljeno: Pet Jul 12, 2013 2:51 pm Naslov sporočila: |
|
|
Ja, ni velike razlike.
Namen imam narediti polnilec za LiPoFe in meriti moram napetost ter po možnosti še tok.
Bom videl ali gre 8-bitov skozi. Druga decimalka napetosti pri teh baterijah še ni tako delikatno. _________________ lp, ElGrigon |
|
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: 48 dni
Powered by phpBB © 2001, 2005 phpBB Group
|