Ukladani nastaveni v programu pro MCU

hwnews konference hwnews na cncnet.info
Čtvrtek Červen 2 13:03:57 CEST 2016


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> 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
> 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/6d8009bb/attachment.html>


Další informace o konferenci Hw-list