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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-08-21T21:06:54+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=22463&amp;mode</id>
<entry>
<author><name><![CDATA[Johnnny94]]></name></author>
<updated>2019-08-21T21:06:54+01:00</updated>
<published>2019-08-21T21:06:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221522#p221522</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221522#p221522"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221522#p221522"><![CDATA[
dodałem w ten sposób:<br />przed main:<br />[syntax=c]void save_to_eeprom(unsigned char* adres,unsigned char value);<br />uint8_t EEMEM czas = 1;[/syntax]<br /><br />pod całym programem:<br />[syntax=c]void save_to_eeprom(unsigned char* adres,unsigned char value)<br />{<br />eeprom_write_byte(adres,value);<br />}[/syntax]<br /><br />a w pętli głównej:<br />[syntax=c]if (PRZYCISK_CZAS_DOWN)<br />{<br />_delay_ms(150);<br />if (PRZYCISK_CZAS_DOWN)<br />{<br />save_to_eeprom(&amp;czas,(eeprom_read_byte(&amp;czas)+1));    <br />}<br />}[/syntax]<br /> <br />W tym momencie program kompiluje się bez błędów, natomiast nie świeci się żaden LED.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20830">Johnnny94</a> — 21 sie 2019, o 21:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-08-21T20:36:17+01:00</updated>
<published>2019-08-21T20:36:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221513#p221513</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221513#p221513"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221513#p221513"><![CDATA[
Tak dla pewności pytam, dodałeś ją w ten sposób?<br />void save_to_eeprom(unsigned char*, unsigned char);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 21 sie 2019, o 20:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Johnnny94]]></name></author>
<updated>2019-08-21T20:25:25+01:00</updated>
<published>2019-08-21T20:25:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221511#p221511</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221511#p221511"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221511#p221511"><![CDATA[
Jest dodana definicja funkcji:<br />void save_to_eeprom<br />Co jeszcze dodać bo nie do końca rozumiem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20830">Johnnny94</a> — 21 sie 2019, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Tom92]]></name></author>
<updated>2019-08-21T20:00:14+01:00</updated>
<published>2019-08-21T20:00:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221510#p221510</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221510#p221510"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221510#p221510"><![CDATA[
Dodaj definicje funkcji przed pętlą main<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11336">Tom92</a> — 21 sie 2019, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Johnnny94]]></name></author>
<updated>2019-08-21T18:27:07+01:00</updated>
<published>2019-08-21T18:27:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221497#p221497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221497#p221497"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221497#p221497"><![CDATA[
ok, jeżeli mam taki program to Atmel Studio wyrzuca mi błędy. <br />SeverityCodeDescriptionProjectFileLine<br />1. Id returned 1 exit status<br />2. undefined reference to `save_to_eeprom(unsigned char*, unsigned char)`<br /><br />W jaki sposób sobie z tym poradzić?<br />Na początek chcę aby działało zapamiętywanie stanu, który led się świecił przed odłączeniem zasilania.<br />Przepełnieniem pamięci będę martwić się później.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20830">Johnnny94</a> — 21 sie 2019, o 18:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2019-08-05T12:54:36+01:00</updated>
<published>2019-08-05T12:54:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221000#p221000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221000#p221000"/>
<title type="html"><![CDATA[Re: Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=221000#p221000"><![CDATA[
Takie rzeczy robi się na dwa sposoby.<br />1. Zapisuje stan do eeprom po każdej zmianie tego stanu (u Ciebie tak chyba jest) tylko, jeśli te zmiany są częste to eeprom się zajezdzi szybko.<br />2. Dodatkową końcówką procka bada się czy jest napięcie zasilające i w momencie jego zaniku dokonuje zapisu aktualnego stanu. Wadą jest bardziej skomplikowana elektronika, bo aż dwa elementy w podstawowej wersji może dojść <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Dioda i większej pojemności kondek, który utrzyma zasilanie po zaniku prądu. Pomiar robisz przed diodą. Jeśli z tego samego napięcia zasilane są peryferia to wskazane jest aby je programowo odłączyć.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 5 sie 2019, o 12:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Johnnny94]]></name></author>
<updated>2019-08-05T11:36:11+01:00</updated>
<published>2019-08-05T11:36:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=220997#p220997</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=220997#p220997"/>
<title type="html"><![CDATA[Podstawowe wykorzystanie pamięci EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22463&amp;p=220997#p220997"><![CDATA[
Witam, <br />mam taki problem, chciałem zacząć przygodę z pamięcią EEPROM i mam płytkę, na której przygotowałem 5 diod LED oraz przycisk. <br />Chodzi o to, żeby po naciśnięciu przycisku zapalał się kolejny LED, a po odłączeniu zasilania i ponownym podłączeniu dany LED świecił się dalej.<br />Mam taki kod:<br /><br />[syntax=c]#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 /><br />#define LED1 (1&lt;&lt;PC5)<br />#define LED1_ON PORTC |= LED1<br />#define LED1_OFF PORTC &amp;= ~LED1<br />#define LED1_TOG PORTC ^= LED1 <br />#define LED2 (1&lt;&lt;PC4)<br />#define LED2_ON PORTC |= LED2<br />#define LED2_OFF PORTC &amp;= ~LED2<br />#define LED2_TOG PORTC ^= LED2<br />#define LED3 (1&lt;&lt;PC3)<br />#define LED3_ON PORTC |= LED3<br />#define LED3_OFF PORTC &amp;= ~LED3<br />#define LED3_TOG PORTC ^= LED3<br />#define LED4 (1&lt;&lt;PD7)<br />#define LED4_ON PORTD |= LED4<br />#define LED4_OFF PORTD &amp;= ~LED4<br />#define LED4_TOG PORTD ^= LED4<br />#define LED5 (1&lt;&lt;PD6)<br />#define LED5_ON PORTD |= LED5<br />#define LED5_OFF PORTD &amp;= ~LED5<br />#define LED5_TOG PORTD ^= LED5<br /><br />#define PRZYCISK_CZAS (1&lt;&lt;PC0)<br />#define PRZYCISK_CZAS_DOWN (PINC &amp; PRZYCISK_CZAS) // MAKRO SPRAWDZAJĄCE STAN WYSOKI NA PRZYCISKU<br /><br />void save_to_eeprom(uint8_t * adres, uint8_t value);<br />uint8_t EEMEM czas=1;<br /><br />int main(void)<br />{<br />    DDRC |= LED1 | LED2 | LED3; //PC3-PC5 WYJŚCIA<br />    PORTC &amp;= ~LED1;<br />    PORTC &amp;= ~LED2;<br />    PORTC &amp;= ~LED3;<br />    DDRD |= LED4 | LED5; //PD6,PD7 WYJŚCIA<br />    PORTD &amp;= ~LED4;<br />    PORTD &amp;= ~LED5;<br /><br />while (1) <br />    {<br />if (PRZYCISK_CZAS_DOWN)<br />{<br />_delay_ms(150);<br />if (PRZYCISK_CZAS_DOWN)<br />{<br />save_to_eeprom(&amp;czas,(eeprom_read_byte(&amp;czas)+1));<br />}<br />}<br /><br />if (czas == 1)<br />{<br />LED1_ON;<br /><br />}<br />                if (czas == 2)<br />{<br />LED1_OFF;<br />LED2_ON;<br />}<br />                if (czas == 3)<br />{<br />LED2_OFF;<br />LED3_ON;<br />}<br />                if (czas == 4)<br />{<br />LED3_OFF;<br />LED4_ON;<br />}<br />                if (czas == 5)<br />{<br />LED4_OFF;<br />LED5_ON;<br />}<br />                if (czas == 6)<br />{<br />LED5_OFF;<br />czas = 1;<br />}<br />        }<br />}<br /><br />void save_to_eeprom(uint8_t * adres, uint8_t value)<br />{<br />eeprom_write_byte(adres,value);<br />}[/syntax]<br /><br />Proszę o wszelką pomoc w rozwiązaniu tego zadania <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=20830">Johnnny94</a> — 5 sie 2019, o 11:36</p><hr />
]]></content>
</entry>
</feed>