Ukladani nastaveni v programu pro MCU

Zdeněk Aster Zdenek.Aster na seznam.cz
Čtvrtek Červen 2 21:11:56 CEST 2016


Tak jsem si s tim jeste hral, a zjistil jsem, ze jdou legalne definovat 
promene pres sebe.

  prom_byte: array[0..1] of byte;

  prom_word: word at prom_byte;




Mam pole dvou byte ke kterem muzu pristupovat jako k wordu.




Tak pokud to necemu pomuze, jen bude nutne dodrzet ty recordy,

stejne dlouhe jinak se to podela... A samozrejme dodrzet aby byte,wordove

registry byly spravne tam kam patri;





rv_d           : array[0..15] of Reg_dword;;




rv_w           : array[0..15] of Reg_word at rv_d; 





rv_b           : array[0..15] of Reg_byte at rv_d;












Zdenek Aster




---------- Původní zpráva ----------
Od: Zdeněk Aster <Zdenek.Aster na seznam.cz>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 2. 6. 2016 15:33:44
Předmět: Re: Ukladani nastaveni v programu pro MCU

"
No pokud se nelíbí ty tři pole s ruznymy indexi co jsem psal dole tak me 
napada jedna
hodne velka silenost, ale nevim jestli to prevazi nad prakticnosti. Udelal 
bych tyto definice

samozrejme zalezi v jakym poradi uklada byte pic/kompilator to netusim, ale 
to je detail.





type Reg_dword = record

    modi           : boolean;

    r0             : dword;

    r1             : dword;

    eeprom         : word;

    delka          : byte;

end;




type Reg_word = record

    modi           : boolean;

    rez0           : word;

    r0             : word;

    rez1           : word;

    r1             : word;

    eeprom         : word;

    delka          : byte;

end;




type Reg_byte = record

    modi           : boolean;

   rez0w    : word;

   rez0b    : byte; 

   r0             : byte;

   rez1w    : word;

   rez1b    : byte; 

    r1             : byte;

    eeprom         : word;

    delka          : byte;

end;






rv_w           : array[0..15] of Reg_word; absolute 10; 





rv_d           : array[0..15] of Reg_dword; absolute 10;



rv_b           : array[0..15] of Reg_byte; absolute 10;






Clovek by musel trosku zjistit jak se chova absolute jak to prekladac vymezi
a pouzije jine promene,

Ale tim docilim toho ze mam vsechny pole pres sebe, v idealnim pripade pokud
jsem se trefil bude

byte nizsi byte word a nejnizsi byte dword. V casti terminalu pouziji 32
bytovy prsitup mam jedno pole

 a nemusim nic resit. No a v programu si vyberu kokretni pole, ktere ma tu 
spravnou velikost.




Ale asi mi prijde jednodusi zabyvat se dle cisla indexu v terminalu clovek 
nemusi vedet co to je jestli

byte,word, dword a v programu to neni az tak hrozne na osetreni....




Zdenek Aster







---------- Původní zpráva ----------
Od: hwnews konference <hwnews na cncnet.info>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 2. 6. 2016 15:18:04
Předmět: Re: Ukladani nastaveni v programu pro MCU

"

jde mi o to si co nejvic ulehcit praci pri praci s prikazy terminalu - mam 
navrzene nejakou takovou syntaxi




// syntaxe

// r001*;  - vypise nastaveni registru r001 - jak run hodnotu tak set

// r001$45; - zapise do r001 hodnotu 45 do set hodnoty

// r001#;   - prepise hodnotu z set do run

// c001!;   - vykonna prikaz c001




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)




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




nebo to muzu udelat tak ze 000 az 099 je byte , 100 az 199 je word atd..




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 




aspon tedy predpokladam, ze prekladac jakmile uvidi tohle





  a  : dword;

  b  :  byte;


  c  : word;




c:=a*b;




to spocita jako 32b*32b a pretypuje na word







RV



Dne 2. června 2016 15:00 Zdeněk Aster <Zdenek.Aster na seznam.cz
(mailto:Zdenek.Aster na seznam.cz)> napsal(a):
"
Napadají mě samé šílenosti, podstata je, že netuším čemu je potřeba se 
vyhnout a čeho docílit.
Nicméně pokud by člověk chtěl třeba přehlednost v definici těch konstant,tak
určitě by šlo definovat

pole takhle.






const

   //word pole

    rUmaxBat       = 0;     //mV konecne nabijeci napeti cyklicke - EEPROM A
-B

    rUfloatBat     = 1;     //mV konecne nabijeci napeti float - EEPROM C-D

    rOffsetMppt    = 2;     //OffsetMppt - mV offset regulace mppt - EEPROM 
E-F

    rUchargOn      = 3;     //UchargOn - mV napeti pri kterem zapinam 
dobijeni - EEPROM 12-13

    rUchargOff     = 4;     //UchargOff - mV napeti pri kterem vypinam 
dobijeni - EEPROM 14-15

    rUzatezOn      = 5;     //UzatezOn - mV napeti pri kterem zapinam zatez 
- EEPROM 16-17

    rUzatezOff     = 6;     //UzatezOff - mV napeti pri kterem vypinam zatez
- EEPROM 18-19

    rUpanic        = 7;     //Upanic - napeti pri kterem se vse zastavi - 
bitove rozliseni - EEPROM 20-21


   //dword pole



   rNecoDword       = 8;   


    ................

  // byte pole



   rNecoByte       = 16;

   .......   

 







rv_w           : array[0..7] of Reg_word;





rv_d           : array[8..15] of Reg_dword;




rv_b           : array[16..30] of Reg_byte;







Jsou to sice tri pole, ale index muzete resit krasne postupne, a i 
kompilator by mel hlasit chybu,

pri pouziti blbeho indexu v blbem poli a pokud to nadefinujete za sebou a 
nebude kompilator 

blbnout tak by to slo do eeprom ulozit jednou funkci. Adresa prvniho pole a 
secit delky vsech poli.




Writeeeprom( PBytearray(@rv_w),sizeof(rv_w)+sizeof(rv_d)+sizeof(rv_b), 
pozice_v_eprom);




Zdenek Aster















"




_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list"

_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20160602/a06a6ebe/attachment-0001.html>


Další informace o konferenci Hw-list