<html><body>Napadají mě samé šílenosti, podstata je, že netuším čemu je potřeba se vyhnout a čeho docílit.<div>Nicméně pokud by člověk chtěl třeba přehlednost v definici těch konstant,tak určitě by šlo definovat</div><div>pole takhle.</div><div><br></div><div><div style="color: rgb(0, 51, 153);"><div>const</div><div> //word pole</div><div> rUmaxBat = 0; //mV konecne nabijeci napeti cyklicke - EEPROM A-B</div><div> rUfloatBat = 1; //mV konecne nabijeci napeti float - EEPROM C-D</div><div> rOffsetMppt = 2; //OffsetMppt - mV offset regulace mppt - EEPROM E-F</div><div> rUchargOn = 3; //UchargOn - mV napeti pri kterem zapinam dobijeni - EEPROM 12-13</div><div> rUchargOff = 4; //UchargOff - mV napeti pri kterem vypinam dobijeni - EEPROM 14-15</div><div> rUzatezOn = 5; //UzatezOn - mV napeti pri kterem zapinam zatez - EEPROM 16-17</div><div> rUzatezOff = 6; //UzatezOff - mV napeti pri kterem vypinam zatez - EEPROM 18-19</div><div> rUpanic = 7; //Upanic - napeti pri kterem se vse zastavi - bitove rozliseni - EEPROM 20-21</div><div><div> //dword pole</div></div><div><div> rNecoDword = 8; <br></div><div> ................</div><div> // byte pole</div><div></div><div> rNecoByte = 16;</div><div> ....... </div><div> </div></div></div></div><div><div style="color: rgb(0, 51, 153);"><div style="color: rgb(0, 0, 0);"><div style="color: rgb(0, 51, 153);">rv_w : array[0..7] of Reg_word;<br></div><div><div style="color: rgb(0, 51, 153);"><div style="color: rgb(0, 0, 0);"><div style="color: rgb(0, 51, 153);">rv_d : array[8..15] of Reg_dword;<br></div><div><div><div style="color: rgb(0, 51, 153);">rv_b : array[16..30] of Reg_byte;<br></div></div></div><div><br></div><div>Jsou to sice tri pole, ale index muzete resit krasne postupne, a i kompilator by mel hlasit chybu,</div><div>pri pouziti blbeho indexu v blbem poli a pokud to nadefinujete za sebou a nebude kompilator </div><div>blbnout tak by to slo do eeprom ulozit jednou funkci. Adresa prvniho pole a secit delky vsech poli.</div><div><br></div><div>Writeeeprom( PBytearray(@rv_w),sizeof(rv_w)+sizeof(rv_d)+sizeof(rv_b), pozice_v_eprom);</div><div><br></div><div>Zdenek Aster</div></div></div></div></div></div></div><div><br></div><div><p>---------- Původní zpráva ----------<br>Od: hwnews konference <hwnews@cncnet.info><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 2. 6. 2016 13:04:15<br>Předmět: Re: Ukladani nastaveni v programu pro MCU</p><br><blockquote><div><div>diky obema zda se ze to opravdu uklada jak ma, ale zatim jsem nevyresil integraci vsech typu promennych do jedne struktury<div><br></div><div>rekapitulace mam tri ruzne typy registru co se tyka velikosti (ta polozka eeprom bude zbytecna); </div><div><br></div><div><div>type Reg_dword = record</div><div> modi : boolean;</div><div> r0 : dword;</div><div> r1 : dword;</div><div> eeprom : word;</div><div> delka : byte;</div><div>end;</div><div><br></div><div>type Reg_word = record</div><div> modi : boolean;</div><div> r0 : word;</div><div> r1 : word;</div><div> eeprom : word;</div><div> delka : byte;</div><div>end;</div><div><br></div><div>type Reg_byte = record</div><div> modi : boolean;</div><div> r0 : byte;</div><div> r1 : byte;</div><div> eeprom : word;</div><div> delka : byte;</div><div>end;</div></div><div><br></div><div>jsem schopny nadefinovat pole rekordu, ale jen od jednoho typu:</div><div><br></div><div>var</div><div>rv_w : array[0..7] of Reg_word;<br></div><div><br></div><div>vyresil jsem i to, aby to bylo prehledne v kodu:</div><div><br></div><div><div>const</div><div> //word pole</div><div> rUmaxBat = 0; //mV konecne nabijeci napeti cyklicke - EEPROM A-B</div><div> rUfloatBat = 1; //mV konecne nabijeci napeti float - EEPROM C-D</div><div> rOffsetMppt = 2; //OffsetMppt - mV offset regulace mppt - EEPROM E-F</div><div> rUchargOn = 3; //UchargOn - mV napeti pri kterem zapinam dobijeni - EEPROM 12-13</div><div> rUchargOff = 4; //UchargOff - mV napeti pri kterem vypinam dobijeni - EEPROM 14-15</div><div> rUzatezOn = 5; //UzatezOn - mV napeti pri kterem zapinam zatez - EEPROM 16-17</div><div> rUzatezOff = 6; //UzatezOff - mV napeti pri kterem vypinam zatez - EEPROM 18-19</div><div> rUpanic = 7; //Upanic - napeti pri kterem se vse zastavi - bitove rozliseni - EEPROM 20-21</div></div><div><br></div><div>takze pristup k polozkam je takto:</div><div><br></div><div><div> rv_w[rUmaxBat].r0 := 14200; //mV konecne nabijeci napeti cyklicke - EEPROM A-B</div><div> rv_w[rUfloatBat].r0 := 13700; //mV konecne nabijeci napeti float - EEPROM C-D</div><div> rv_w[rOffsetMppt].r0 := 50; //OffsetMppt - mV offset regulace mppt - EEPROM E-F</div><div> rv_w[rUchargOn].r0 := 12000; //UchargOn - mV napeti pri kterem zapinam dobijeni - EEPROM 12-13</div></div><div><br></div><div>coz se bude dobre resit i v parsovani prikazu z terminalu, kde mohu snadno pristupovat na konfiguracni polozky</div><div><br></div><div>jen me krka, ze ty pole budu muset mit tri pro kazdej typ rekordu - nebyl by nejakej napad? pretypovavat to pri kazdem pouziti je trochu pres ruku</div><div><br></div><div>RV</div><div><br></div></div><div><br><div>Dne 1. června 2016 21:23 Zdeněk Aster <span><<a href="mailto:Zdenek.Aster@seznam.cz">Zdenek.Aster@seznam.cz</a>></span> napsal(a):<br><blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><span><blockquote>>"S tym volatile som to prehnal, to asi v tom Pascale nie je, alebo je? Ako<br>>ste to dosiahli, co ste zmenili?<br>><br>>wek<br>><br>>"<br>>Dosahnul jsem toho takhle :-) <br>><br>> x: byte as volatile;<br><br>Hm, hm, tak to bolo necakane... Kolko minut vravite ze v tom robite? :-) <br><br>Dakujem.<br><br>wek</blockquote></span><p>No asi těch 5 minut co jsem to nainstaloval, ale pascal jsem měl vždy rád,</p><p>a kdysi měl zaujal od nemeckeho elabu pascal pro atmel tak jsem chtel </p><p>videt jak vypada od mikroe. Ja uz jsem si zvyknul na cecko pro jednocipy, </p><p>pascal pouzivam jen kdyz neco potrebuji ve windowsech nebot tak nejak</p><p> v tom neco i udelam.</p><p><br></p><p>Navíc jsem si říkal, že volatile by to tam mělo být, protože se bez toho </p><p>občas většinou žít nedá tak jsem to zkusil. Je tam implementováno i </p><p>absolute u promene, ale jen na adresu nikoliv neprimo na promenou, </p><p>pritom by to pro kompilator nebyl problem a pak by slo pole nadefinovat</p><p>klidne pres strukturu, ale to uz je taky pekna prasecina.</p><p><br></p><p>var </p><p> x;byte; absolute 10; // tohle jde</p><p> a: byte;</p><p> b:byte; absolute a; // tohle nejde</p><span><font color="#888888"><p><br></p><p><br></p><p>Zdeněk Aster</p></font></span></div><br>_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
<br></blockquote></div><br></div>
</div>_______________________________________________<br>HW-list mailing list - sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br>http://list.hw.cz/mailman/listinfo/hw-list</blockquote></div></body></html>