Ukladani nastaveni v programu pro MCU

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


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











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

"

diky obema zda se ze to opravdu uklada jak ma, ale zatim jsem nevyresil 
integraci vsech typu promennych do jedne struktury



rekapitulace mam tri ruzne typy registru co se tyka velikosti (ta polozka 
eeprom bude zbytecna); 





type Reg_dword = record

    modi           : boolean;

    r0             : dword;

    r1             : dword;

    eeprom         : word;

    delka          : byte;

end;




type Reg_word = record

    modi           : boolean;

    r0             : word;

    r1             : word;

    eeprom         : word;

    delka          : byte;

end;




type Reg_byte = record

    modi           : boolean;

    r0             : byte;

    r1             : byte;

    eeprom         : word;

    delka          : byte;

end;





jsem schopny nadefinovat pole rekordu, ale jen od jednoho typu:




var

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





vyresil jsem i to, aby to bylo prehledne v kodu:





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





takze pristup k polozkam je takto:





    rv_w[rUmaxBat].r0     := 14200;     //mV konecne nabijeci napeti 
cyklicke - EEPROM A-B

    rv_w[rUfloatBat].r0   := 13700;     //mV konecne nabijeci napeti float -
EEPROM C-D

    rv_w[rOffsetMppt].r0  := 50;        //OffsetMppt - mV offset regulace 
mppt - EEPROM E-F

    rv_w[rUchargOn].r0    := 12000;     //UchargOn - mV napeti pri kterem 
zapinam dobijeni - EEPROM 12-13





coz se bude dobre resit i v parsovani prikazu z terminalu, kde mohu snadno 
pristupovat na konfiguracni polozky




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




RV







Dne 1. června 2016 21:23 Zdeněk Aster <Zdenek.Aster na seznam.cz
(mailto:Zdenek.Aster na seznam.cz)> napsal(a):
"
">"S tym volatile som to prehnal, to asi v tom Pascale nie je, alebo je? Ako
>ste to dosiahli, co ste zmenili?
>
>wek
>
>"
>Dosahnul jsem toho takhle :-) 
>
>  x: byte as volatile;

Hm, hm, tak to bolo necakane... Kolko minut vravite ze v tom robite? :-) 

Dakujem.

wek"
No asi těch 5 minut co jsem to nainstaloval, ale pascal jsem měl vždy rád,

a kdysi měl zaujal od nemeckeho elabu pascal pro atmel tak jsem chtel 

videt jak vypada od mikroe. Ja uz jsem si zvyknul na cecko pro jednocipy, 

pascal pouzivam jen kdyz neco potrebuji ve windowsech nebot tak nejak

 v tom neco i udelam.




Navíc  jsem si říkal, že volatile by to tam mělo být, protože se bez toho 

občas většinou žít nedá tak jsem to zkusil. Je tam implementováno i 

absolute u promene, ale  jen na adresu nikoliv neprimo na promenou, 

pritom by to pro  kompilator nebyl problem a pak by slo pole nadefinovat

klidne pres strukturu, ale to uz je taky pekna prasecina.




var 

   x;byte; absolute 10;  // tohle jde

   a: byte;

   b:byte; absolute a;  // tohle nejde







Zdeněk Aster


_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz(http://www.HW.cz)
Hw-list na list.hw.cz(mailto:Hw-list na list.hw.cz)
http://list.hw.cz/mailman/listinfo/hw-list
(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/8df6bd70/attachment-0001.html>


Další informace o konferenci Hw-list