07-06-2012, 08:45 PM
(Seda postitust muudeti viimati: 07-06-2012, 08:48 PM ja muutjaks oli felch.)
Tänud nõu andmast, probleem on lahendatud. Osa oli sellest, et ma ei saa ikka C bürokraatiale (minu meelest) pihta ja osa oli C18 erinippides.
Lõplik koodilõik tuli säärane:
Selgub, et 18-seeria puhul tuleb kasutada *pgm funtsiooni (strcatpgm2rm jne) sest muidu ei suudeta flashist asja RAMi lugeda (ilmselt ei kasutata siis TBLRD*+ asmi käsku. Miks aga see on vajalik info liigutamisel RAMi sees, pole selge. Igatahes nii netis soovitati ja nii toimis ka.
Ma ei saa aru...räägitakse ju, et C-s on kõik lihtne ja eriti mugav...?
Lõplik koodilõik tuli säärane:
Kood:
...
char FailiName[32]; // logifaili nime moodustamiseks
....
rtc_get (DS_Aeg); // vaatame kella, WORD year, BYTE - muud aja muutujad
year=DS_Aeg->tm_year;
month=DS_Aeg->tm_mon;
day=DS_Aeg->tm_mday;
hours=DS_Aeg->tm_hour;
minutes=DS_Aeg->tm_min;
seconds=DS_Aeg->tm_sec;
itoa (year,FailiName);
btoa (month,tmpstr);
strcatpgm2ram (FailiName, "-");
strcat (FailiName, tmpstr);
btoa (day,tmpstr);
strcatpgm2ram (FailiName, "-");
strcat (FailiName, tmpstr);
strcatpgm2ram (FailiName, ".csv");
strcpypgm2ram(fo_mode,"a");
logFile = FSfopen(FailiName, fo_mode); // avame faili appendiks või kui sellise nimega veel pole siis tekitame
btoa (hours,FailiName); // kirjutab: hh:mm:ss power restored, muutuja FailiName taaskasutamine :)
btoa (minutes,tmpstr);
strcatpgm2ram (FailiName, ":");
strcat (FailiName, tmpstr);
strcatpgm2ram (FailiName, ":");
btoa (seconds,tmpstr);
strcat (FailiName, tmpstr);
strcatpgm2ram (FailiName, ",Power restored \r\n");
FSfwrite((const void*)&FailiName[0],1,sizeof(FailiName),logFile);
...
Selgub, et 18-seeria puhul tuleb kasutada *pgm funtsiooni (strcatpgm2rm jne) sest muidu ei suudeta flashist asja RAMi lugeda (ilmselt ei kasutata siis TBLRD*+ asmi käsku. Miks aga see on vajalik info liigutamisel RAMi sees, pole selge. Igatahes nii netis soovitati ja nii toimis ka.
Ma ei saa aru...räägitakse ju, et C-s on kõik lihtne ja eriti mugav...?