Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 10 odgovora
  • 2.842 pregleda

Najnovija ↓

MplabX i XC8 moja greska ili bug 11.06.2014. u 21:23 · pre 150 meseci #1
Imam problem sa mplab-om, vec dva dana se mucim.

Pravim generator funkcija sa ad9850.
I sve sam lepo ja napisao softver, sa displejem i biranjem frekvencije.
I modul izbacuje lepo sinus na svim frekvencijama osim, na opsegu izmedju 30kHz i 100kHz.

E sad ja sam mislio da je do mog koda, menjao sam sve zivo, ali na kraju nista.
Kada upisem u svoju funkciju za slanje frekvencije 50000 sve lepo radi.
Ali kad napisem 5 * 10000, ili 50 * 1000, ili neku drugu vrednost u problematicnom opsegu, kompajler skroz pobrljavi i izbacuje nesto bezveze.

Otkrio sam da nije do mog programa tako sto sam napisao jednostavan program:

unsigned long proba = 5 * 10000;

u debaggeru mi izbacuje 4294951760.

unsigned long - moram da koristim zbog duzine broja koji saljem, Ali primetio sam da kad posaljem, isto ovo u unsigned int dobijem dobar rezultat, ali je problem sto int nije dugacak dovoljno

Isto to od gore sam probao i u mikroc-u, i sa njim funkcionise.

Nemam pojma sta se desava. Mozda ja nisam nesto dobro podesio posto tek od pre neki dan koristim xc8.
Ako moze neko da proba ovo isto pa da vidi da li mu se javlja ovaj problem.

Imao sam verziju kompajlera 1.30, malopre sam updateovo na 1.32 i opet isto

P.S. Kada izbacujem vrednost 150kHz, 250khz, 1,050MHz sve funkcionise normalno

Moram da posaljem ovako sliku zbog rezolucije

[img]http://postimg.org/image/za5y1dv5r/[/img]
http://postimg.org/image/za5y1dv5r/

Edit: zaboravio sam " = 0 " na ovoj slici ali ne menja nista...
Re: MplabX i XC8 moja greska ili bug 11.06.2014. u 23:53 · pre 150 meseci #2
Probaj ovako:

Code:
unsigned long proba = 5 * (unsigned long)10000;
Potpis
gorankg
Sviđa mi se1
Re: MplabX i XC8 moja greska ili bug 12.06.2014. u 00:05 · pre 150 meseci #4
Hvala na pomoci.

Bas je to bio problem. Pomogao mi je mikikg malo pre pa mi je pomogao da resim to.

unsigned long proba = 5 * 10000L;
On mi je dao ovo resenje, ali ista je stvar.

Samo ne znam da li je o bug kod njihovog compilera ili tako treba.
Posto mi je u mikroc-u normalno radilo. Probacu i u Keilu ali verujem da ce isto da radi.
Re: MplabX i XC8 moja greska ili bug 12.06.2014. u 01:18 · pre 150 meseci
izmenjeno 1 put, poslednji put bogdan.kecman 12.06.2014. u 01:41
  1. bogdan.kecman12.06.2014. u 01:41zapis iz teksta poruke
#5
i long i long long su u xc8 32bita
10000 i 10000L ne prave razliku, to je obicna int velicina
vec za ove vece tipa 100k ili milion mora L

da li ovo tuces kroz simulator ili kroz pravi pic? koji pic? simulator je dosta bagovit tako da ako koristis simulator verovatno je tu greska


btw retardiran je XC8 .. stavi

proba = 5L * 10000L;
ili
proba = (unsigned long) 5 * (unsigned long) 10000;

dakle da bi radilo mora oba da budu unsigned long (retardirano ?!?!)

Code:

unsigned long b;
unsigned long a;
b = 5;
a = b * 10000L;


ovako isto radi i ovako
Code:

unsigned long b;
unsigned long c;
unsigned long a;
b = 5;
c = 10000;
a = b * c;


zasto 5*10000 ne radi je retardirano, ja bi rekao bug u xc8
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: MplabX i XC8 moja greska ili bug 12.06.2014. u 10:52 · pre 150 meseci #7
Sva sreca pa je simulator "dobro" radio.
Pa isto sto se desavalo na pic-u (16f884) desavalo se i u simulatoru.
Posle sam shvatio da je pocinjalo da se gubi za frekvencije oko 32 000 (duzina inta) pa do 100 000. (kad se mnozi 4 * 10 000 npr. A kad upisem 40 000 direktno, onda radi)

A ja presao sa bagovitog mikroc-a na bagovit xc8 :D
Re: MplabX i XC8 moja greska ili bug 12.06.2014. u 11:03 · pre 150 meseci #8
Treba da radi i ovako:

Code:

unsigned long proba;

proba = 5;
proba *= 10000;



Probaj ako te ne mrzi!
Potpis
gorankg
Re: MplabX i XC8 moja greska ili bug 12.06.2014. u 11:18 · pre 150 meseci #10
U ovom slučaju se ne zaglupi. Verovatno zato što u jednom izrazu radi sa po jednim konstantnim operandom. Dva i više mu prave problem. Treba probati razne varijante.
Potpis
gorankg
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme