Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2025 04 03, 23:10. Visos datos yra GMT + 2 valandos.
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
esme yra tame, kad neigimo operatorius turi pirmenybe tiek vienam bitui, tiek kombinacijai, todel pirma bito aprasa invertuoja, o ka ten pridede veliau, jau nebe....
todel x &= ~( bitai ); yra butini skliaustai
o x |= bitai; nebutini
beje, jei nori saugiai naudotis eeprom'u, tai paaukok [0] baita, o operacijas aprasyk taip, kad pries iseinant (ar bent iskart po jos) is f-jos EEAR = 0;
Dėl 0 adreso, nenaudoju, o po nuskaitymo rašymo yra rekomenduojama parašyti EEAR=0; ?
Taip, iskart po irasymo/nuskaitymo rasai i EEAR 0.
Paaiskinimas f-jai: lauztiniuose skliaustuose nurodomi nebutini ar atskiram variantui priklausantys parametrai.
Jei zinai, kad viskas ok, tai gali ir nekreipti demesio, bet jei tavo programa bandys kompiliuoti koks nors pradedantis, tai jis gali ir susinervuoti nesuprates kas ir del ko, o ir paciam kada nors nusibos warning'ai, tai pradesi netingeti pritempineti tipus prie prasomu, todel jau dabar gali pratintis ir nepasigailesi.
Todel forma duomenys=eeprom_read_byte ((unsigned char*)2); yra teisingesne.
Paprasciausiai, ivertink, kad jei skaiciaus tipas nenurodytas, tai kompiliatorius by default ji supranta kaip int, todel nesikeiks jei parasysi ir duomenys=eeprom_read_byte ((uint8_t*)2);
Labai ačiū. Dėl to ir noriu išspręst tuos "warning"us, kad atsibodo
Bet.. šiuo atveju "read_byte" funkcijoje yra "unsigned char", tai maksimalus adresas 255? Atmegoje 4 KB. Didesniem adresam reiktų jaudoti jau "read word"? Tiek aišku nenaudoju, bet tokiu atveju mažus duomenis (unsigned char) reiktų saugoti adresų pradžioje, o toliau "unsigned int"
_________________ Aš pažeidžiau forumo taisykles ir reklamavau paraše. ...Bet uz reklama tai susimokejau
Labai ačiū. Dėl to ir noriu išspręst tuos "warning"us, kad atsibodo
Bet.. šiuo atveju "read_byte" funkcijoje yra "unsigned char", tai maksimalus adresas 255? Atmegoje 4 KB. Didesniem adresam reiktų jaudoti jau "read word"? Tiek aišku nenaudoju, bet tokiu atveju mažus duomenis (unsigned char) reiktų saugoti adresų pradžioje, o toliau "unsigned int"
Ne, maksimalus adresas yra 65535, nes EEAR yra 16 bitu (EEARH,EEARL), kitas dalykas ka ten gausi, jei iseisi uz fizines EEPROM ribos
Bent jau datacheete vyresni bitai neaktyvus, tai turetu juos ignoruoti, bet kaip realiai - tikrink pats.
(uint8_t*) sako, kad cia rodykle i byte, (uint16_t*) - rodykle i word.