Re: krásný jazyk český ( bylo Re: air gap)

Pavel Hudecek edizon na seznam.cz
Čtvrtek Březen 28 20:09:19 CET 2013


Já to pochopil, ale moje odpověď byla, že takovou funkci vlastně 
nepotřebuji, když si můžu v EEPROM nadeklarovat proměnné a pracovat s nimi 
normálně, "jako by se nechumelilo". Kromě toho, že ušetřím práci s takovou 
funkcí, si navíc ušetřím i veškeré problémy, které mohou vzniknout, když při 
adresování udělám chybu.

Obecně jsem tím chtěl naznačit, že takovéhle přímé porovnávání malé funkce 
není dobré, protože jazyk a překladač může mít značný vliv na okolnosti, 
takže program, který byl původním cílem snažení, může vypadat velmi různě a 
problém, který se v jednom jazyce/prostředí, nebo s jinou filozofií musí 
řešit, nemusí jindy u stejné úlohy vůbec nastat.

Ale ok, kdybych chtěl přesně dle zadání, udělal bych to třeba takhle:
(pokud jsem správně pochopil, že zadání je od adresy v eeprom dané prvním 
parametrem uložit 4 B, na které ukazuje pointer, který je druhým parametrem 
a že ten pointer má potom ukazovat za uložená data)

void Save_4B(unsigned int adr, *data) {
  EEPROM_Write(adr, *data); data++;
  EEPROM_Write(adr+1, *data); data++;
  EEPROM_Write(adr+2, *data); data++;
  EEPROM_Write(adr+3, *data); data++;
}

Nebo bych mohl použít for cyklus

void Save_4B(unsigned int adr, *data) {
  unsigned char n;
  for (n=0; n<4; n++) {
    EEPROM_Write(adr+n, *data);
    data++;
  }
}

PH

From: "Admin HWnews" <hwnews na cncnet.info>
To jste mirne nepochopil - ta procedura uklada libovnolnou 16b promennou
na kterou predate pointer na libovolne misto v eeprom.

Dne 28.3.2013 16:56, Pavel Hudecek napsal(a):
> Já bych tedy předně něco takového nepsal, vyřeší to za mě překladač.
> Proč bych používal nějakou funkci na zápis 4 B do EEPROM, když si tam
> můžu nadeklarovat proměnnou a tu pak používat jako každou jinou proměnnou?
>
> eeprom unsigned long eStartCnt=0;
> eeprom unsigned char eHeslo="123456789";
>
> void main(){
>   eStartCnt++ů
>   dispText("Vítejte při "); dispInt(eStartCnt); dispText(". zapnutí
> Vašeho přístroje.");
>   sifrovaniInit(eHeslo, eStartCnt);
>   ....
> } 



Další informace o konferenci Hw-list