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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-06T17:41:59+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13387&amp;mode</id>
<entry>
<author><name><![CDATA[elradziu]]></name></author>
<updated>2015-11-06T17:41:59+01:00</updated>
<published>2015-11-06T17:41:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=144619#p144619</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=144619#p144619"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=144619#p144619"><![CDATA[
A więc po dłuższym czasie dorwałem się to mojego kiedyś własnoręcznie zrobionego pożal się boże zestawu avr:p I sprawdziłem zapis do eeprom na żywym organizmie bez symulacji. I okazuje się że obie metody działają. Tak więc coś nie tak jest z Proteusem. A szkoda bo naprawdę fajny programik, stosunkowo duże możliwości. Ale mimo wszystko posiada błędy. Symulacja rzecz fajna i polecam każdemu, ale należy pamiętać że to nie to samo że plątanina kabli pod rękami <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br /><br />Także temat zamykam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4660">elradziu</a> — 6 lis 2015, o 17:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2015-10-29T19:23:55+01:00</updated>
<published>2015-10-29T19:23:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143729#p143729</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143729#p143729"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143729#p143729"><![CDATA[
<strong> elradziu</strong>  -&gt; <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 29 paź 2015, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rskup]]></name></author>
<updated>2015-10-29T18:58:31+01:00</updated>
<published>2015-10-29T18:58:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143723#p143723</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143723#p143723"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143723#p143723"><![CDATA[
Jak chcesz mieć pewność, że nic Ci nie rozdzieli komend (np. żadne przerwanie) to użyj polecenia ATOMIC_BLOCK.<br />Opis masz w <a href="http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__util__atomic.html"  class="postlink">http://www.atmel.com/webdoc/AVRLibcReferenceManual/group__util__atomic.html</a><br /><br />-- <br />Pozdrawiam,<br />Robert<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3427">rskup</a> — 29 paź 2015, o 18:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elradziu]]></name></author>
<updated>2015-10-29T17:16:00+01:00</updated>
<published>2015-10-29T17:16:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143710#p143710</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143710#p143710"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143710#p143710"><![CDATA[
Przerwania są wyłączone, bo ten program miał tylko zapisywać co kolwiek pod określoną komórkę, w celu poznania zapisu do eeprom. Program zawierał funkcję int w której znajduje się tylko obsługa eeprom, a zaraz za tym pusta pętla nieskończona. :/ <br /><br />Może problem leży w tym że wszystko jest jako symulacja w programie PROTEUS, ale raczej nie powinno mieć to znaczenia bo wykorzystując makro SBI problemu nie ma. A wykorzystując bibliotekę eeprom.h także wszystko działa picuś glancuś.<br /><br />Tak działa:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">#define sbi(port, bit) __asm__ __volatile__ (&quot;sbi %0, %1&quot; :: &quot;I&quot; (_SFR_IO_ADDR(port)), &quot;I&quot; (bit))<br />#define cbi(port, bit) __asm__ __volatile__ (&quot;cbi %0, %1&quot; :: &quot;I&quot; (_SFR_IO_ADDR(port)), &quot;I&quot; (bit))<br />int main()<br /> { <br />    DDRB = 0xff;<br />    PORTB = 0x00;<br />   while(EECR &amp; (1&lt;&lt;EEWE))<br />      ;<br />   EEARH =0x00;<br />   EEARL = 0x01;<br />   EEDR = 0x22;<br />   sbi(EECR,EEMWE);<br />   sbi(EECR,EEWE);<br />   while(EECR &amp; (1&lt;&lt;EEWE))<br />      ;<br />   PORTB = 0xff;<br /><br />    <br />   // Write your code here<br />   while (1)<br />      ;<br />   return 0;<br /> }</div><br /><br />A tak nie działa:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">int main()<br /> { <br />    DDRB = 0xff;<br />    PORTB = 0x00;<br />   while(EECR &amp; (1&lt;&lt;EEWE))<br />      ;<br />   EEARH =0x00;<br />   EEARL = 0x01;<br />   EEDR = 0x22;<br />   EECR |= (1&lt;&lt;EEMWE);<br />   EECR |=(1&lt;&lt;EEWE);<br />   while(EECR &amp; (1&lt;&lt;EEWE))<br />      ;<br />   PORTB = 0xff;<br /><br />    <br />   // Write your code here<br />   while (1)<br />      ;<br />   return 0;<br /> }</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4660">elradziu</a> — 29 paź 2015, o 17:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-10-29T14:31:10+01:00</updated>
<published>2015-10-29T14:31:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143672#p143672</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143672#p143672"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143672#p143672"><![CDATA[
Hehe, też lubię znać pewne rzeczy od środka, ale z ręcznej obsługi EEPROMU się wyleczyłem jak poznałem możliwości w połączeniu ze strukturą. Nawet nie będę się rozpisywał ile mi to czasu zaoszczędziło i jakie przy tym zyskałem korzyści. Gdybym to chciał zrobić ręcznie lub w bascom'ie to bym... siadł i zapłakał <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Oczywiście warto znać mechanizmy jakie towarzyszą przy zapisie/odczycie/kasowaniu EEPROM, ale powiedzmy sobie szczerze - to pamięć, która raczej nie nadaje się do ciągłej wymiany danych podczas pracy programu, a jedynie do zapamiętywania konkretnych danych/ustawień/itp. Jestem pewien, że zawsze jest możliwość zrealizowania operacji tak, aby się to nie pogryzło z przerwaniami czy innymi peryferiami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 29 paź 2015, o 14:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-10-29T14:13:32+01:00</updated>
<published>2015-10-29T14:13:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143663#p143663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143663#p143663"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143663#p143663"><![CDATA[
Bo <div class="quotetitle">elradziu napisał(a):</div><div class="quotecontent"><br />Chcę wiedzieć jak to dokładnie działa.<br /></div>? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />Robiąc własną obsługę można zaimplementować takie fajne rzeczy jak obsługa na przerwaniach czy rozdzielenie zapisu od kasowania (w nowszych µC).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 29 paź 2015, o 14:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-10-29T13:45:45+01:00</updated>
<published>2015-10-29T13:45:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143659#p143659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143659#p143659"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143659#p143659"><![CDATA[
A tak z czystej ciekawości - dlaczego nie chcesz korzystać z biblioteki i jej dobrodziejstw?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 29 paź 2015, o 13:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2015-10-29T13:41:13+01:00</updated>
<published>2015-10-29T13:41:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143658#p143658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143658#p143658"/>
<title type="html"><![CDATA[Re: eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143658#p143658"><![CDATA[
Nie powinno być problemu ze zmieszczeniem się w 4 cyklach nawet z poziomu C. Gdy ustawiany jest jeden bit to kompilator zwykle sam tłumaczy to na instrukcję SBI, co możesz sobie podejrzeć w pliku .lss. Pewnie jakieś przerwanie się wykonuje - zablokuj je na czas wykonania tych instrukcji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 29 paź 2015, o 13:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elradziu]]></name></author>
<updated>2015-10-29T13:18:52+01:00</updated>
<published>2015-10-29T13:18:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143654#p143654</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143654#p143654"/>
<title type="html"><![CDATA[eeprom bez bilioteki avr/eeprom.h]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13387&amp;p=143654#p143654"><![CDATA[
Witam kolegów. Pisałem ostatnio kilka małych programików do obsługi różnych rzeczy w atmega8. I doszedłem do EEPROM. Tyle że nie chciałem wykorzystywać bibliteki avr/eeprom.h. Chcę wiedzieć jak to dokładnie działa. tak więc odpaliłem DataSheet. Poczytałem, napisałem program, można nawet powiedzieć że zerżnąłem z dokumentacji. Ku mojemu zdziwieniu program nie działa.<br /><br />Kluczowe okazały się dwie linie:   <br />EECR |= (1&lt;&lt;EEMWE);<br />EECR |= (1&lt;&lt;EEWE);<br /><br />Dokładnie w takiej kolejności jedna pod drugą. W dokumentacji wyraźnie napisane iż po ustawieniu bitu EEMWE nie może minąć więcej niż 4 cykle zegara. Ale okazuje się że między tymi komendami mija więcej czasu i trzeba korzystać ze wstawek asm. I teraz mam pytanie co się dzieje i ile cykli zegara mija po ustawieniu bitu EEMWE do ustawienia EEWE? Bo po wykorzystaniu wstawki sbi zapis do eeprom działa bez problemowo.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4660">elradziu</a> — 29 paź 2015, o 13:18</p><hr />
]]></content>
</entry>
</feed>