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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-03-09T15:07:20+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2393&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-09T15:07:20+01:00</updated>
<published>2013-03-09T15:07:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30177#p30177</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30177#p30177"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30177#p30177"><![CDATA[
<div class="quotetitle">barney napisał(a):</div><div class="quotecontent"><br />Hmm... no faktycznie, macie rację <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Nie wiem tylko czy będę w stanie dokładnie wytłumaczyć jak ten kod działa (zdolności dydaktycznych nie mam wcale, a konstrukcje są trochę zakręcone). <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /></div><br /><br />Postaraj się wytłumaczyć w ogóle co to za urządzenie, jak działa - jego zalety, przewaga nad podobnymi rozwiązaniami - o takie rzeczy szczególnie - żeby mogło być to też inspiracją dla innych<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 mar 2013, o 15:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-09T14:50:51+01:00</updated>
<published>2013-03-09T14:50:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30173#p30173</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30173#p30173"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30173#p30173"><![CDATA[
Hmm... no faktycznie, macie rację <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Nie wiem tylko czy będę w stanie dokładnie wytłumaczyć jak ten kod działa (zdolności dydaktycznych nie mam wcale, a konstrukcje są trochę zakręcone). <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 9 mar 2013, o 14:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-03-09T14:43:27+01:00</updated>
<published>2013-03-09T14:43:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30171#p30171</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30171#p30171"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30171#p30171"><![CDATA[
<div class="quotetitle">Jaglarz napisał(a):</div><div class="quotecontent"><br />No to skoro uzyskałeś TUTAJ pomoc to może wypadałoby opublikować to TUTAJ w dziale DIY? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /></div><br /><br />dokładnie - sam bym z chęcią sobie o tym u nas poczytał <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> — 9 mar 2013, o 14:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2013-03-09T14:42:11+01:00</updated>
<published>2013-03-09T14:42:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30169#p30169</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30169#p30169"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30169#p30169"><![CDATA[
No to skoro uzyskałeś TUTAJ pomoc to może wypadałoby opublikować to TUTAJ w dziale DIY? <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=471">Jaglarz</a> — 9 mar 2013, o 14:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-09T14:33:54+01:00</updated>
<published>2013-03-09T14:33:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30168#p30168</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30168#p30168"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=30168#p30168"><![CDATA[
Jeżeli ktoś jest ciekaw, co się narodziło z projektu to zapraszam do wątku:<br /><!-- m --><a class="postlink" href="http://www.swiatelka.pl/viewtopic.php?t=10224" >http://www.swiatelka.pl/viewtopic.php?t=10224</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 9 mar 2013, o 14:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-22T15:17:48+01:00</updated>
<published>2013-02-22T15:17:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28941#p28941</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28941#p28941"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28941#p28941"><![CDATA[
Zgadza się. Przy operacjach bitowych następuje promocja do typu int o długości 16-bit. Zastosowałeś rzutowanie, ale ono ma wyższy priorytet niż przesunięcie i w efekcie rzutowałeś uint8_t na uint8_t, a nie wynik przesunięcia. Tak powinno być w tym przykładzie:<br />[syntax=c]if ((u08) (cfg_ram.ktory_tryb&lt;&lt;7) )[/syntax]<br />osobiście sądzę że lepszy jest taki zapis:<br />[syntax=c]if (cfg_ram.ktory_tryb &amp; 0x01 )[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 22 lut 2013, o 15:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-22T14:53:34+01:00</updated>
<published>2013-02-22T14:53:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28938#p28938</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28938#p28938"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28938#p28938"><![CDATA[
Dlaczego taki zapis działa jak powinien:<br />[syntax=c]licznik=cfg_ram.ktory_tryb&lt;&lt;7;<br />if (licznik) ... [/syntax]<br />natomiast zapisany już w ten sposób:<br />[syntax=c]if (cfg_ram.ktory_tryb&lt;&lt;7) ...[/syntax]<br />nie działa prawidłowo? Obie zmienne są oczywiście u08. Konstrukcja ta ma wykonywać 2 różne operacje w zależności od stanu najmłodszego bitu (a pozostałe pomijać). Przy drugim zapisie jeżeli cfg_ram.ktory_tryb jest większy od 0b00000001 zawsze wychodzi z warunku 1. Dokonuje się niejawne rzutowanie? Dodam, że taki zapis:<br />[syntax=c]if ((u08) cfg_ram.ktory_tryb&lt;&lt;7) ...[/syntax]<br />nie rozwiązuje problemu <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 22 lut 2013, o 14:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-19T22:29:11+01:00</updated>
<published>2013-02-19T22:29:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28721#p28721</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28721#p28721"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28721#p28721"><![CDATA[
Wielkie dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />W obydwu kodach ten sam błąd <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /><br />Pierwszy zadziałał od kopa, drugi dopiero po przypisaniu wartości początkowych do EEPROMu, ale ważne, że już działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 19 lut 2013, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-19T20:57:41+01:00</updated>
<published>2013-02-19T20:57:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28712#p28712</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28712#p28712"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28712#p28712"><![CDATA[
Tam ma być <strong>!=</strong> (wykrzyknik i równa się, czyli operator porównania <strong>różne</strong>) a nie <strong>|=</strong> (pionowa kreska i równa się)<br /><br />Po wyjściu z main jest cli(), a potem pętla nieskończona. Sprawdź sobie w pliku wynikowym. Dlatego to sei() na nic się zda. Wstaw jednak to while(1); to jeden rozkaz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 19 lut 2013, o 20:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-19T20:04:19+01:00</updated>
<published>2013-02-19T20:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28703#p28703</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28703#p28703"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28703#p28703"><![CDATA[
No faktycznie ta linia<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">    if (cfg_ram.eprOK|=15)    // Sprawdzenie poprawnosci EEPROM</div><br />jest dosyć radosną konstrukcją, ale powinna działać.<br />O ile dobrze pamiętam z <a href="http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html"  class="postlink">http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html</a> to wyzerowany EEPROM przyjmuje wartość 0xFF, więc ten zapis miał w sposób &quot;garażowy&quot; sprawdzać poprawność EEPROMu.<br />Jeżeli starczy mi miejsca to pewnie wrzucę sprawdzanie tego typu:<br />[syntax=c]//              Autor: barney<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;setup.h&quot;<br />#define AMC (1&lt;&lt;PB1)<br />#define PWM OCR0B<br />typedef uint8_t  u08;<br />typedef uint16_t u16;<br /><br />typedef struct<br />{<br />u08 tryb[9];<br />u16 strb_czasy[2];<br />u08 rower;<br />u08 strb;<br />u08 ktory_tryb;<br />u08 ignoruj_klik;<br />u16 crc;<br />} TCFG;<br /><br />const TCFG cfg_pgm PROGMEM =<br />{<br />{LVL1, LVL2, LVL3, LVL4, LVL5, LVL6, LVL7, LVL8, LVL9},<br />{STRB_OFF, STRB_ON},<br />0,<br />0,<br />5,<br />1,<br />0<br />};<br />TCFG cfg_ram;<br />TCFG cfg_epr  EEMEM;<br /><br />void epr_to_ram (void);<br />void ram_to_epr (void);<br /><br />int main (void)<br />{<br />epr_to_ram();// Odczytanie zawartosci EEPROM<br />/*if (cfg_ram.ignoruj_klik) cfg_ram.ignoruj_klik=0; else //Obsluga klikniec<br />{<br />cfg_ram.ktory_tryb++;<br />if (cfg_ram.ktory_tryb==TRYBY) cfg_ram.ktory_tryb=0;<br />}*/<br />cfg_ram.ktory_tryb++;<br />if (cfg_ram.ktory_tryb==TRYBY) cfg_ram.ktory_tryb=0;<br />ram_to_epr();<br />DDRB   |= AMC;    // kierunek pinu PB1 wyjsciowy<br />TCCR0A |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// faast PWM<br />TCCR0A |= (1&lt;&lt;COM0B1);// Clear OC0B on Compare Match<br />TCCR0B |= (1&lt;&lt;CS00);// prescaler 1<br />PWM=cfg_ram.tryb[cfg_ram.ktory_tryb];// Ustawienie trybu<br />/*_delay_ms (TTS);// Czekanie do zapamietania trybu<br />cfg_ram.ignoruj_klik=1;<br />ram_to_epr();*/<br />return 0;<br />}<br /><br />void epr_to_ram (void)<br />{<br />u08 temp;  u16 crc_check;<br /><br />eeprom_read_block(&amp;cfg_ram, &amp;cfg_epr, sizeof(cfg_ram));<br /><br />crc_check=cfg_ram.rower+cfg_ram.strb+cfg_ram.ktory_tryb+cfg_ram.ignoruj_klik;<br />for (temp=0; temp&lt;=1; temp++) crc_check+=cfg_ram.strb_czasy[temp];<br />for (temp=0; temp&lt;=8; temp++) crc_check+=cfg_ram.tryb[temp];<br />if (crc_check |= cfg_ram.crc) memcpy_P(&amp;cfg_ram, &amp;cfg_pgm, sizeof(cfg_ram));<br />}<br />void ram_to_epr (void)<br />{<br />u08 temp;<br /><br />cfg_ram.crc=cfg_ram.rower+cfg_ram.strb+cfg_ram.ktory_tryb+cfg_ram.ignoruj_klik;<br />for (temp=0; temp&lt;=1; temp++) cfg_ram.crc+=cfg_ram.strb_czasy[temp];<br />for (temp=0; temp&lt;=8; temp++) cfg_ram.crc+=cfg_ram.tryb[temp];<br /><br />eeprom_write_block(&amp;cfg_ram, &amp;cfg_epr, sizeof(cfg_ram));<br />}<br />[/syntax]<br />ale to zajmuje ~100B FLASHa, a jest go tutaj cały 1KB więc nie mam za bardzo czym szastać. <br />Nie wiem czemu, ale przy takiej konstrukcji układ działa trochę inaczej.<br />Przy starej od razu po zaprogramowaniu dioda zaczynała świecić zaprogramowana jasnością, a teraz dopiero po jednym restarcie (po zaprogramowaniu zachowuje się jakby nie mógł w ogóle nic sczytać) ...<br />Przy obydwu oczywiście nie można tej jasności normalnie zmienić...<br /><br />A sei(); będzie potrzebny w przyszłości (ochrona ogniwa, itp.), ale faktycznie obecnie jest niepotrzebny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 19 lut 2013, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2013-02-19T18:41:39+01:00</updated>
<published>2013-02-19T18:41:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28689#p28689</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28689#p28689"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28689#p28689"><![CDATA[
Ta linia jest podejrzana:<br />[syntax=c]if (cfg_ram.eprOK|=15)    // Sprawdzenie poprawnosci EEPROM[/syntax]<br />PS.<br />niepotrzebe jest <em>sei();</em><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 19 lut 2013, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-19T18:32:16+01:00</updated>
<published>2013-02-19T18:32:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28687#p28687</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28687#p28687"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28687#p28687"><![CDATA[
ok popatrzę wieczorkiem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lut 2013, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-19T17:45:29+01:00</updated>
<published>2013-02-19T17:45:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28684#p28684</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28684#p28684"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28684#p28684"><![CDATA[
Chyba się nie zrozumieliśmy...<br />PCB wygląda mniej-więcej tak: <!-- m --><a class="postlink" href="http://www.swiatelka.pl/upload_img/obrazki/IMG_4b42557f0f85d6012.jpg" >http://www.swiatelka.pl/upload_img/obra ... 5d6012.jpg</a><!-- m --><br />Włącznik podłącza i odłącza baterie od całego układu (razem z uC).<br /><br />Cały więc myk polega na tym, aby program ten analizując odpowiednie sekwencje kliknięć (przy czym kliknięciem jest tu odcięcie zasilania od uC) wrzucił odpowiednie wypełnienie na ster AMC7135.<br /><br />Chyba że ja czegoś nie zrozumiałem i to:<br /><br />int main (void)<br />{<br />      epr_to_ram();  <br />(...)<br />      return 0;<br />}<br />Nie jest głównym programem...<br />Pętli w stylu while (1)... Nie ma bo program ma (bardzo) szybko wykonać jakieś kombinacje po tej strukturze, zapisać ją, ustawić odpowiednie wypełnienie i zacząć idlować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 19 lut 2013, o 17:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-02-19T17:25:07+01:00</updated>
<published>2013-02-19T17:25:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28683#p28683</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28683#p28683"/>
<title type="html"><![CDATA[Re: ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28683#p28683"><![CDATA[
Panie, Panie .... haaaalo stop <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> bo wybiegłeś na pole ale jak to się mówi pługa zapomniałeś <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... a gdzie u ciebie pętla główna (czyli ten pług) ??? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />w tył zwrot i idź go zabrać <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> i używać<br /><br />bo teraz to w tym programie jakimś klawiszem to może MATRIX by zdążył <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />to nie jest w ogóle program <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 lut 2013, o 17:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-02-19T16:36:33+01:00</updated>
<published>2013-02-19T16:36:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28675#p28675</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28675#p28675"/>
<title type="html"><![CDATA[ATtiny13 problem z zapisem EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2393&amp;p=28675#p28675"><![CDATA[
Witam wszystkich <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Mam problem z (najprawdopodobniej) zapisem EEPROMu.<br />Kod ten ma trafić do procka w latarce LED (włącznik jedynie załącza i odcina baterie).<br /><br />main.c<br />[syntax=c]//              Autor: barney<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;setup.h&quot;<br />#define AMC (1&lt;&lt;PB1)<br />#define PWM OCR0B<br />typedef uint8_t  u08;<br />typedef uint16_t u16;<br /><br />typedef struct<br />{<br />u08 eprOK;<br />u08 tryb[9];<br />u16 strb_czasy[2];<br />u08 rower_clicks;<br />u08 rower;<br />u08 strb_clicks;<br />u08 strb;<br />u08 ktory_tryb;<br />u08 ignoruj_klik;<br />} TCFG;<br /><br />const TCFG cfg_pgm PROGMEM =<br />{<br />15,<br />{LVL1, LVL2, LVL3, LVL4, LVL5, LVL6, LVL7, LVL8, LVL9},<br />{STRB_OFF, STRB_ON},<br />ROWER,<br />0,<br />STRB,<br />0,<br />4,<br />1<br />};<br />TCFG cfg_ram;<br />TCFG cfg_epr  EEMEM;<br /><br />void epr_to_ram (void);<br />void ram_to_epr (void);<br />void pgm_to_ram (void);<br /><br />int main (void)<br />{<br />epr_to_ram();// Odczytanie zawartosci EEPROM<br />if (cfg_ram.eprOK|=15)   // Sprawdzenie poprawnosci EEPROM<br />{<br />pgm_to_ram();<br />ram_to_epr();<br />}<br />/*if (cfg_ram.ignoruj_klik) cfg_ram.ignoruj_klik=0; else //Obsluga klikniec<br />{<br />cfg_ram.ktory_tryb++;<br />if (cfg_ram.ktory_tryb==TRYBY) cfg_ram.ktory_tryb=0;<br />}*/<br />cfg_ram.ktory_tryb++;<br />if (cfg_ram.ktory_tryb==TRYBY) cfg_ram.ktory_tryb=0;<br />ram_to_epr();<br />sei();// Odblokowanie przerwan<br />DDRB   |= AMC;    // kierunek pinu PB1 wyjsciowy<br />TCCR0A |= (1&lt;&lt;WGM01)|(1&lt;&lt;WGM00);// faast PWM<br />TCCR0A |= (1&lt;&lt;COM0B1);// Clear OC0B on Compare Match<br />TCCR0B |= (1&lt;&lt;CS00);// prescaler 1<br />//PWM=64;<br />PWM=cfg_ram.tryb[cfg_ram.ktory_tryb];// Ustawienie trybu<br />/*_delay_ms (TTS);// Czekanie do zapamietania trybu<br />cfg_ram.ignoruj_klik=1;<br />ram_to_epr();*/<br />return 0;<br />}<br /><br />void epr_to_ram (void)<br />{<br />eeprom_read_block(&amp;cfg_ram, &amp;cfg_epr, sizeof(cfg_ram));<br />}<br />void ram_to_epr (void)<br />{<br />eeprom_write_block(&amp;cfg_ram, &amp;cfg_epr, sizeof(cfg_ram));<br />}<br />void pgm_to_ram (void)<br />{<br />memcpy_P(&amp;cfg_ram, &amp;cfg_pgm, sizeof(cfg_ram));<br />}<br />[/syntax]<br /><br />setup.h<br />[syntax=c]#define TRYBY 7  // Ile trybow ma miec driver (max 9)<br /><br />#define LVL1 255// Jasnosci trybow od tego do ktorego bedzie opadac<br />#define LVL2 8// max 255<br />#define LVL3 16<br />#define LVL4 32<br />#define LVL5 64<br />#define LVL6 128<br />#define LVL7 255<br />#define LVL8 0<br />#define LVL9 0<br /><br />#define STRB_OFF    100// Czasy stroboskopu w ms (max 65535)<br />#define STRB_ON     100<br /><br />#define ROWER 15// Ile klikow do trybu rowerowego (255 wylacza)<br />#define STRB        10// Ile klikow do trybu stroboskopowego (255 wylacza)<br /><br />#define TTS500// Czas w ms do zapamietania trybu<br />[/syntax]<br /><br />Klikanie włącznikiem (tzn. odcinanie zasilania) nie powoduje zmiany jasności...<br />Obecnie jasność zmienia się tylko jeżeli w definicji stałej struktury ładowanej do  PROGMEM zmienię wartość u08 ktory_tryb.<br />Kompilacja w Eclipse przechodzi bez  żadnych ostrzeżeń.<br />Aby mieć dostęp do EEPROMu trzeba ustawić jakieś FUSY?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 19 lut 2013, o 16:36</p><hr />
]]></content>
</entry>
</feed>