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