www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Čudno obnašanje programa

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
bostjang
Član
Član



Pridružen-a: Tor 03 Jan 2006 15:29
Prispevkov: 3473
Aktiv.: 14.63
Kraj: Postojna

PrispevekObjavljeno: Pet Nov 10, 2006 4:58 pm    Naslov sporočila:  Čudno obnašanje programa Odgovori s citatom

Ali se je že komu zgodilo, da program ne deluje pravilno, ko pa dodaš nekaj kode, ki (naj) ne bi vplivala na potek programa, pa zadeva spet dela?
Hotel sem ugotoviti zakaj in kje se zatakne moj program, zato sem vmes dodal printf-e, ampak zadeva je potem delovala. Moj kolega je enkrat dodal samo nop-e in je pomagala, sicer mu je na LCD izpisovalo kvake.
Obnašanje se nanaša na LPC in Keil uVision3 in vgrajene prevajalanike.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Pet Nov 10, 2006 5:03 pm    Naslov sporočila:   Odgovori s citatom

Imel sem problem, da mi je javljal kompiler neke errorje, problem pa je je bil v printf funkciji, če sem to funkcijo s katero sem si prikazal (preko serijske povezave s PC) indeks for zanke. Ta indeks sem imel deklariran v main funkciji, problem sem pa rešil tako, da sem dal indeks izven main (globalna spremenljivka). Po tem mi je program pravilno skompajliral.

To sem pa delal na demo verziji, ki jo dobiš zraven razvojne plošče.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
oversc0re
Član
Član



Pridružen-a: Tor 13 Sep 2005 15:20
Prispevkov: 460
Aktiv.: 1.94
Kraj: Radomlje

PrispevekObjavljeno: Pet Nov 10, 2006 6:10 pm    Naslov sporočila:   Odgovori s citatom

Malo podrobneje predstavljen problem s strani kolega: Zelo ocitno je, da na pravilno delovanje programa vpliva dolzina le tega. Tako ko napisem neko dodatno funkcijo, se zacne program cudno obnasat (namesto temperature dobim na lcd cudne znake, ali pa se napisi popolnoma pokvarijo ali pa program popolnoma zasteka), ko pa dodam se kaksno funkcijo, program spet deluje. Najprej sem sumil printf, zato sem napisal svojo funkcijo za pisanje na LCD, pa je se vedno isto. Potem smo posumili optimizacijo... Ok prestavim optimizacijo iz 6 na 1 in program zacne delat. Jo dam do konca (8 ) in spet dela, medtem ko 6,5 in 4 ne delajo (ostalih nisem probaval). Diagnosticiranje napake je prakticno nemogoce, saj ce izklapljam razlicne dele programa stvar deluje, pa ceprav nimajo deli nobene veze z napako. Pointerje sem izdatno pregledal in ne kaze, da bi kateri pisal po nealociranem pomnilniku. Res cudno.
_________________
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
MarkoM
Član
Član



Pridružen-a: Tor 12 Sep 2006 15:29
Prispevkov: 2825
Aktiv.: 12.34
Kraj: Lovrenc na P.

PrispevekObjavljeno: Pet Nov 10, 2006 8:09 pm    Naslov sporočila:   Odgovori s citatom

Če se vam to dogaja pri LC displayih potem ni problem v dodajanju kode itd. ampak pri inicializaciji in izpisovanju na LCD. Za vsak znak, ki ga vpišemo na LCD moramo dati enable linijo na visoko za določen čas, če je tisti čas premajhen se izpišejo kvake.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
oversc0re
Član
Član



Pridružen-a: Tor 13 Sep 2005 15:20
Prispevkov: 460
Aktiv.: 1.94
Kraj: Radomlje

PrispevekObjavljeno: Sob Nov 11, 2006 11:32 am    Naslov sporočila:   Odgovori s citatom

Ne, ne. Tezave so vedno samo s spremenljivkami. Tiste kljuke, ki se prikazujejo, so prikazane vedno namesto vrednosti temperature. Vse ostalo piše kot je treba. Poleg tega me je ze bostjang opozoril na morebitno moznost prekratkega delaya in sem ga za vsak slucaj krepko povecal, pa seveda ni bilo nobenega rezultata.
_________________
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.66
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Pon Nov 13, 2006 10:39 am    Naslov sporočila:   Odgovori s citatom

Zakasnitev (delay) je potrebno uporabiti na pravem mestu. Poizkusi klicati delay za vsakim ukazom v inicializaciji in za vsakim ukazom pri pisanju na LCD. Kvake so tipičen primer napačnega timinga. NOP ali dva je včasih dovolj, da reši problem.

Za test lahko namesto temperature poizkusiš izpisati "AAAA". Če bo izpisalo pravilno AAAA, je verjetno temperatura v napačnem (binarnem?) formatu in jo display pokaže kot nonprintable znak. Običajno je potrebno temperaturo iz senzorja pretvoriti v numerične znake. Če senzor v bytu vrne temperaturo 37 stopinj, in to neposredno izpišeš na zaslon, boš dobil % (kvaka).

Ascii tabela: 037 045 025 00100101 % (percent)

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
oversc0re
Član
Član



Pridružen-a: Tor 13 Sep 2005 15:20
Prispevkov: 460
Aktiv.: 1.94
Kraj: Radomlje

PrispevekObjavljeno: Pon Nov 13, 2006 11:23 am    Naslov sporočila:   Odgovori s citatom

A mi lahko prosim verjamete, da izpis na LCD deluje 100%. Saj nisem vceraj zacel programirati mikrokontrolerjev. Printal sem ze s sprintf in ker so se pojavljale napake sem naredil svoje funkcije za izpis temperature, a so napake identicne.
_________________
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.66
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Pon Nov 13, 2006 11:53 am    Naslov sporočila:   Odgovori s citatom

Dejstvo je, da stvar ne dela.
Ali lahko spremenljivke od temperature izpišeš na LED diode, če je kakšen port prost, ali na uart (com port)?

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.52

PrispevekObjavljeno: Pon Nov 13, 2006 12:10 pm    Naslov sporočila:   Odgovori s citatom

Sta sila skrivnostna - raba bi diagnozo necesa, cesar ne more nihce niti pregledati Shame on you Moja kristalna krogla je trenutno na popravilu, tako da lahko zgolj ugibam Rolling Eyes

Meni se je sicer ze zgodilo, da je prislo do tezav z izpisom na LCD (Keil uVision3), ker je bil med dvema izpisoma prekratek delay (a ocitno se vedno dovolj dolg, da je izpis sicer deloval in dalec vecji, kot je specificirano v datasheetu kontrolnega cipa). Celoten drugi niz je izginil v neznano (najbrz je bil vpisan v del RAMa kontrolerja, ki ni mapiran na display - gre za manjsi display).

Enako kot Jur si lahko predstavljam, da bi zaradi podobne napake lahko nekaj znakov bilo okvarjenih namesto da popolnoma izginejo in da ustrezna dodatna pavza to resi (kar sta oba napisala).

_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
oversc0re
Član
Član



Pridružen-a: Tor 13 Sep 2005 15:20
Prispevkov: 460
Aktiv.: 1.94
Kraj: Radomlje

PrispevekObjavljeno: Pon Nov 13, 2006 2:04 pm    Naslov sporočila:   Odgovori s citatom

Izpis na LCD je zgolj banalen primer dokaza, da nekaj ne deluje dobro. Delay sem, kot je že bilo rečeno povečal nekajkrat, pa je bil rezultat enak. Poleg tega bostjan sploh ne uporablja LCDja, temvec se mu program zastrika nekje drugje. Ko se pri meni zacnejo pojavljati cudni znaki, se program po krajsem casu potem obesi. Tudi izpis na serijski port ne deluje. Sicer pa bomo ze... Zanimalo naju je predvsem, ce se je komu ze pripetilo kaj podobnega na Keilovem compilerju...

Lp, M@ic

_________________
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.52

PrispevekObjavljeno: Pon Nov 13, 2006 2:06 pm    Naslov sporočila:   Odgovori s citatom

Seveda, le da ocitno ni bil kriv compiler (po pregledu assembly outputa), ker bi sam tisti del prevedel enako Rolling Eyes
_________________
Ka ti bo pa torba ce si kupu kolo ?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
jur
Član
Član



Pridružen-a: Pet 02 Dec 2005 14:45
Prispevkov: 5142
Aktiv.: 21.66
Kraj: [color=zelena]Ljubljana[/color]

PrispevekObjavljeno: Pon Nov 13, 2006 2:37 pm    Naslov sporočila:   Odgovori s citatom

oversc0re je napisal/a:
... Zanimalo naju je predvsem, ce se je komu ze pripetilo kaj podobnega na Keilovem compilerju..c


Ja, točno to se mi je že dogajalo. Pri drugih (večih različnih) compilerjih, ne pri Keilu. Vedno pa so do sedaj bile moje (idiotske) napake. Timing, delay, napačen init.,...

Jur
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
oversc0re
Član
Član



Pridružen-a: Tor 13 Sep 2005 15:20
Prispevkov: 460
Aktiv.: 1.94
Kraj: Radomlje

PrispevekObjavljeno: Sob Feb 24, 2007 8:00 pm    Naslov sporočila:   Odgovori s citatom

Hoj!

S tele teme sem pobrisal prah, ker sem po nekaj mesecih končno odkril srš problema (in bi ga rad prihranil vsem ostalim) in pa ker se mi očitki o idiotskih napakah ne zdijo najboljši primer kostruktivnega reševanja težav. Konec koncev je izpadlo, kot da ne znam sprogramirat osnovnega izpisa spremenljivke na LCD Rolling Eyes

Skratka LPC2101-3 imajo hardverski BUG. Nedeterministično izvajanje programa se pojavi pri frekvencah >40MHz oz pri večji porabi toka na 1.8V napajalni liniji. Težavo se da zaobiti bodisi z znižanjem urine frekvence, bodisi z zvišanjem napajalne napetosti na 1.95V.

Lp, Matic

_________________
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny ...'
Isaac Asimov (1920 - 1992)
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni č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
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 6 dni


Powered by phpBB © 2001, 2005 phpBB Group