<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_DataFlash_functions</id>
	<title>FULL-C: DataFlash functions - Historie editací</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?action=history&amp;feed=atom&amp;title=FULL-C%3A_DataFlash_functions"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_DataFlash_functions&amp;action=history"/>
	<updated>2026-06-13T17:54:53Z</updated>
	<subtitle>Historie editací této stránky</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_DataFlash_functions&amp;diff=283&amp;oldid=prev</id>
		<title>Adamn v 27. 6. 2021, 08:58</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_DataFlash_functions&amp;diff=283&amp;oldid=prev"/>
		<updated>2021-06-27T08:58:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;cs&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Starší verze&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Verze z 27. 6. 2021, 08:58&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;Řádek 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Řádek 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zařízení SDS mají k dispozici NVM paměť DataFlash, ve které může mít FULL-C program uložené vlastní data. Tyto uložené informace nejsou ztraceny při výpadku napájení, nebo při resetu zařízení SDS, atd.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Zařízení SDS mají k dispozici NVM paměť DataFlash, ve které může mít FULL-C program uložené vlastní data. Tyto uložené informace nejsou ztraceny při výpadku napájení, nebo při resetu zařízení SDS, atd.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;__NOTOC__&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Paměť DataFlash je rozdělena na '''stránky''', kde každá stránka má pevnou přesnou velikost 264 bajtů.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Paměť DataFlash je rozdělena na '''stránky''', kde každá stránka má pevnou přesnou velikost 264 bajtů.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_DataFlash_functions&amp;diff=282&amp;oldid=prev</id>
		<title>Adamn: Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_DataFlash_functions&amp;diff=282&amp;oldid=prev"/>
		<updated>2021-06-27T08:58:17Z</updated>

		<summary type="html">&lt;p&gt;Založena nová stránka s textem „ Tato stránka popisuje programovací jazyk &amp;#039;&amp;#039;&amp;#039;FULL-C&amp;#039;&amp;#039;&amp;#039;, který je dostupný na vybraných zařízeních SDS.   Některá zařízení používají SDS-C,…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nová stránka&lt;/b&gt;&lt;/p&gt;&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Funkce pro práci s pamětí DataFlash ==&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mají k dispozici NVM paměť DataFlash, ve které může mít FULL-C program uložené vlastní data. Tyto uložené informace nejsou ztraceny při výpadku napájení, nebo při resetu zařízení SDS, atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Paměť DataFlash je rozdělena na '''stránky''', kde každá stránka má pevnou přesnou velikost 264 bajtů.&lt;br /&gt;
&lt;br /&gt;
Použitím FULL-C funkcí lze přistupovat ke kterékoliv stránce, která je programu FULL-C k dispozici (paměť DataFlash je použita nejenom pro FULL-C, ale i pro další účely, např. pro uchování uživatelské webové stránky).&lt;br /&gt;
&lt;br /&gt;
Program může použít tyto tři funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 unsigned int DF_read_page(unsigned int pageindex, void *pagedata);&lt;br /&gt;
 unsigned int DF_write_page(unsigned int pageindex, void *pagedata);&lt;br /&gt;
 unsigned int DF_erase_page(unsigned int pageindex);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Všechny funkce vracejí číselnou hodnotu: '''0''' (nula) v případě neúspěchu, nebo '''1''' pokud se úkol povedl.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Dostupná paměť ==&lt;br /&gt;
&lt;br /&gt;
K dispozici jsou stránky od indexu '''0''' (nula) (včetně) (úplně první stránka) až po index '''255''' (včetně) (úplně poslední použitelná stránka). To celkem odpovídá 67584 bajtům, které jsou k dispozici pro uložení vlastních uživatelských dat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Varování'' - omezte počet zápisů do paměti DataFlash, protože technologie, kterou je tato paměť vyrobena, umožňuje pouze několik desítek (až sto) tisíc zápisů (potom mohou začít vznikat chyby).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DF_read_page ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce přečte jednu vybranou stránku (264 bajtů) z pozice &amp;quot;pageindex&amp;quot; do připraveného pole (předaného funkci přes ukazatel &amp;quot;pagedata&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 unsigned int page;&lt;br /&gt;
 unsigned char buffer[264]; // vzdy minimalne 264 bajtu&lt;br /&gt;
&lt;br /&gt;
 page = cislo_stranky_sem; // zadejte index&lt;br /&gt;
&lt;br /&gt;
 if (DF_read_page(page, buffer) == 0)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;nepovedlo se přečíst stránku %u z DF\n&amp;quot;, page);&lt;br /&gt;
 } else&lt;br /&gt;
 {  &lt;br /&gt;
   printf(&amp;quot;stránka %u přečtena z DF\n&amp;quot;, page);&lt;br /&gt;
&lt;br /&gt;
   // vsech 264 bajtu ze stranky 'page' je k dispozici v buffer[]&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DF_write_page ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce zapíše (264 bajtů) do vybrané stránku na pozici &amp;quot;pageindex&amp;quot;, z připraveného pole (předaného funkci přes ukazatel &amp;quot;pagedata&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 unsigned int page;&lt;br /&gt;
 unsigned char buffer[264]; // vzdy minimalne 264 bajtu&lt;br /&gt;
&lt;br /&gt;
 page = cislo_stranky_sem; // zadejte index&lt;br /&gt;
&lt;br /&gt;
 buffer[0] = 10; // atd. - do buffer[] zapiste vse co chcete ulozit do pameti DataFlash&lt;br /&gt;
&lt;br /&gt;
 if (DF_write_page(page, buffer) == 0)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;nepovedlo se zapsat stránku %u do DF\n&amp;quot;, page);&lt;br /&gt;
 } else&lt;br /&gt;
 {  &lt;br /&gt;
   printf(&amp;quot;stránka %u zapsána do DF\n&amp;quot;, page);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DF_erase_page ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce vymaže jednu vybranou stránku (264 bajtů) na pozici &amp;quot;pageindex&amp;quot; - konkrétní stránka je vyplněna hodnotou 0xFF (výchozí stav paměti DataFlash, když je vymazána). Ostatní stránky nejsou změněny.&lt;br /&gt;
&lt;br /&gt;
Použití vymazání stránky je rychlejší a šetrnější, než mazat stránku pomocí zápisu přes DF_write_page().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 unsigned int page;&lt;br /&gt;
&lt;br /&gt;
 page = cislo_stranky_sem; // zadejte index&lt;br /&gt;
&lt;br /&gt;
 if (DF_erase_page(page) == 0)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;nepovedlo se smazat stránku %u v DF\n&amp;quot;, page);&lt;br /&gt;
 } else&lt;br /&gt;
 {  &lt;br /&gt;
   printf(&amp;quot;stránka %u smazána v DF\n&amp;quot;, page);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Změna jen části obsahu stránky ==&lt;br /&gt;
&lt;br /&gt;
Protože čtení i zápis (a mazání) pracuje vždy s '''celou''' stránkou (264 bajtů), je potřeba umět použít správné postupy, pokud je úkolem změna jen části obsahu stránky.&lt;br /&gt;
&lt;br /&gt;
Následující příklad ukazuje, jak na stránce &amp;quot;123&amp;quot; změnit pouze jeden bajt na této stránce, a to na offsetu [24] na konkrétní hodnotu &amp;quot;99&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 unsigned int page;&lt;br /&gt;
 unsigned char buffer[264]; // vzdy minimalne 264 bajtu&lt;br /&gt;
&lt;br /&gt;
 page = 123; // tento priklad pracuje se strankou cislo 123&lt;br /&gt;
&lt;br /&gt;
 if (DF_read_page(page, buffer) == 0)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;nepovedlo se přečíst stránku %u z DF\n&amp;quot;, page);&lt;br /&gt;
&lt;br /&gt;
   // takze nepokracujeme . . .&lt;br /&gt;
 } else&lt;br /&gt;
 {  &lt;br /&gt;
   // vsech 264 bajtu ze stranky 'page' je k dispozici v buffer[]&lt;br /&gt;
&lt;br /&gt;
   // provedu zmenu (zmeny atd.)&lt;br /&gt;
   buffer[10] = 99;&lt;br /&gt;
&lt;br /&gt;
   // a zapisu&lt;br /&gt;
   if (DF_write_page(page, buffer) == 0)&lt;br /&gt;
   {&lt;br /&gt;
     printf(&amp;quot;nepovedlo se zapsat stránku %u do DF\n&amp;quot;, page);&lt;br /&gt;
   } else&lt;br /&gt;
   {  &lt;br /&gt;
     printf(&amp;quot;stránka %u zapsána do DF\n&amp;quot;, page);&lt;br /&gt;
 &lt;br /&gt;
     // vse hotovo - v pameti DataFlash se na konkretni strance provedla jedina zmena, viz kod tohoto prikladu&lt;br /&gt;
   }&lt;br /&gt;
 } &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>