<?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=58&amp;t=20521&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-06T09:06:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=20521&amp;mode</id>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-06T09:06:15+01:00</updated>
<published>2018-04-06T09:06:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206529#p206529</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206529#p206529"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206529#p206529"><![CDATA[
No więc Mirku dziękuje za wskazówki, cenne, jak zwykle.<br />Zrobiłem nowy projekt na spokojnie tylko z pomiarem temp., 3 przyciski i struktury, jak w postach wyżej. Dodatkowo napisałem<br />krótkie funkcje wyświetlające aktualną wartość zmiennych temp_value i nastawy.temp_1;. Dzięki temu widziałem na żywym<br />organizmie w czasie rzeczywistym, co się dzieje w momencie przyciśnięcia guzika save itd..., czy te zmienne aktualizują się w poszczególnych pamięciach i kiedy (taki pseudo debuger  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> ).<br />Dzięki temu doszedłem, że muszę wstawić :<br /><br />[syntax=c]temp_value = nastawy.temp_1;<br />Time = nastawy.refresh_1;[/syntax]<br /><br />do pętli wchile(1), a nie do main, przed wchie(1). Tak przynajmniej sadzę, że prawidłowo. W każdym bądź razie wszystko teraz<br />działa zgodnie z założeniami  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . A już dodatkowe użycie przeze mnie zapisu do ram, to totalna porażka, jak pisałeś. Na usprawiedliwienie mogę tylko napisać, że nie potrafię nieraz zrobić sobie przerwy i iść na przysłowiowe piwko, tylko klepię coraz to<br />nowe głupoty w kodzie, kiedy główka już dawno nie pracuje. Efektem tego są potem takie herezje, jak wyżej <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /> <br />Do wszystkich, którzy zaczynają przygodę z C i nie tylko. To co Mirek napisał:<br /><br />1.Zatrzymać się, a najlepiej cofnąć wstecz.<br />2.Zrobić maleńki projekt dotyczący głównie problemu i go rozwiązać.<br />3.Wrócić do głównego projektu.<br />4.Zanim wstawisz jakiś kod na forum z zapytaniem, to zastanów się dobrze, a żeby potem kichy nie było..... <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br /><br />I na tym kończę, a żeby nie zasmiecać nadmiernie forum.<br /><br />Pozdrowionka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 6 kwi 2018, o 09:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-05T14:08:51+01:00</updated>
<published>2018-04-05T14:08:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206493#p206493</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206493#p206493"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206493#p206493"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />No tak, znowu podpadłem<br /></div><br />nieee no panie kolego skąd takie wnioski - staram się doradzać jak mogę - a to, że staram się odpisywać czasem na wiele wątków na forum, na maila, na PW na Skype itp powoduje, że piszę często skrótowo i w pośpiechu co nigdy nie oznacza, żebym się denerwował czy kogoś opierniczał czy coś tam<br /><br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />No to spróbuje na szablonie.<br /></div><br />Tak to bardzo dobry pomysł właśnie - spróbuj z tą jedną nastawą - sprawdź jak się będzie zachowywać - a jeśli pokażesz wtedy tutaj taki kod szablonowy, że tak powiem to i łatwiej będzie dopatrzeć gdzie robisz babola o ile sam go wcześniej nie znajdziesz ...<br /><br />Dla mnie programowanie to panie kochany w 50% takie działania na własnych projektach, co chwilę gdy coś nie działa trzeba umieć się cofnąć o krok, podzielić projekt, stworzyć obok kod testowy, albo i nowy projekt jako narzędzie do testowania itp itd ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 kwi 2018, o 14:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-05T13:13:13+01:00</updated>
<published>2018-04-05T13:13:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206492#p206492</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206492#p206492"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206492#p206492"><![CDATA[
Dzień dobry Panie Mirku.<br />No tak, znowu podpadłem  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> . A to wszystko przez to, że ja sobie wcześniej stworzyłem  projekt, który uruchamiam etapami.<br />Najpierw zrobiłem pomiary, potem temperaturę, potem wyświetlanie, a na końcu menu, które na tą chwilę jest na case i break, ponieważ<br />tylko ten sposób na tą chwilę w 99% rozumiem i mi działa. W końcu przyszła pora na zrobienie nastaw i zapamiętywanie w epromie.<br />Kiedy szablon ruszył, to zacząłem kombinować w docelowym programie, a tu zonk. Ruszyło w 50%.<br />No to spróbuje na szablonie. Ale przynajmniej domyślam się, że tak, jak Mirku napisałeś, to problem leży gdzie indziej, a ja muszę<br />się zastanowić, gdzie i co źle przemyślałem. Poza tym reszta funkcjonuje bardzo ładnie (przynajmniej tak myślę), choć całość, jak na<br />moje skromne możliwości jest spora <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> . Pozdrawiam i dzięki za odpisanie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 5 kwi 2018, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-05T12:37:07+01:00</updated>
<published>2018-04-05T12:37:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206490#p206490</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206490#p206490"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206490#p206490"><![CDATA[
Przede wszystkim KOLEJNA WAŻNA podpowiedź - PANIE kochany - panie kochany, jak testujesz kod bo ci coś nie działa - to zrób że wersję testową a nie rypiesz się, że tak powiem na KOMBAJNIE - zamiast na rowerze - gdzie łatwiej zawsze sprawdzić problem. Po co ci w tym kodzie MILION case'ów i nie wiadomo czego - a to tym bardziej zaciemnia obraz pytania - nie mówiąc już o tym, że tobie to samemu przede wszystkim przeszkadza w znalezieniu błędu. Ileż razy ja mówię - DZIELIĆ PROBLEM NA DWA ... Wystarczyłoby żebyś sobie stworzył nowy projekt i do niego SKOPIOWAŁ tylko tę JEDNĄ pozycję z którą masz problem. Inaczej mówiąc - wczoraj zrobiłeś taki ładny SZKIELET - to właśnie na nim sobie przetestuj zapis zmiennej włącznie z jej wyświetlaniem np na LCD z RAM. JAKIEJŚ jednej testowej zmiennej i jak zobaczysz że działa - to później w swoim kodzie będziesz wiedział, że BABOL nie jest w ogóle związany jakby z mechanizmem zapisu do eeproma.<br /><br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />ak zakombinować, a żeby zmiany<br />były od razu, czy powiedzmy zaraz po opuszczeniu menu. Próbowałem na logikę zaraz po copy_ram_to_eem(); dać<br />copy_eem_to_ram(),<br /></div><br /><br />Po jaki gwint po zapisie do eeprom - znowu kopiować z eeprom do RAM skoro MUSIAŁEŚ przecież tę wartość zapisać do RAM wcześniej aby zapisać do EEMEM - więc kółko maślane jakby chcesz robić ...<br /><br />Krótko mówiąc na moje oko - bo nie jestem w stanie analizować takich przepastnych kodów - masz babola gdzieś w kodzie ale nie jest on związany z kopiowaniem do eeproma<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 5 kwi 2018, o 12:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-05T12:24:18+01:00</updated>
<published>2018-04-05T12:24:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206488#p206488</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206488#p206488"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206488#p206488"><![CDATA[
Mam prośbę o ewentualną pomoc, podpowiedź w temacie.<br />W zasadzie prawie ogarnąłem zapisywanie ustawień, ale trochę się jeszcze gubię. Poniżej zamieszczam kawałek kodu, gdzie ustawiam<br />sobie temp. załączania wentylatora. Temp. do testu na palec, z tond takie dziwaczne.<br /><br />[syntax=c]case 3:<br /><br />buf_cls();<br />buf_locate(0,1);<br />buf_str_P(blower_temp);// wyswietla, gdzie jestem w submenu<br /><br />if(button_SUBMENU())// chodzenie po submenu<br />{<br />submenu_blower();<br />}<br /><br />    if(submenu_blower_element == 0)<br />    {<br />    buf_cls();<br />    buf_locate(0,1);<br />    buf_str_P(blower_temp);<br />    buf_locate(1,1);<br />    buf_str_P(low_temp);<br /><br />    if(button_SAVE())<br />    {<br />    nastawy.temp_1=27;// tu nadaje wartosc temp.<br />    copy_ram_to_eem();// przepisuje do epromu<br />         //copy_eem_to_ram();<br />    }<br />    }<br /><br />    if(submenu_blower_element == 1)<br />    {<br />    buf_cls();<br />    buf_locate(0,1);<br />    buf_str_P(blower_temp);<br />    buf_locate(2,1);<br />    buf_str_P(med_temp);<br /><br />    if(button_SAVE())<br />    {<br />    nastawy.temp_1=29;// wszystko, jak wyzej<br />    copy_ram_to_eem();<br />      //copy_eem_to_ram();<br />    }<br />    }<br /><br />    if(submenu_blower_element == 2)<br />    {<br />    buf_cls();<br />    buf_locate(0,1);<br />    buf_str_P(blower_temp);<br />    buf_locate(3,1);<br />    buf_str_P(high_temp);<br /><br />    if(button_SAVE())<br />    {<br />    nastawy.temp_1=31;<br />    copy_ram_to_eem();<br />     //copy_eem_to_ram();<br />    }<br />    }<br /><br />break;[/syntax]<br /><br />Kiedy przycisnę &quot;save&quot;, to się zapisuje, ale efekt jest dopiero po restarcie urządzenia. Rozumiem, dlaczego. Funkcja copy_eem_to_ram(); w main ( nie w submenu ), &quot;wgrywa&quot; nastawę dopiero przy starcie. Jak zakombinować, a żeby zmiany<br />były od razu, czy powiedzmy zaraz po opuszczeniu menu. Próbowałem na logikę zaraz po copy_ram_to_eem(); dać<br />copy_eem_to_ram(), ( mowa o submenu oczywiście ), ale to nie działa. Niżej main:<br /><br /><br />[syntax=c]copy_eem_to_ram();// z epromu do ramu przy starcie programu<br />//copy_ram_to_eem();<br />//copy_pgm_to_ram();<br />//load_defaults();<br /><br /><br />sei();// start przerwania<br /><br /><br />temp_value = nastawy.temp_1;// do temp_value przypisz ze struktury<br />Time = nastawy.refresh_1;// do Time przypisz ze struktury (zmienna dla tajmera)<br /><br /><br />while(1)<br />{<br />buf_refresh();<br /><br />menu_0(main_menu_element);<br /><br />if(button_MENU())// chodzenie po menu<br />{<br />main_menu();<br />}<br /><br />if(button_SAVE())// tymczasowo do testow<br />{<br /><br />copy_eem_to_ram();<br />lcd_cls();<br />lcd_locate(1,8);<br />lcd_str(&quot;save&quot;);<br />_delay_ms(2000);<br /><br />}<br /><br />//---------------------------------------------------------------<br /><br /><br />if(cel &gt;= temp_value)// cel z funkcji pomiaru temp, <br />{<br />PORTD |=(1&lt;&lt;PD1);// zapal LED<br />}<br /><br />else<br />{<br />PORTD &amp;= ~(1&lt;&lt;PD1);// zgas LED<br />}<br />}[/syntax]<br /><br /><br />Dałem nawet do testu dodatkową funkcję &quot;save&quot; z przycisku w pętli głównej, ale też nie idzie. Dopiero po restarcie są zmiany.<br />Trochę się pogubiłem. Co robię źle. Proszę zerknąć.<br /><br />Chciałem zaznaczyć, że korzystam z przerwań i czy jeszcze nie powinienem za każdym razem przy użyciu funkcji kopiujących<br />dawać cli(); , a po zapisie znów sei();<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 5 kwi 2018, o 12:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-04T11:20:29+01:00</updated>
<published>2018-04-04T11:20:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206449#p206449</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206449#p206449"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206449#p206449"><![CDATA[
No i super! <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... a jak jeszcze by się pojawiły jakieś pytania to wal śmiało jak w dym <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> — 4 kwi 2018, o 11:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-04T08:47:39+01:00</updated>
<published>2018-04-04T08:47:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206448#p206448</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206448#p206448"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206448#p206448"><![CDATA[
No więc Mirku wszystko stało się prostsze po zastosowaniu do poradnika. Przynajmniej na tym etapie. Od razu skorzystałem z opcji ustawień domyślnych.Do poprzedniego kodu ze strukturami dodałem 3 przyciski i dzięki nim widzę, co się dzieje i czy kopiowanie faktycznie się odbywa. Wszystko śmiga. teraz pozostaje mi zaadoptować do mojego małego projektu z wentylatorem. Dzięki za motywację i zawrócenie mnie ze złej drogi. Pozdrawiam. Kawałek kodu z pętli.<br /><br />[syntax=c]copy_eem_to_ram();<br />//copy_ram_to_eem();<br />//copy_pgm_to_ram();<br /><br />while(1)<br />{<br />if(button_SAVE())<br />{<br />copy_ram_to_eem();<br />//lcd_cls();<br />lcd_locate(1,8);<br />lcd_str(&quot;save&quot;);<br />_delay_ms(2000);<br />//lcd_cls();<br />}<br /><br />if(button_MENU())<br />{<br />copy_pgm_to_ram();<br />}<br /><br />if(button_SUBMENU())<br />{<br />copy_eem_to_ram();<br />}<br /><br />lcd_locate(2,8);<br />lcd_int(nastawy.temp_1);<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 4 kwi 2018, o 08:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-03T21:29:07+01:00</updated>
<published>2018-04-03T21:29:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206446#p206446</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206446#p206446"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206446#p206446"><![CDATA[
No ale właśnie o to chodzi - do testów nie trzeba zaraz milion plików robić - na początek prosto byle zrozumieć - a później już z górki poleci.<br /><br /><div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />sumie, to chodzi mi tylko o zapis ram eeprom,<br /></div><br />hmmm widzisz, gdyby nie to, że wiem czego ty pewnie jeszcze nie wiesz - skoro pierwszy raz zajmujesz się EEPROMem .. to wiedz, że czy chcesz czy nie - będziesz szybko potrzebował też tych wartości domyślnych ustawionych we Flash ... a przynajmniej sam się przekonasz jakie będzie to przydatne gdy zaczniesz już chociażby pierwsze testy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... ale spokojnie działaj dalej ... na niczym się TAK nie nauczymy jak na własnych ćwiczeniach i doświadczeniach ... bo tego już ci nikt nie odbierze a w głowie zostanie na zawsze <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> — 3 kwi 2018, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-03T21:25:38+01:00</updated>
<published>2018-04-03T21:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206445#p206445</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206445#p206445"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206445#p206445"><![CDATA[
Dziękuję Mirku.<br />Docelowo będzie podział na pliki. Jutro na innym kompie spróbuję ruszyć dalej. Tu tylko przygotowałem grunt. Raczkuję, ale lubię mieć porządek w kodzie, tzn.<br />wcięcia, komentarze itd...To mi utkwiło z książek i poradników. W sumie, to chodzi mi tylko o zapis ram eeprom, ale zrobiłem od razu taki, jak zauważyłeś szablon.<br />Będzie na przyszłość. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 3 kwi 2018, o 21:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-03T20:35:09+01:00</updated>
<published>2018-04-03T20:35:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206440#p206440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206440#p206440"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206440#p206440"><![CDATA[
no dokładnie o to chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> teraz możesz sobie dowolnie rozbudowywać strukturę o nowe zmienne jeśli zajdzie potrzeba a w kodzie nie będziesz musiał robić żadnych zmian pod kątem dodawania zapisów czy odczytów - tych kolejnych zmiennych <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Sam chyba widzisz, że teraz się sporo uporządkowało. Przygotowałeś ładny szkielet tego mechanizmu.<br /><br />Dodatkowo masz możliwość odzyskania DOMYŚLNYCH ustawień z FLASH'a <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> — 3 kwi 2018, o 20:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-03T20:28:04+01:00</updated>
<published>2018-04-03T20:28:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206439#p206439</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206439#p206439"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206439#p206439"><![CDATA[
A więc po słusznych uwagach i obejrzeniu poradnika na ten moment dotarłem do tego miejsca. Jeszcze nie wiem dokładnie, jak dalej wykorzystać, ale myślę nad<br />tym. Czy słusznie prawię ???<br /><br /><br />[syntax=c]#define TEMP_140// domyślne<br />#define TEMP_250<br />#define TEMP_360<br /><br />#define REFRESH_150<br />#define REFRESH_2100<br />#define REFRESH_3150<br /><br /><br />typedef struct {<br />uint8_t temp_1;<br />uint8_t temp_2;<br />uint8_t temp_3;<br /><br />uint8_t refresh_1;<br />uint8_t refresh_2;<br />uint8_t refresh_3;<br />} NASTAWY;<br /><br /><br />const NASTAWY pgm_nastawy PROGMEM = {<br /><br />                TEMP_1,<br />                TEMP_2,<br />                TEMP_3,<br /><br />REFRESH_1,<br />REFRESH_2,<br />REFRESH_3,<br />};<br /><br /><br />const NASTAWY pgm_nastawy PROGMEM;// Flash<br />NASTAWY enastawy EEMEM;// Eeprom<br />NASTAWY nastawy;// Ram<br /><br /><br />void copy_eem_to_ram(void);// deklaracje funkcji<br />void copy_ram_to_eem(void);<br />void copy_pgm_to_ram(void);<br /><br /><br />int main(void)<br />{<br /><br />// copy_pgm_to_ram();<br />// copy_eem_to_ram();<br /><br />while(1)<br />{<br /><br /><br />}<br />}<br /><br /><br /><br />// definicje funkcji<br />void copy_eem_to_ram(void)<br />{<br />eeprom_read_block(&amp;nastawy, &amp;enastawy, sizeof(nastawy));<br />}<br /><br />void copy_ram_to_eem(void)<br />{<br />eeprom_write_block(&amp;nastawy, &amp;enastawy, sizeof(nastawy));<br />}<br /><br />void copy_pgm_to_ram(void)<br />{<br />memcpy_P(&amp;nastawy, &amp;pgm_nastawy, sizeof(nastawy));<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 3 kwi 2018, o 20:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-03T17:10:30+01:00</updated>
<published>2018-04-03T17:10:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206433#p206433</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206433#p206433"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206433#p206433"><![CDATA[
<div class="quotetitle">Robert_1967 napisał(a):</div><div class="quotecontent"><br />No to zjechałeś mnie równo,<br /></div><br />Nie zjechałem - ale jak widzę na naszym forum, że ktoś brnie w takie dziwne rzeczy to wybacz mi, że reaguję - bo nie chcę aby później inni, którzy się uczą znajdowali coś takiego i próbowali się na czymś takim opierać - a później pisać na innych forach - że u nas są takie kiepskie porady ok ? Bo kto tam będzie pamiętał kto pytał a kto odpowiadał - zapamięta tylko że były jakieś przedziwne rozwiązania ...<br /><br />Poza tym chciałem tą oceną zmotywować - bo jak patrzę na datę pierwszego postu i twoje męczarnie to przez ten czas miałbyś już 5 razy ten poradnik przerobiony <br /><br />A nadmienię jeszcze raz - jeśli czegokolwiek nie zrozumiesz z poradnika to ŚMIAŁO TU PYTAJ - na pewno nie tylko ja chętnie pomogę - bo jak się człowiek czasem zatnie to później nie idzie jakoś - a gdy zaskoczysz to sam zobaczysz - że niepotrzebnie traciłeś czas z tymi pojedynczymi zmiennymi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 kwi 2018, o 17:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-03T15:57:48+01:00</updated>
<published>2018-04-03T15:57:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206432#p206432</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206432#p206432"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206432#p206432"><![CDATA[
Dziękuję Mirku.<br />No to zjechałeś mnie równo, że nie powiem, no ale pewnie masz rację, jak zwykle z resztą. W takim razie zabieram się za poradnik, bo szkoda więcej czasu marnować. A tak na marginesie, to jedną zmienną utworzyłem tylko do próby zapisania i odczytania. Jest ich więcej (no ale tu struktury trzeba będzie,jak<br />mówisz). Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 3 kwi 2018, o 15:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-03T15:14:52+01:00</updated>
<published>2018-04-03T15:14:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206430#p206430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206430#p206430"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206430#p206430"><![CDATA[
ja bardzo przepraszam ale kod jest kompletnie bez sensu .... nie dość, że upierasz się żeby zapisywać pojedyncze zmienne do EEPROM - kompletne nieporozumienie - no ale kto ci zabroni ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> można robić różne dziwne rzeczy - nawet bezsensowen - a cio tam <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />to jeszcze do zapisu zmiennej uint8_t wytaczasz działa w postaci najpierw<br /><br />[syntax=c]eeprom_update_block[/syntax]<br /><br />później opakowane w <br /><br />[syntax=c]copy_ram_to_eem[/syntax]<br /><br />gdzie na dodatek akurat copy z update ma tyle wspólnego co pięść z okiem .... no ale .... <br /><br />nie ma to jak masochizowanie się - zamiast obejrzenia poradnika wideo, który poleciłem i który pokazuje jak warto podejść do eeprom - gdzie każdy kto go obejrzał - zawsze stwierdził że to najprostsza, najpewniejsza i jedna z najlepszych metod <br /><br />a ty kręć dalej z zapisem pojedynczej zmiennej .... sorry ale kompletny nonsens robisz i idziesz w coraz ciemniejszą ślepą uliczkę. Im więcej na nią stracisz czasu tym później bardziej będziesz pluł sobie w brodę, że od razu nie zabrałeś się za to jak się należy - bo i tak koniec końców zawrócisz z tej uliczki ... no chyba, że działasz od przypadku do przypadku i za każdym projektem lubisz mieć z tym problemy &quot;od nowa&quot;<br /><br /><div class="quotetitle">zubik napisał(a):</div><div class="quotecontent"><br />musisz też zrobić bliźniaczą tablicę w pamięci eeprom:<br /></div><br />zubik sam pisałeś w jakimś wątku, że żałujesz już że wciąż omijasz struktury i unie ... tobie też polecam jeszcze raz obejrzeć ten poradnik i ew jeszcze raz - a gdy czegoś z niego nie zrozumiesz to co za problem tu zapytać - żeby w końcu zaskoczyć ... bo warto ... A zamiast tego męczysz te tablice w EEPROM <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> no to już i tak może nieco lepiej niż walka z pojedynczymi zmiennymi ale .... i tak męczarnia i problemy. Mówię ci - polecam też ten poradnik.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 3 kwi 2018, o 15:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-04-03T13:46:21+01:00</updated>
<published>2018-04-03T13:46:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206426#p206426</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206426#p206426"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206426#p206426"><![CDATA[
Witam po małej przerwie.<br />Próbowałem ogarnąć zapis do pamięci eeprom pojedyńczych zmiennych, ale coś mi nie wychodzi. W związku z tym napisałem kawałek kody, a żeby sprawdzić sam zapis bez reszty programu. Dla uproszczenia zrezygnowałem z tablic. Proszę o analizę, co tu mogłem zrobić<br />źle. Trochę zmieniłem składnie kolegi zubika. Dla jasności ustawiłem fusebit EESAVE, a żeby nie kasowało eeprom przy kolejnym ładowaniu wsadu. Przy pierwszym wgrywaniu wsadu mam &quot;wyłączoną funkcję wczytywania z eeprom&quot; //copy_eem_to_ram(); przed<br />wchile(1). Po uruchomieniu programu otrzymuję na ekranie liczbę 15, która jest rezultatem działania liczba=a*b, czyli jest ok.<br />           Następnie uruchamiam przycisk, który ma spowodować zapis do pamięci eeprom. Następnie włączam kopiowanie z ram do<br />eeprom przed while(1) copy_eem_to_ram();, kompiluję i wgrywam do atmegi8. Eeprom nie powinien być kasowany, a więc przy<br />ponownym uruchomieniu zestawu powinienem mieć załadowaną liczbę 15 z eepromu, a otrzymuje na ekranie 0.<br />W ustawieniach eclipse mam włączony eeprom do kompilacji.<br />Proszę podpowiedzieć, gdzie się pogubiłem, bo już ciężko myśleć. Może trochę dziwnie kombinuję, ale tak mam  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br /><br />Oto kod:<br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />//#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;buttons.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />#define EEMEM __attribute__((section(&quot;.eeprom&quot;)))<br /><br />uint8_t liczba;<br />uint8_t eliczba EEMEM;<br /><br />uint8_t a,b;<br /><br /><br />void copy_eem_to_ram(void);<br />void copy_ram_to_eem(void);<br /><br /><br />int main(void)<br />{<br />lcd_init();<br />lcd_cls();<br />buttons_init();<br /><br />a=3, b=5;<br />liczba=a*b;<br /><br />//copy_eem_to_ram();<br /><br />while(1)<br />{<br />if(button_SAVE())<br />{<br />copy_ram_to_eem();/<br />//lcd_cls();<br />lcd_locate(1,8);<br />lcd_str(&quot;save&quot;);<br />_delay_ms(2000);<br />//lcd_cls();<br />}<br /><br />lcd_locate(2,8);<br />lcd_int(liczba);<br />}<br />}<br /><br /><br /><br /><br />void copy_eem_to_ram(void)<br />{<br />eeprom_read_block (&amp;liczba, &amp;eliczba, sizeof (liczba));<br />}<br /><br />void copy_ram_to_eem(void)<br />{<br />eeprom_update_block (&amp;liczba, &amp;eliczba, sizeof (liczba));<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 3 kwi 2018, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-03-30T20:02:40+01:00</updated>
<published>2018-03-30T20:02:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206284#p206284</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206284#p206284"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206284#p206284"><![CDATA[
Bardzo dziękuję zubik za tak obszery tekst.<br /><br />O to mi chodziło, o ideę, a żebym załapał, o co kaman. Nie proszę o 100% kod, bo samemu trzeba podziałać. Widzę, że jest tu sporo podobnej koncepcji, jak pisał kolega Daro69, gdzie zapisywałem teksty. Tam też trzeba było bliźniacze tablice robić dla każdego rodzaju pamięci. No i te we flash były niezmienne, tylko do<br />odczytu. Dopiero we wtorek może popiszę i przetestuję, ale myślę, że podołam. Po niedzieli również będą punkty, a na razie wielkie dzięki i Wesołych Świąt<br />wszystkim forumowiczom. Pozdrawiam....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 mar 2018, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-03-30T16:53:06+01:00</updated>
<published>2018-03-30T16:53:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206270#p206270</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206270#p206270"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206270#p206270"><![CDATA[
Dzięki zubik.<br />Nie nie. W poście pokazałem przykładowe funkcje, dzięki którym kopiowałem sobie np. tablice tekstowe. Zmieniałem jakiś tekst na lcd i potem zapisywałem do eeprom. Potem przy starcie programu wczytywałem do ram z eeprom i było, co miało być. Nie ma żadnych struktur na tą chwilę.<br /><br />Teraz chcę zapamiętać ustawienia temperatury, przy której ma się włączyć wentylator. Gdyby była tylko jedna wartość (domyślna w programie), to nie musiałbym<br />zapamiętywać, ponieważ przy starcie domyślna się uruchomi, ale ja zrobiłem w podmenu możliwość wyboru 5 różnych wartości (coś na zasadzie termostatu) i <br />mogę sobie wybierać klawiszem pozycję. Po wyjściu z podmenu i menu do ekranu głównego program reaguje na nową nastawę, ale po restarcie uruchamia się<br />domyślna. Pewnie to jest proste, ale mi ciężko zaskoczyć. Mam przykładowo zmienną uint8_t temperatura;. Przypisuję jej różne wartości, jak nazwałem w <br />podmenu &lt;temperatury&gt;. Taras, jeśli wybiorę np. 30 C i jednocześnie przypiszę wartość 30, to chciałbym za pomocą np. przycisku zapisz zmiany zapisać.<br />Potem przy starcie ma tak być, jak ustawiłem. Sorki, że tyle piszę, ale już tak mam... <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> .<br />Oczywiście, jak załapię z tą temperaturą, to z innymi zmiennymi sobie pewnie poradzę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 mar 2018, o 16:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-03-30T15:03:31+01:00</updated>
<published>2018-03-30T15:03:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206263#p206263</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206263#p206263"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206263#p206263"><![CDATA[
Dziękuję Wam za pomoc.<br /><br />Poradniki oglądałem nie raz, tylko było to dawno, a że nie pisałem ostatnio nic związanego z w/w zapisem, to nie pamiętam. Obejrzę na &quot;świeżo&quot;.<br />Dzięki za podpowiedź.<br />Daro69.<br />Swego czasu ćwiczyłem sobie zapis tablic z tekstem pomiędzy flash, eeprom i ram. Wszystko grało. W Mirkowych funkcjach do zapisu podawałem, jako<br />argument (jeśli dobrze dobrałem słownictwo) nazwę tablicy, tablic i się kopiowało pomiędzy. To tzn. w tym przypadku, jako argument funkcji muszę podać<br />nazwę interesującej mnie zmiennej, jak to było z tablicami ? i jeśli mam np., przesadzam, dziesięć zmiennych, to muszę mieć dziesięć funkcji, po jednej dla<br />każdej, czy coś w tym rodzaju ?. Nie nie potrzebuję martwić się o adresy i kopiować wszystko w locie ?<br /><br />[syntax=c]void copy_eem_to_ram(void)<br />{<br />eeprom_read_block (&amp;tab1, &amp;tab2, sizeof(tab1));<br />}<br /><br />void copy_ram_to_eem(void)<br />{<br />eeprom_write_block (&amp;tab1, &amp;tab2, sizeof(tab1));<br />}[/syntax]<br /><br /><br />Jak bym mógł np. zastosować w tym przypadku przy jakichś zmiennych typu temperatura_1, temp_2......, itd ?<br /><br />Oczywiście użycie przycisku do tej akcji, użycie w main i w pętli jest mi znane.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 mar 2018, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-03-30T11:57:14+01:00</updated>
<published>2018-03-30T11:57:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206255#p206255</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206255#p206255"/>
<title type="html"><![CDATA[Re: Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206255#p206255"><![CDATA[
Hmm,<br />No to potrafisz już to co do takiej operacji jest potrzebne.<br />Zapisujesz w eepromie po dokonaniu zmian,<br />a odczytujesz przed pętlą while. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />chyba że nie zrozumiałem o co chodzi. :/<br /><br />Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 mar 2018, o 11:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Robert_1967]]></name></author>
<updated>2018-03-30T11:36:00+01:00</updated>
<published>2018-03-30T11:36:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206254#p206254</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206254#p206254"/>
<title type="html"><![CDATA[Kopiowanie ustawień programu do pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20521&amp;p=206254#p206254"><![CDATA[
Ostatnio podjąłem się wykonania prostego sterownika do wentylatorka. Użyłem w tym celu programu do obsługi czujnika DS18B20 i<br />oparłem się na programie z <span style="color: #0040BF">BB</span>. Napisałem małe menu i dzięki pomocy kolegów z forum wszystko ładnie<br />pracuje (menu). Mogę wybierać temperatury przyciskiem i diodka ładnie się zaświeca i gasi. Jedyne, czego nie wiem, jak dalej zacząć,<br />to zapamiętywanie ustawień po wyłączeniu. Zawsze wraca do domyślnych z programu.<br />Nauczyłem się zapisywać np. dane z wyświetlacza i potem po włączeniu odczytywać z eeprom. W tym przypadku nie interesują mnie<br />jakieś tam adresy w pamięci itp...Wystarczy, żeby tylko pamięci wystarczyło  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> , ale jak się to ma z zapisaniem wartości jakichś<br />zmiennych typu np. uint8_t temperatura; i potem po włączeniu uruchomienie z zapisanymi wcześniej zmianami, to nie wiem. Nigdy do<br />tej pory nie było mi to potrzebne i nie rozumiem zagadnienia.<br />Proszę o jakieś wsparcie w tym temacie i jak to ugryźć. Z góry dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10257">Robert_1967</a> — 30 mar 2018, o 11:36</p><hr />
]]></content>
</entry>
</feed>