1

Téma: Flash po stránce v SDS Macro LCD

Dobrý den,

stáhla jsem si nový firmware a nový SDC (poslední verze k dnešku) ale nefunguje mi následující kód:

   ram[40] = a;
   ram[41] = batState;
   ram[42] = ah;
   ram[43] = wh;
   ram[44] = excState;
   ram[45] = MAPO;
   ram[46] = downCapacity;
   ram[47] = upCapacity;
   ram[48] = BAT_RESERVE;
   ram[49] = BAREHY;
   ram[50] = BEPTIME;
   ram[51] = BAT_REDC;
    
   write_ram_block_to_dataflash_page(0, 40); //a zapíšu naráz celou stránku

kód se dá zkompilovat a odeslat do SDS, nicméně po jeho vykonání nejsou buňky 0 - 11 (stránka 0) flash paměti zapsané. Původní kód

sys[99] = a;   write_dataflash(0) 

atd...  funguje v pořádku (data se zapíšou).

Dělám něco špatně?

Děkuji za pomoc smile

2

Re: Flash po stránce v SDS Macro LCD

Zmíněný kód na SDS MACRO funguje (poslední FW).

Toto je jednoduchý testovací kód - sledujte echo.htm:
* [0] vyplní pole ram[]
* [1] zapíše do DF stránky č.10 hodnoty z ram[]
* [2] smaže obsah ram[] (nastaví vše na nulu)
* [3] přečte DF stránku č.10 do ram
* [4] zkontroluje přečtené data z DF stránky - v ram[] jsou očekávány specifické hodnoty
* [4] pokud se ram[] liší od očekávané hodnoty, vypíše se to do konzole
* [4] pokud je vše OK, v konzoli nebude jediný "chybový" výpis
* [5] hotovo, konec

Samozřejmě lze si snadno změnit číslo DF stránky, kterou chcete testovat.

main
{

 var i, j;

 echo('[0] DF-RAM test start.');
 
 i = 0;
 loop1:
  ram[i] = i;
  i++;
 if (i < 512) goto loop1;

 echo('[1]');

 write_ram_block_to_dataflash_page(10, 100);

 echo('[2]');

 i = 0;
 loop2:
  ram[i] = 0;
  i++;
 if (i < 512) goto loop2;

 echo('[3]');
 
 read_dataflash_page_to_ram(10, 200);
 
 echo('[4]');

 i = 200;
 loop3:
  j = i - 100;
  if (ram[i] != j) { echo('NESOUHLAS: ram[',i,'] = ', ram[i],'  !=  ',j); }
  i++;
 if (i < (265)) goto loop3;

 echo('[5] HOTOVO');
 
 xloop:
  goto xloop;

}

.