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

Pridružen-a: Tor 14 Jun 2005 19:19 Prispevkov: 2 Aktiv.: 0.01
|
Objavljeno: Sre Okt 12, 2005 10:35 pm Naslov sporočila: pic spremenljivka |
|
|
Namreč izdelujem števec frekvence in pri tem sem naletel na težavo. Pri pretvorbi v periodo ali obratno je spremenljivka ( katero sem deklarilar z "unsigned long int")premalo vrednost. Zato moram pri pretvorbi prvo vrednost ki jo števec prešteje delit, kar mi pa pomeni manjšo ločljivost in potem množit. Zanima me kako bi rešil to težavo, če ima kdo kako idejo? Programiram v c jeziku, uporabljam PIC 16f876.
Hvala za vse ideje.  |
|
Nazaj na vrh |
|
 |
stealth.us Član


Pridružen-a: Tor 13 Sep 2005 20:06 Prispevkov: 99 Aktiv.: 0.42
|
Objavljeno: Sre Okt 12, 2005 10:51 pm Naslov sporočila: |
|
|
Si poskusil morda ze long ali double? |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Sre Okt 12, 2005 11:50 pm Naslov sporočila: |
|
|
Če imaš za tale izračun na voljo precej procesorskega časa (nekaj ms), uporabi float ali pa double. |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Čet Okt 13, 2005 9:44 am Naslov sporočila: |
|
|
Citiram: |
NeoTO: "uporabi float" |
Floating Point v principu ničesar ne rešuje, saj se praviloma pakira v 32 bitov in ima kot tak manjšo resolucijo, kot pa 32 bitni integer pri ustreznem skaliranju. Mantisa pri Floating Pointu (n.pr. po standardu IEEE 754) je dolga samo 23 bitov, ostalo pa pripada exponentu in predznaku, torej se resolucija zmanjša kar za 9 bitov, kar pa ni tako malo.
Da ohraniš resolucijo moraš seveda paziti kdaj in kako deliš ter kdaj množiš. Po potrebi kaj tudi skaliraš na nižjo vrednost, če s tem ničesar ali malo izgubiš. Zaradi obdržanja resolucije je to včasih kar tricky zadeva.
Pri 8 bitnih cpu-jih imaš pri C-ju običajno največ unsigned long, ki je 32 bitni vzami ARM, tam imaš unsigned long long, ki je 64 bitni, s tem pa se že da dihat
V principu, če ti 32 bitov ne zadošča, ti še vedno osatne dobra stara "ročna" matematika s prekladanjem številk po registrih. Potem je omejitev samo razpoložljiva memorija. |
|
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: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|