03-08-2017, 09:24 PM
(03-08-2017, 07:15 PM)Braca Wrote: Da skratim priču, danas sam posle nekih osam sati rada konačno našao grešku i to u kompajleru. Na jednom mestu poziva se podprogram i prebacuje mu se vektor sa tri realna elementa koji se izvlače iz objekta. Pre poziva vidim da su vrednosti u redu, a kada udje u podprogram jedan od ta tri elementa povremeno ima neku bezveznu vrednost, čije efekte onda upravljačka logika glavnog programa pokušava da otkloni i tu više nema spasa.
Braco,
ne bavim se PC programiranjem, ali programiram MCU-ove vec jedno 20 godina. Isti problem sam imao kada sam krenuo da koristim Atmel Studio, C jezik je u pitanju. Imao sam situaciju da neku promenljivu u koju upisem vrednost u interaptu serijske komunikacije (dobijem je preko serijskog porta) u main-u ispitam da li je to ta vrednost i onda nesto radim dalje nije ta vrednost, ili nekada jeste, a nekada nije. Npr. preko serijskog porta posaljem 0x30 i znam da ocekujem 0x30, u main ispitam da li je to 0x30 i ako jeste upalim LED, ne radi. Onda sam napravio program da sta god primim preko serijskog porta u tu promenljivu fuzicki hardkodujem 0x30 i opet u main ipitam da li je 0x30 i naravno nije.
Kasnije sam nasao na netu da promenljive koje se koriste u interaptu, a koriste se i u drugim funkcijama moraju da se definisu kao volatile. Cim sam to uradio, sve je proradilo kako treba.
Ovo ti cisto pisem, da vidis, da li mozda u Fortran-u postoji takva neka fora.
Pozdrav,
Vojin