<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Fonction Readconfig et check CRC ?]]></title><description><![CDATA[<p dir="auto">Hello,</p>
<p dir="auto">En relisant le code de la fonction readConfig, je ne comprend pas comment le crc calculé lors de la lecture de l'EEPROM est vérifié :</p>
<pre><code>
bool readConfig (bool clear_on_error) 
{	
	// For whole size of config structure
	for (uint16_t i = 0; i &lt; sizeof(_Config); ++i) {
		// read data
		data = EEPROM.read(i);
			
		// calc CRC
		crc = crc16Update(crc, data);
	}
	
	// CRC Error ?
	if (crc != 0) {    &lt;-----

</code></pre>
<p dir="auto">ne faudrait il pas plutôt tester dans le IF la valeur de la variable "crc" avec celle de "config.crc" ?</p>
<p dir="auto">je suis peut être passé a coté de quelque chose vu que suis nul en calcul de CRC <img src="http://community.ch2i.eu/assets/plugins/nodebb-plugin-emoji/emoji/android/1f609.png?v=fd8776ac13b" class="not-responsive emoji emoji-android emoji--wink" style="height:23px;width:auto;vertical-align:middle" title=";)" alt="😉" /></p>
<p dir="auto">a+</p>
<p dir="auto">Nicolas.</p>
]]></description><link>http://community.ch2i.eu/topic/210/fonction-readconfig-et-check-crc</link><generator>RSS for Node</generator><lastBuildDate>Sun, 15 Mar 2026 23:33:22 GMT</lastBuildDate><atom:link href="http://community.ch2i.eu/topic/210.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Dec 2016 16:20:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fonction Readconfig et check CRC ? on Sat, 10 Dec 2016 21:41:35 GMT]]></title><description><![CDATA[<p dir="auto">On ne teste pas ici le crc de chaque variable de config, mais le crc de toute la structure.<br />
Mes cours sur le CRC sont loin, mais ce qui est fait ici, c'est un calcul de crc sur chaque valeur de la config (et non sur l'objet "config"), qui contient elle-même une "sauvegarde" du crc. On fait donc un calcul de crc sur l'ensemble "config.* + config.crc", donc le résultat du modulo devrait être 0. Si le crc déjà calculé lors de la sauvegarde n'était pas stocké dans l'objet config, ça ne fonctionnerait pas pareil et on ferait une comparaison config.crc et crc.</p>
<p dir="auto">Par contre, l'extrait de code à été simplifié ? Parce que je n'y vois pas l'initialisation de crc avant la boucle.</p>
<p dir="auto">Sinon, pour simplifier la compréhension, le code dans la boucle aurait pu resembler à ça:<br />
ancienCRC = crc;<br />
crc = crc16Update(ancienCRC, data);</p>
]]></description><link>http://community.ch2i.eu/post/1952</link><guid isPermaLink="true">http://community.ch2i.eu/post/1952</guid><dc:creator><![CDATA[mjeanne]]></dc:creator><pubDate>Sat, 10 Dec 2016 21:41:35 GMT</pubDate></item></channel></rss>