<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>