Kazalo po Svet elektronike forumu Svet elektronike
Revija za prave elektronike
 
AlbumAlbum   Pomoč pogostih vprašanjPomoč pogostih vprašanj   IščiIšči   Seznam članovSeznam članov   Skupine uporabnikovSkupine uporabnikov   Registriraj seRegistriraj se 
 Tvoj profilTvoj profil   Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil   PrijavaPrijava 

AVR in plavajoča vejica

 
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
mtome
Profesionalec


Pridružen/-a: Pon Jan 2004 14:29
Prispevkov: 168
Kraj: ljubljana

PrispevekObjavljeno: Čet Okt 16, 2008 11:12 am    Naslov sporočila: AVR in plavajoča vejica Odgovori s citatom

Lep pozdrav!
Zanima me, kako bi se dalo z AVR-jem računati z decimalnimi števili, vendar braz uporabe spremenljivke tipa float, saj je tako velika natančnost nepotrebna, rečunske operacije med njimi pa zasedejo zelo veliko FLASH-a.

_________________
l.p. Matjaz
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Čet Okt 16, 2008 1:07 pm    Naslov sporočila: Odgovori s citatom

Racunanje s fiksno decimalno piko gre povsem enako, kot s celimi stevili, tvoja stvar pa je potem kako interpretiars rezultat (to je odvisno tudi od tega kaj bi sploh rad izracunal).

Rutine za racunanje s fiksno decimalno piko in dolocene matematicne operacije so opisane v AppNoets za mnogo MCUjev. Meni se zdi zelo dobra razlaga v Motorolinih (za 68HC908), teorija je tako ali tako povsod ista, izvedba pa na razlicnih 8-bitnikih zelo podobna.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
mtome
Profesionalec


Pridružen/-a: Pon Jan 2004 14:29
Prispevkov: 168
Kraj: ljubljana

PrispevekObjavljeno: Čet Okt 16, 2008 5:20 pm    Naslov sporočila: Odgovori s citatom

To sem tudi jaz pomislil, vendar ne vem katera spremenljivka lahlko drzi vrednost z fiksno vejico. Ce prav razumem, fiksna vejica pomeni, da je to stevilo, ki ima v naprej doloceno stevilo decimalnih mest.
To me zanima, ker bi rad naredil termostat, ki bi prikazoval temperaturo na 0.1 stopinjo natancno.

_________________
l.p. Matjaz
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Čet Okt 16, 2008 6:12 pm    Naslov sporočila: Odgovori s citatom

Prav razumes, a si ob tem nekaj narobe predstavljas: vsaka spremenljivka dolocene dolzine lahko drzi tolikolintoliko informacije. Kaj ta informacija predstavlja, pa je stvar interpretacije.

Kaj recimo predstavlja 00000010 (binarno) ?

Lahko predstavlja vrednost 2 (decimalno; 1*2^1), ce jo tako interpretiras (torej "binarna" pika desno od zadnje nicle).

Lahko recimo predstavlja vrednost 0.125 (decimalno: 1*2^-3), ce jo interpretiras tako (pika tocno na sredini, torej desno od prvih stirih nicel).

Lahko predstavlja se sedem drugih vrednosti, odvisno od pozicije pike.

Vse skupaj je stvar interpretacije vrednosti spremenljivke in za to skrbi tvoja rutina za pretvorbo stevilka v znakovni niz, velikost spremenljivke bos pa izbral glede na zeljeni obseg izpisa podatkov; ce potrebujes desetinke in bos rezultat izracuna pri izpisu odrezal (tako jaz razumem tvoje vprasanje), potem prides skozi s stirimi biti desno od pike, kar je tudi minimalno stevilo bitov, potrebno za drzanje podatka, ki ima lahko 10 razlicnih vrednosti (0 .. 9).

Aja, pa se to: kje bos dobil podatek o temperaturi na 0.1 stopinje natancno ?
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
mtome
Profesionalec


Pridružen/-a: Pon Jan 2004 14:29
Prispevkov: 168
Kraj: ljubljana

PrispevekObjavljeno: Čet Okt 16, 2008 7:00 pm    Naslov sporočila: Odgovori s citatom

Hvala za odgovor. Temperaturo pa bom meril z LM75.
_________________
l.p. Matjaz
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
Gustav
Profesionalec


Pridružen/-a: Pon Jun 2005 17:19
Prispevkov: 768

PrispevekObjavljeno: Čet Okt 16, 2008 9:55 pm    Naslov sporočila: Odgovori s citatom

mtome je napisal/a:
Hvala za odgovor. Temperaturo pa bom meril z LM75.


Aha ... pa to ves, da ta cip sploh nima locljivosti 0.1 stopnije ?

Problema si se lotil na povsem napacen nacin: stran 8 datasheeta od OnSemi opisuje format podatka iz senzorja in zgornji bajt predstavlja normalno predznaceno 8-bitno vrednost (vrednost porines v spremenljivko, pa bo izpis s standardnimi turinami pravilen), zgornji bit LSBja pa predstavlja preostale pol stopnije in izpis tega najboljse uredis s pogojnim stavkom v slogu:

Koda:

if ((0x80 & LSB) == 0)
    printf(".0");
else
    printf"0.5");


To bo zasedlo manj prostora, kot nevemkaksne rutine za preracunavanje, ki morajo vkljucevati cel kup komplicirane matematike, ti imas pa v algoritmu cisto preprosto odlocitev, kjer sta mozni samo dve stanji.
Nazaj na vrh
Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo    Kazalo po Svet elektronike forumu -> Digitalna elektronika Časovni pas GMT + 1 ura, srednjeevropski - zimski č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
You cannot attach files in this forum
You cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group