EEPROM, C++ a řetěžování operátorů
Pavel Hudeček
edizon na seznam.cz
Pátek Květen 26 14:05:27 CEST 2023
Dobrý den všem,
jsem poměrně zmlsanej používáním EEPROM v CodeVisionu. Typické
zpracování naměřených dat vypadá cca takto:
for (n=0; n<ADC_chanCnt; n++) {
adData[n] = (float)(adc_data[n] + eCalOffs[n]) * eCalMult[n];
}
Můžou se tam ale vyskytnout i složitější výpočty, třeba po
if(n==ADC_idxTemp).
Když ale totéž chci udělat v Atmel Studiu, což je zas jinak mnohem lepší
IDE než CodeVision, navíc je zdarma a bez komplikací po vypršení doby
podpory k online licenci, vzniknou z toho hrůzy obsahující funkce jako
eeprom_read_float(&eCalOffs + n), případně se třeba u int musí ten
pointer přetypovávat, aby ho sežrala funkce eeprom_read_word a když jde
o zápis, tak přetypovávat i vstupní hodnotu. Prostě fakt otravný.
Tak jsem si řekl, že tohle by přece šlo napsat v C++. Udělat si na to
nějakej class, jen to bude jednou hodně práce.
Narazil jsem na problém, že nevím, jak udělat přetížení operátorů pro
všech 8 kombinací RAM a EEPROM na vstupech a výstupu. Nějaké nápady?
Druhá věc je, že určitě nejsem provní ani poslední koho něco takového
napadlo. Má tu někdo zkušenosti s používáním nějkakého takového již
hotového, nejlépe open source projektu?
Díky,
PH
Další informace o konferenci Hw-list