<html><body>Tak jsem si s tim jeste hral, a zjistil jsem, ze jdou legalne definovat promene pres sebe.<div><div>  prom_byte: array[0..1] of byte;</div><div>  prom_word: word at prom_byte;</div><div><br></div><div>Mam pole dvou byte ke kterem muzu pristupovat jako k wordu.</div><div><br></div><div>Tak pokud to necemu pomuze, jen bude nutne dodrzet ty recordy,</div><div>stejne dlouhe jinak se to podela... A samozrejme dodrzet aby byte,wordove</div><div>registry byly spravne tam kam patri;</div><div><br></div><div><div style="color: rgb(0, 51, 153);">rv_d           : array[0..15] of Reg_dword;;<br></div><div></div><div style="color: rgb(0, 51, 153);">rv_w           : array[0..15] of Reg_word at rv_d; <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_b           : array[0..15] of Reg_byte at rv_d;<br></div><div><br></div></div></div></div></div><div><br></div><div>Zdenek Aster</div><div><br></div><p>---------- Původní zpráva ----------<br>Od: Zdeněk Aster <Zdenek.Aster@seznam.cz><br>Komu: HW-news <hw-list@list.hw.cz><br>Datum: 2. 6. 2016 15:33:44<br>Předmět: Re: Ukladani nastaveni v programu pro MCU</p><br><blockquote><div>No pokud se nelíbí ty tři pole s ruznymy indexi co jsem psal dole tak me napada jedna<div>hodne velka silenost, ale nevim jestli to prevazi nad prakticnosti. Udelal bych tyto definice</div><div>samozrejme zalezi v jakym poradi uklada byte pic/kompilator to netusim, ale to je detail.</div><div><br></div><div><div style="color: rgb(0, 51, 153);">type Reg_dword = record</div><div style="color: rgb(0, 51, 153);">    modi           : boolean;</div><div style="color: rgb(0, 51, 153);">    r0             : dword;</div><div style="color: rgb(0, 51, 153);">    r1             : dword;</div><div style="color: rgb(0, 51, 153);">    eeprom         : word;</div><div style="color: rgb(0, 51, 153);">    delka          : byte;</div><div style="color: rgb(0, 51, 153);">end;</div><div style="color: rgb(0, 51, 153);"><br></div><div style="color: rgb(0, 51, 153);">type Reg_word = record</div><div style="color: rgb(0, 51, 153);">    modi           : boolean;</div><div style="color: rgb(0, 51, 153);">    rez0           : word;</div><div style="color: rgb(0, 51, 153);">    r0             : word;</div><div style="color: rgb(0, 51, 153);">    rez1           : word;</div><div style="color: rgb(0, 51, 153);">    r1             : word;</div><div style="color: rgb(0, 51, 153);">    eeprom         : word;</div><div style="color: rgb(0, 51, 153);">    delka          : byte;</div><div style="color: rgb(0, 51, 153);">end;</div><div style="color: rgb(0, 51, 153);"><br></div><div style="color: rgb(0, 51, 153);">type Reg_byte = record</div><div style="color: rgb(0, 51, 153);">    modi           : boolean;</div><div style="color: rgb(0, 51, 153);">   rez0w    : word;</div><div style="color: rgb(0, 51, 153);">   rez0b    : byte; </div><div style="color: rgb(0, 51, 153);">   r0             : byte;</div><div style="color: rgb(0, 51, 153);">   rez1w    : word;</div><div style="color: rgb(0, 51, 153);">   rez1b    : byte; </div><div style="color: rgb(0, 51, 153);">    r1             : byte;</div><div style="color: rgb(0, 51, 153);">    eeprom         : word;</div><div style="color: rgb(0, 51, 153);">    delka          : byte;</div><div style="color: rgb(0, 51, 153);">end;</div></div><div style="color: rgb(0, 51, 153);"><br></div><div><div style="color: rgb(0, 51, 153);">rv_w           : array[0..15] of Reg_word; absolute 10; <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[0..15] of Reg_dword; absolute 10;<br></div><div><div style="color: rgb(0, 51, 153);">rv_b           : array[0..15] of Reg_byte; absolute 10;<br></div></div><div><br></div><div>Clovek by musel trosku zjistit jak se chova absolute jak to prekladac vymezi a pouzije jine promene,</div><div>Ale tim docilim toho ze mam vsechny pole pres sebe, v idealnim pripade pokud jsem se trefil bude</div><div>byte nizsi byte word a nejnizsi byte dword. V casti terminalu pouziji 32bytovy prsitup mam jedno pole</div><div> a nemusim nic resit. No a v programu si vyberu kokretni pole, ktere ma tu spravnou velikost.</div><div><br></div><div>Ale asi mi prijde jednodusi zabyvat se dle cisla indexu v terminalu clovek nemusi vedet co to je jestli</div><div>byte,word, dword a v programu to neni az tak hrozne na osetreni....</div><div><br></div><div>Zdenek Aster</div></div></div></div></div><div><br><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 15:18:04<br>Předmět: Re: Ukladani nastaveni v programu pro MCU</p><br><blockquote><div><div>jde mi o to si co nejvic ulehcit praci pri praci s prikazy terminalu - mam navrzene nejakou takovou syntaxi<div><br></div><div><div>// syntaxe</div><div>// r001*;  - vypise nastaveni registru r001 - jak run hodnotu tak set</div><div>// r001$45; - zapise do r001 hodnotu 45 do set hodnoty</div><div>// r001#;   - prepise hodnotu z set do run</div><div>// c001!;   - vykonna prikaz c001</div><div><br></div><div>tedy pokud to mam ve trech polich tak to musim jeste v tom prikazu nejak vyspecifikovat abych vedel do ktereho pole namirit index (cisla za r)</div><div><br></div><div>samozrejme muzu to udelat tak, ze prikazy budou b001 nebo w001 nebo d001, ale musim to porad nekde drzet v hlave co je jakej typ - hlavne uzivatelsky je to uplne mimo</div><div><br></div><div>nebo to muzu udelat tak ze 000 az 099 je byte , 100 az 199 je word atd..</div><div><br></div><div>to proc se mi to nechce mit vsechno v dwordu je ze ty hodnoty v pracovnich registrech chci pouzivat normalne v kodu a pocitat vsechno ve 32b se mi moc nezamlouva </div><div><br></div><div>aspon tedy predpokladam, ze prekladac jakmile uvidi tohle</div><div><br></div><div><div>  a  : dword;</div><div>  b  :  byte;</div></div><div>  c  : word;</div><div><br></div><div>c:=a*b;</div><div><br></div><div>to spocita jako 32b*32b a pretypuje na word</div><div><br></div><div><br></div><div>RV</div><div><br><div>Dne 2. června 2016 15:00 Zdeněk Aster <span><<a href="mailto:Zdenek.Aster@seznam.cz">Zdenek.Aster@seznam.cz</a>></span> napsal(a):<br><blockquote style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div>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)"><span><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></span><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)"><span><div style="color:rgb(0,51,153)">rv_w           : array[0..7] of Reg_word;<br></div></span><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><br></p></div></div></blockquote></div></div></div></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></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>