Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Deljenje dva broja na attiny26

[es] :: Elektronika :: Mikrokontroleri :: Deljenje dva broja na attiny26

[ Pregleda: 2299 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ac1bd4
Stara Pazova

Član broj: 76735
Poruke: 437
*.dynamic.isp.telekom.rs.



+35 Profil

icon Deljenje dva broja na attiny2614.03.2011. u 23:45 - pre 159 meseci
Pišem mali program za attiny26 i koristim AVR GCC i problem mi se javlja kada pokušam da podelim dva broja. Npr. napišem
Code:
int16_t tmp = (ADCL | (ADCH << 8));
int16_t tmp2 = tmp / 10;

tmp se učita iz registara ali tmp2 se ne sračuna ili se ne sračuna kako treba, a i ako se sračuna program počne da skače na prekidne rutine na koje ne bi tebao i brzo se zaustavi iako ne bi trebao nikada da stane jer je u main-u beskonačna for petlja. Da na pomenem da se oba kasnije koriste ali izgleda mi kao da kompajler samo preskoči drugi red jer i prilikom izvršavanja programa po koracima preskače instrukciju. Kako da podelim dva broja? Činilo mi se da bi to trebala da bude najprostija stvar, a ispade najkomplikovanija.
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
178.222.142.*



+10 Profil

icon Re: Deljenje dva broja na attiny2615.03.2011. u 10:52 - pre 159 meseci
Oce to kod AVRGCC, skorije sam imao slican problem gde kompajler nije prevodio for petlju a while proguta. Gledajuci asm listing, umesto for stajala je neka komada koje nije bilo u opisu.

Pogledaj kako su ovde predlozili http://www.jennaron.com.au/avr/adc.html
__*__
*___*
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.31.24.217.adsl2.beograd.com.

Sajt: mysql.rs


+2377 Profil

icon Re: Deljenje dva broja na attiny2615.03.2011. u 16:24 - pre 159 meseci
verovatno nesto nesrecno optimizuje .. stavi da su ti tmp i tmp2 volatile promenjljive i onda nece optimizovati nista sa njima
 
Odgovor na temu

branko_g
Merna tehnika i elektronika

Član broj: 159227
Poruke: 756
*.dynamic.xdsl-line.inode.at.



+9 Profil

icon Re: Deljenje dva broja na attiny2615.03.2011. u 21:23 - pre 159 meseci
Citat:
Pišem mali program za attiny26 i koristim AVR GCC...

Pa postavi citav projekat, zajedno sa Makefile.
Ovako mozemo samo da nagadjamo o cemu se konkretno radi.
 
Odgovor na temu

ac1bd4
Stara Pazova

Član broj: 76735
Poruke: 437
178.222.147.*



+35 Profil

icon Re: Deljenje dva broja na attiny2615.03.2011. u 23:52 - pre 159 meseci
Skontao sam da AVR GCC hoće da pravi probleme nekada. Praznu while petlju obavezno izostavi iz prevođenja iako mi nije potrebno bilo šta da radi. Posle više dana napokon sam rešio ovaj sa deljenjem sasvim slučajno. Zapravo ispade da deljenje nije ni bilo problem nego sam ja dozvoljavao prekide pre nego što se završi prekidna rutina u kojoj se radi to deljenje, a pošto deljenje traje relativno dugo prekidi od tajmera i sl. se javljaju u toku njega i čim ih dozvolim bez završavanja trenutne rutine skače na neku drugu, pa treću i tako dok ne prepuni stek. Naravno kada uklonim deljenje prekidna rutina je dovoljno kratka da u toku nje retko bude drugih prekida pa mi se činilo da je deljenje problem. Ovo mi je prvi program sa AVR GCC-om i zaboravio sam da mora izvršiti reti na kraju svake prekidne rutine i sam vratiti PSW odnosno dozvoliti prekide ako su bili dozvoljeni. U toku izvršavanja red po red i dalje se neki redovi preskaču, valjda zbog optimizacije ali ipak sve radi kako treba. Uzgred i u onom prvom redu sa pomeranjem ADCH registra sam čini mi se pogrešio. To sam zamenio sa
Code:
int16_t tmp = ADC

Hvala na pomoći.
 
Odgovor na temu

branko_g
Merna tehnika i elektronika

Član broj: 159227
Poruke: 756
*.dynamic.xdsl-line.inode.at.



+9 Profil

icon Re: Deljenje dva broja na attiny2617.03.2011. u 21:41 - pre 159 meseci
Citat:
Hvala na pomoći.

Ja bih ti ipak savetovao da postavis ovde tvoj projekat, jer neke stvari koje ti predpostavljas da se desavaju, nemaju veze sa stvarnoscu.
Daj da pogledamo svi o cemu se konkretno radi, time ce efekat ucenja biti i za druge koje interesuje ova tema.

Ovako sve ovo ostaje jedna nezavrsena tema.
 
Odgovor na temu

ac1bd4
Stara Pazova

Član broj: 76735
Poruke: 437
178.222.147.*



+35 Profil

icon Re: Deljenje dva broja na attiny2618.03.2011. u 13:32 - pre 159 meseci
Evo projekta. U pitanju je termoregulator koji treba da meri otpornost senzora i računa temperaturu, a zatim je poredi sa zadatom i reguliše relej. Ima tri cifre, dve ispred zareza i neće imati minus znak jer neće ni raditi ispod nule, mada ću možda to i da promenim. Treba da ima tri tastera, set, + i -. Zamisao je da na početnom displeju prikazuje trenutnu temperaturu, kada se pritisne set prebacuje se na zadatu koja se može menjati na + i -, sledećim pritiskom na set se prebacuje na toleranciju koja se takođe može menjati. Kalibrisanje senzora ću možda da upišem direktno, a možda ću i za to da pišem kod koji bi snimao kalibraciju u EEPROM. Ima dosta komentara pa je nadam se sve razumljivo. Naravno nije još ni blizu kraja, treba dodati prekidne rutine za tastere, promenu zadate temperature, promenu dozvoljenog odstupanja temperature, uraditi debouncing tastera, rutine za kalibrisanje koje će snimati u EEPROM itd. Sve u svemu jedno solidno obuhvatno učenje.
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Deljenje dva broja na attiny26

[ Pregleda: 2299 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.