<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=7528&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-06-22T11:11:46+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7528&amp;mode</id>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-06-22T11:11:46+01:00</updated>
<published>2014-06-22T11:11:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85359#p85359</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85359#p85359"/>
<title type="html"><![CDATA[Re: Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85359#p85359"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />No właśnie jak kasuje to to wartościami 0xFF <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /></div><br />Oczywiście, że jak kasuje się Eeprom to wartościami 0xFF. Miałem na myśli to, że może kolega Eepromu nie  kasuje a wcześniej zapisał tam jakieś zera. <br /><br />Co nie zmienia faktu, że gdyby informacja o wgrywaniu pliki .epp padła w pierwszym poście to rzuciła by całkiem inne światło na ten problem. A tak to się można tylko domyślać.<br /><br /><div class="quotetitle">mlynek131 napisał(a):</div><div class="quotecontent"><br />Nie bardzo rozumiem o co z tym chodzi. Wykorzystuje 12bajtów EEPROMu a tu jakieś takie dziwne rzeczy są.<br /></div><br />Poczytaj sobie troszkę o formacie zapisu plików Intel Hex np. <!-- m --><a class="postlink" href="http://pl.wikipedia.org/wiki/Intel_Hex" >http://pl.wikipedia.org/wiki/Intel_Hex</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 22 cze 2014, o 11:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlynek131]]></name></author>
<updated>2014-06-22T08:54:36+01:00</updated>
<published>2014-06-22T08:54:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85346#p85346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85346#p85346"/>
<title type="html"><![CDATA[Re: Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85346#p85346"><![CDATA[
O właśnie. Małą rzecz a cieszy <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Wyłączyłem wgrywanie .epp i działa tak jak powinno. Czyli trochę źle zrozumiałem sens wgrywania tego pliku. Myślałem że skoro programuje do EEPROM to muszę go wgrać, ale już CHYBA wiem jak to działa. Ta struktura TCFG config_eeprom EEMEM; jest tworzona w tym właśnie pliku (i domyślnie ma 0) więc to się wgrało do EEPROM. Dzięki wielkie Panie Mirku. Mam jeszcze jedno pytanie. Nie wiem czy brne w dobrym kierunku. Moja kolumna ma 2 wejścia sygnałowe. W zależności od wybranego wejścia (in_sel) wczytuję jeden zestaw parametrów i na nim dalej operuje. Aktualnie zrobiłem to w taki sposób, że w zależności od wybranego wejścia przepisuje wybrane parametry ze struktury do pojedynczych zmiennych i dalej już na nich operuję. <br />[syntax=c]void use_config(uint8_t input) {<br /><br />in_sel=config_ram.in_sel;<br />vol=config_ram.vol;<br /><br />if (input==3) {<br />in_gain=config_ram.in_gain;<br />bass=config_ram.bass;<br />treble=config_ram.treble;<br />l_att=config_ram.l_att;<br />r_att=config_ram.r_att;<br />}else if (input==2) {<br />in_gain=config_ram.in_gain2;<br />bass=config_ram.bass2;<br />treble=config_ram.treble2;<br />l_att=config_ram.l_att2;<br />r_att=config_ram.r_att2;<br />}<br /><br />}[/syntax]<br /><br />Na koniec zapisuje z powrotem do struktury i do EEPROM. Czy jest to dobre rozwiązanie czy lepiej byłoby to zrobić jakoś inaczej?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4605">mlynek131</a> — 22 cze 2014, o 08:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-06-21T23:00:48+01:00</updated>
<published>2014-06-21T23:00:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85323#p85323</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85323#p85323"/>
<title type="html"><![CDATA[Re: Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85323#p85323"><![CDATA[
<div class="quotetitle">jacekk232 napisał(a):</div><div class="quotecontent"><br />Może masz ustawiony fusebit EESAVE i pamięć Eeprom nie jest kasowana podczas np. wgrywania nowego wsadu<br /></div><br /><br />No właśnie jak kasuje to to wartościami 0xFF <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle">mlynek131 napisał(a):</div><div class="quotecontent"><br />Nie bardzo rozumiem o co z tym chodzi. Wykorzystuje 12bajtów EEPROMu a tu jakieś takie dziwne rzeczy są<br /></div><br /><br />Zrobiłeś strukturę tak? jako zmienną globalną tak? to co ? chyba normalne, że kompilator ją wyzeruje - nieprawdaż ?<br /><br />więc po wgraniu pliku *.eep będą te zera, a spróbuj wyłączyć wgrywanie pliku *.eep do procka - to zobaczysz co się stanie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 cze 2014, o 23:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlynek131]]></name></author>
<updated>2014-06-21T22:42:40+01:00</updated>
<published>2014-06-21T22:42:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85320#p85320</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85320#p85320"/>
<title type="html"><![CDATA[Re: Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85320#p85320"><![CDATA[
Fusebity są ustawione ok (kasowanie eeprom włączone). A czy w Eclipsie ustawia się gdzieś żeby kasował przy programowaniu? I czy mam dobrze zaznaczone w ustawieniach projektu AVR/AVRDude/FlashEEPROM/Upload EEPROM image from build ? Bo z tego co rozumiem to jest to wgrywanie pliku *.epp do avra przy programowaniu. Jak zajrzałem do tego pluczku to tam jest coś takiego:<br />[syntax=c]:0C000000000000000000000000000000F4<br />:00000001FF[/syntax]<br />Nie bardzo rozumiem o co z tym chodzi. Wykorzystuje 12bajtów EEPROMu a tu jakieś takie dziwne rzeczy są.<br />Postaram się jutro rano oczyścić kod ze zbędnych śmieci i wkleić całość.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4605">mlynek131</a> — 21 cze 2014, o 22:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-06-21T22:00:02+01:00</updated>
<published>2014-06-21T22:00:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85312#p85312</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85312#p85312"/>
<title type="html"><![CDATA[Re: Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85312#p85312"><![CDATA[
Może masz ustawiony fusebit EESAVE i pamięć Eeprom nie jest kasowana podczas np. wgrywania nowego wsadu. I być może w Eepromie, w obszarze zajętym przez strukturę, miałeś wcześniej zapisane zera. Dlatego teraz ci odczytuje takie dane.<br /><br />Mógłbyś jeszcze pokazać cały kod. Może tkwi w nim jakiś babol.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 21 cze 2014, o 22:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mlynek131]]></name></author>
<updated>2014-06-21T20:07:27+01:00</updated>
<published>2014-06-21T20:07:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85305#p85305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85305#p85305"/>
<title type="html"><![CDATA[Struktura w EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7528&amp;p=85305#p85305"><![CDATA[
Witam wszystkich. Na początku chciałem zaznaczyć, że jestem nowicjuszem w kwestii programowania i mogę robić dziwne błędy, za które z góry przepraszam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. <br />Problem wygląda następująco. Chcę zapamiętać kilka parametrów, które po ponownym włączeniu urządzenia zostaną odczytane. Zrobiłem to w oparciu o struktury tak jak w poradniku Pana Mirka. Struktura zawierająca parametry i funkcje kopiujące struktury z ram do eeprom, eeprom do ram oraz flash do ram. Wykonałem również sprawdzanie czy parametry są ustawione czy pamięć jest pusta i ewentualne wczytanie domyślnych wartości (tak jak w poradniku). Wszystkie funkcje działają dobrze, aczkolwiek sprawdzenie czy w pamięci nie ma samych wartości 0xFF nie daje oczekiwanego efektu, gdyż w sprawdzanym fragmencie pamięci (w obszarze używanym przez strukturę) znajdują się same 0. Dlaczego tam są 0 a nie FF?? Oczywiście można by dodać kolejny warunek i jeżeli są same zera to wczytać wartości domyślne, ale wg. Pana Mirka powinno to działać, więc muszę robić coś źle.<br /><br />Poniżej struktura:<br />[syntax=c]typedef struct {<br />uint8_t in_sel;<br />uint8_t in_gain;<br />uint8_t in_gain2;<br />uint8_t vol;<br />int8_t bass;<br />int8_t bass2;<br />int8_t treble;<br />int8_t treble2;<br />uint8_t l_att;<br />uint8_t l_att2;<br />uint8_t r_att;<br />uint8_t r_att2;<br />} TCFG;<br /><br />TCFG config_progm PROGMEM ={3,0,0,16,7,7,7,7,0,0,0,0};<br />TCFG config_eeprom EEMEM;<br />TCFG config_ram;[/syntax]<br /><br />A tutaj funkcje kopiujące:<br /><br />[syntax=c]void copy_eem_to_ram (void) {<br />eeprom_read_block(&amp;config_ram,&amp;config_eeprom,sizeof(config_ram));<br />}<br /><br />void copy_ram_to_eem (void) {<br />eeprom_write_block(&amp;config_ram,&amp;config_eeprom,sizeof(config_ram));<br /><br />}<br /><br />void copy_progm_to_ram(void) {<br />memcpy_P(&amp;config_ram,&amp;config_progm,sizeof(config_ram));<br />}[/syntax]<br /><br />I funkcje sprawdzająca i wczytująca parametry domyślne:<br /><br />[syntax=c]void load_defaults(void) {<br />copy_progm_to_ram();<br />copy_ram_to_eem();<br /><br />}<br /><br />void check_load_defaults (void) {<br />uint8_t i, len=sizeof(config_ram);<br />uint8_t *ram_wsk=(uint8_t*)&amp;config_ram;<br /><br />copy_eem_to_ram();<br /><br />for (i = 0; i &lt; len; i++) {<br />if (0xff == *ram_wsk++) continue;<br />break;<br />}<br /><br />if (i == len) {<br />load_defaults();<br />}<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4605">mlynek131</a> — 21 cze 2014, o 20:07</p><hr />
]]></content>
</entry>
</feed>