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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-11-14T17:34:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=4782&amp;mode</id>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T17:34:35+01:00</updated>
<published>2013-11-14T17:34:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56840#p56840</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56840#p56840"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56840#p56840"><![CDATA[
no to super że działa <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 17:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T16:53:20+01:00</updated>
<published>2013-11-14T16:53:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56826#p56826</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56826#p56826"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56826#p56826"><![CDATA[
Wgrałem Eclipsikiem i działa Twój programik z tym, że jest o 1kWh do tyłu.<br />tzn po uruchomieniu pokazuje 65535kWh po 1kWh pokazuje 0 a dopiero po drugiej 1.<br /><br />Ale &amp;kurnachatka też ma rację. Po zaznaczeniu tej opcji &quot;mój&quot; program też działa z tym , że dałem jeszcze małego ifa<br />tzn<br />[syntax=c]if (!kWh_stan) {kWh_stan=0; }[/syntax]<br />Wiedziałem, że sprawa jest prosta, ale nie wiedziałem że aż tak.<br /><br />Dzięki koledzy i koleżanki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 16:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T15:27:29+01:00</updated>
<published>2013-11-14T15:27:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56805#p56805</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56805#p56805"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56805#p56805"><![CDATA[
Coś musisz źle robić przy tym wgrywaniu. <br />zawsze możesz wgrać Eclipsikiem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 15:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T15:03:21+01:00</updated>
<published>2013-11-14T15:03:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56803#p56803</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56803#p56803"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56803#p56803"><![CDATA[
<div class="quotetitle">kurnachatka napisał(a):</div><div class="quotecontent"><br />Jak wgrywasz za pomocą Eclipsa to musi być włączona opcja &quot;from build&quot; przy eepromie w propertis w zakładce Flash/EEPROM.<br /></div><br />może to będzie to - zaznaczona opcja była &quot;do not upload eeprom image&quot; i zmieniłem jak na rysunku.<br /><a href="http://forum.atnel.pl/_obrazki/o/1988/882760332010379c59161d34d0e94962.jpg"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1988/882760332010379c59161d34d0e94962.jpg" alt="Obrazek" /></a><br /><br /><div class="quotetitle">Mipsa napisał(a):</div><div class="quotecontent"><br />W twoim programie nic nie zmieniałem oprócz zapisu i odczytu eeprom.<br /></div><br />OK - myślałem, że to jest hex z tego pierwszego Twojego linka.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 15:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T14:55:51+01:00</updated>
<published>2013-11-14T14:55:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56800#p56800</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56800#p56800"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56800#p56800"><![CDATA[
Napisze jeszcze raz. W twoim programie nic nie zmieniałem oprócz zapisu i odczytu  eeprom.<br />Diody zostały tak jak masz.  zaprogramowałem teraz  i przykładowo PD7 sobie mruga ładnie co 1 sek. Na terminalu widać wszystko co wysyła uC.<br />Oczywiście taktowanie na 8Mhz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kurnachatka]]></name></author>
<updated>2013-11-14T14:46:49+01:00</updated>
<published>2013-11-14T14:46:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56799#p56799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56799#p56799"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56799#p56799"><![CDATA[
Jak wgrywasz za pomocą Eclipsa to musi być włączona opcja &quot;from build&quot; przy eepromie w propertis w zakładce Flash/EEPROM.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=930">kurnachatka</a> — 14 lis 2013, o 14:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T14:23:36+01:00</updated>
<published>2013-11-14T14:23:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56797#p56797</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56797#p56797"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56797#p56797"><![CDATA[
Może wgrałem źle.<br />W MKAVRCalculatorze zaznaczam flash - wybieram plik Twój<br />Zaznaczam EEPROM i tez wybieram plik.<br /><br />Potem zakładka ZAPISZ  z lewej strony i na dole ZAPISZ do uC.<br />i potem cisza. Nic się nie dzieje i nic nie wyświetla.<br /><br />A wrzuć którąś diodę na PD7, PB0, PB1 lub PB2<br /><br />i jeszcze czy częstotliwość masz ustawioną na 8MHz czy 1MHz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 14:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T01:32:07+01:00</updated>
<published>2013-11-14T01:32:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56765#p56765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56765#p56765"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56765#p56765"><![CDATA[
Sprawdź dokładnie to co dałem we wcześniejszym załączniku. Zmieniłem tylko odczyt i zapis do eeprom. <br />A u mnie na terminal wszystko ładnie leciało.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 01:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T01:29:35+01:00</updated>
<published>2013-11-14T01:29:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56764#p56764</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56764#p56764"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56764#p56764"><![CDATA[
Muszę się przespać z tym tematem bo już sam nie wiem o co chodzi.<br />Czy EEMEM ma stać za kWh_stan_ee czy za kWh_stan. <br />Bo zmienna to ta druga, a ta pierwsza to adres.<br />Wydawało się to proste, ale poświęciłem już na tego EEPROMa z 20godzin i nie działa jak potrzeba.<br /><br />Idę dalej z programem nauki, a jego zostawię na koniec - może coś się dowiem ciekawego w międzyczasie.<br /><br />i powyrzucam te moje litanie do osobnych funkcji bo pętla while już jest praktycznie niewidoczna.<br /><br />Podeślij kod źródłowy a nie hexy<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 01:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T01:28:00+01:00</updated>
<published>2013-11-14T01:28:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56763#p56763</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56763#p56763"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56763#p56763"><![CDATA[
dziwne u mnie  wszystko działało no ale jak mówisz że nie działa ok<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 01:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T01:26:15+01:00</updated>
<published>2013-11-14T01:26:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56762#p56762</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56762#p56762"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56762#p56762"><![CDATA[
sprawdzałem - nic - cisza - nic nie miga (PD7 dioda) nic się nie dzieje na terminalu.<br /><br />ALe jeszcze jedna uwaga. NIe wiem co oznacza to resetowanie przez mkAVRCalculator, ale niestety działa po zliczeniu pierwszej kWh. czyli muszę odczekać parę godzin, żeby zresetować.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 01:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T01:22:48+01:00</updated>
<published>2013-11-14T01:22:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56761#p56761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56761#p56761"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56761#p56761"><![CDATA[
Podłącz terminal a zobaczysz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Dodałem odpowiednie biblioteki;)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 01:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T01:12:42+01:00</updated>
<published>2013-11-14T01:12:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56760#p56760</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56760#p56760"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56760#p56760"><![CDATA[
a może chodzi o te fusBity EESAVE=0 zmienić trzeba na EESAVE=1<br /><br />zaprogramowałem układ Twoim wsadem, ale nic się nie dzieje. Nie mam wyświetlacza żeby móc odczytać - tylko terminal. A w tym hexie nie ma biblioteki więc sam wsad niewiele daje<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 01:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mipsa]]></name></author>
<updated>2013-11-14T01:08:41+01:00</updated>
<published>2013-11-14T01:08:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56759#p56759</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56759#p56759"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56759#p56759"><![CDATA[
Sprawdź to co w załączniku.<br />Ja wykonałem zapis i odczyt . Tak jak wcześniej Ci to opisywałem w drugim temacie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1824">Mipsa</a> — 14 lis 2013, o 01:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-14T01:11:01+01:00</updated>
<published>2013-11-14T00:01:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56758#p56758</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56758#p56758"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56758#p56758"><![CDATA[
Dziwne Panie i Panowie, ale to niby działa.<br /><br />NIe wiem co prawda dlaczego, ale jakoś działa - już tłumacze.<br /><br />Po zaprogramowaniu uC robiłem reset przez odłączenie zasilania i za każdym razem program startował od 255 w górę zliczając kWh. Tak to testowałem i dlatego nigdy nie działało.<br /><br />A zadziałało jak nie odłączając uC uruchomiłem mkAVR Calculator i dałem odczyt danych.<br />Po odczycie resetował się układ i zlicza już poprawnie od zera a nie od 255. Jak się teraz odłączy zasilanie to będzie kontynuował zliczanie ale od wartości mniejszej o 1 - tak jakby ostatni zapis odbywał się tylko na ekranie, bo teraz każdorazowy reset nie powoduje cofnięcia się licznika, ale po ponownym zaprogramowaniu znowu trzeba odpalić mkAVRCalculator i odczytać układ. <br /><br />O co w tym chodzi? Nic nie programuje w tym programie tylko robię odczyt.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 14 lis 2013, o 00:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-11-13T21:33:26+01:00</updated>
<published>2013-11-13T21:33:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56744#p56744</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56744#p56744"/>
<title type="html"><![CDATA[Re: Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56744#p56744"><![CDATA[
tu może sobie poczytaj o eeprom <br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/11/avr-eeprom-struktury-poradnik-do-ksiazek.html" >http://mirekk36.blogspot.com/2012/11/av ... iazek.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 lis 2013, o 21:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2013-11-13T21:18:57+01:00</updated>
<published>2013-11-13T21:18:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56740#p56740</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56740#p56740"/>
<title type="html"><![CDATA[Zapis i odczyt z EEPROM]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=4782&amp;p=56740#p56740"><![CDATA[
Witajcie.<br />Mimo czystego przykładu wciąż nie mogę nic zapisać do EEPROM.<br />Przykłady są łatwe i czytelnie opisane - ale mimo to jedne działają a inne nie - czyli to nie taka prosta rzecz. Np. <a href="http://hobby.abxyz.bplaced.net/index.php?pid=8&amp;tid=54"  class="postlink">http://hobby.abxyz.bplaced.net/index.php?pid=8&amp;tid=54</a><br />jest napisane, że z EEPROMA korzystamy w ten sposób<br />[syntax=c]uint8_t eadres;<br />uint8_t edata;<br />eeprom_write_byte((uint8_t*)eadres,edata);<br />edata=eeprom_read_byte((uint8_t*)eadres);[/syntax]<br /><br />lub ten sposób<br />[syntax=c]uint8_t *eadres;<br />uint8_t edata;<br />eeprom_write_byte(eadres,edata);<br />edata=eeprom_read_byte(eadres);[/syntax]<br />ten pierwszy przypadek mi się nie kompiluje, ale drugi jak najbardziej:<br />i mam zrobione w taki sposób:<br />[syntax=c]//EEPROM<br />uint16_t kWh_stan = 0;<br />uint16_t *uiAddress;<br /><br />//Wczytanie z pamieci EEPROM<br /> kWh_stan = eeprom_read_byte (uiAddress);<br /><br /> kWh_stan = kWh_stan+1 ;<br /> cli();<br />eeprom_write_byte (uiAddress, kWh_stan); // zapis do eeprom<br /> sei();[/syntax]<br /><br />i co ciekawe pod zmienną kWh_stan jest dziesiętnie liczba 255.<br /><br />Za pierwszym razem zadeklarowałem zmienną <br />[syntax=c]uint16_t kWh_stan EEMEM = 0x00;[/syntax], żeby zmienić jej wartość z FF na 00. Ale po takiej operacji zamiast 0 odczytuje z EEPROM dziesiętnie 128.<br /><br />a jeszcze na takiej stronie <a href="http://www.if.pw.edu.pl/~agatka/psm/wyklad_02.pdf"  class="postlink">http://www.if.pw.edu.pl/~agatka/psm/wyklad_02.pdf</a><br />jest zapisywanie i odczytywanie tak zrobione:<br /><br />[syntax=c]uint8_t zmienna EEMEM = 128;<br />uint8_t wartosc = eeprom_read_byte(&amp;zmienna);<br />eeprom_write_byte(&amp;zmienna, wartosc);[/syntax]<br />i też nie działa.<br /><br />A może działa tylko jest błąd w kodzie?<br /><br />cały projekt wygląda tak:<br />[syntax=c]/*<br /> * main.c<br /> * Atmega 8A 8MHz<br /> */<br />// Podpinamy biblioteki<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br /><br />// Podpinamy własne biblioteki<br />#include &quot;MYUART/myuart.h&quot;<br />#include &quot;MK_TERMINAL/mk_term.h&quot;<br /><br />//Włączamy przetowrnik ADC na wszystkich kanałach<br />inline void set_chanel( uint8_t kanal ) {<br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br />}<br /><br />// timery programowe<br />volatile uint16_t Timer1, Timer2;<br /><br />//Ustalenie ilosci pomiarow do usrednienia. Czym wiecej tym wolniejsze zmiany liczby tylko 1,2,4,8,16<br />#define SR1 16<br />#define SR2 16<br />#define SR3 16<br />#define SR4 16<br />#define SR5 16<br />#define SR6 16<br /><br /><br />//Definiujemy strukturę<br />typedef struct {<br />uint8_t idx;<br />uint16_t adc_mid;<br />uint16_t ref_adc;<br />uint16_t ref_v;<br />char v1&#91;3&#93;;<br />char v2&#91;3&#93;;<br />} TVOL;<br /><br />TVOL nap1, nap2, nap3, nap4, nap5, nap6; // nasze główne zmienne<br /><br />double Moc;<br />uint8_t bieg=1;<br />uint8_t Nap=0;<br /><br />uint16_t asr1&#91;SR1&#93;;<br />uint16_t asr2&#91;SR2&#93;;<br />uint16_t asr3&#91;SR3&#93;;<br />uint16_t asr4&#91;SR4&#93;;<br />uint16_t asr5&#91;SR5&#93;;<br />uint16_t asr6&#91;SR6&#93;;<br /><br />volatile uint16_t wynik;<br /><br />//EEPROM<br />uint16_t kWh_stan EEMEM = 0x00;<br />uint16_t *uiAddress;<br /><br /><br />uint16_t vtab&#91;6&#93;; //Ustalenie ilosci zmiennych<br /><br />uint16_t pomiar( uint8_t kanal );<br />void get_vol1( uint16_t adc, TVOL * voltage, uint16_t * sr_1 );<br />void get_vol2( uint16_t adc, TVOL * voltage, uint16_t * sr_2 );<br />void get_vol3( uint16_t adc, TVOL * voltage, uint16_t * sr_3 );<br />void get_vol4( uint16_t adc, TVOL * voltage, uint16_t * sr_4 );<br />void get_vol5( uint16_t adc, TVOL * voltage, uint16_t * sr_5 );<br />void get_vol6( uint16_t adc, TVOL * voltage, uint16_t * sr_6 );<br /><br />#define REF_256 (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0)<br />#define REF_VCC (1&lt;&lt;REFS0)<br /><br />#define LED1 (1&lt;&lt;PB0)<br />#define LED2 (1&lt;&lt;PB1)<br />#define LED3 (1&lt;&lt;PB2)<br />#define LED4 (1&lt;&lt;PD7)<br />#define LED1_ON PORTB |= LED1<br />#define LED2_ON PORTB |= LED2<br />#define LED3_ON PORTB |= LED3<br />#define LED1_OFF PORTB &amp;= ~LED1<br />#define LED2_OFF PORTB &amp;= ~LED2<br />#define LED3_OFF PORTB &amp;= ~LED3<br />#define LED1_TOG PORTB ^= LED1<br />#define LED2_TOG PORTB ^= LED2<br />#define LED3_TOG PORTB ^= LED3<br />#define LED4_TOG PORTD ^= LED4<br /><br />int main( void ) {<br /><br />DDRB |= LED1 | LED2 | LED3; //Ustawiamy PB0 i PB1 i PB2 jako wyjscia<br />DDRD |= LED4;<br /><br />// inicjalizacja ADC<br />ADCSRA |= (1&lt;&lt;ADEN); // włącz ADC<br />ADCSRA |= (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0); // preskaler<br />ADCSRA |= (1&lt;&lt;ADIE); // Free Runing Mode plus Interrupt enable<br />ADMUX |= REF_VCC;// ustawiamy wewn. źr odn. 2,56V<br /><br />//************************* KALIBRACJA CZUJNIKÓW ******************************<br /><br />nap1.ref_adc = 597;<br />nap1.ref_v = 2000;<br /><br />nap2.ref_adc = 1023;<br />nap2.ref_v = 500;<br /><br />nap3.ref_adc = 300;<br />nap3.ref_v = 600;<br /><br />nap4.ref_adc = 400;<br />nap4.ref_v = 600;<br /><br />nap5.ref_adc = 500;<br />nap5.ref_v = 600;<br /><br />nap6.ref_adc = 150;<br />nap6.ref_v = 5;<br /><br />//************************* INIZJALIZACJA UART ********************************<br />uart_init( __UBRR );<br /><br />//************************* Wyswietlanie na Ekran Terminala *********************<br /><br />tr_cls(0);<br />uart_puts( &quot;miernik napięcia:&quot; );<br />_delay_ms( 1 );<br />tr_cls(1);<br /><br />tr_locate(0,3);<br />tr_attr(1,YELLOW,BLACK);<br />uart_puts( &quot;ATmega8 &quot;);<br /><br />tr_locate(4,3);<br />tr_attr(1,RED,BLUE);<br />uart_puts( &quot;6 KANAŁOWY MIERNIK NAPIĘCIA &quot;);<br /><br />set_chanel( PC0 );<br />sei();<br />ADCSRA |= (1&lt;&lt;ADSC);  // start konwersji<br /><br />uint16_t tmp_wynik1=0;<br />uint16_t tmp_wynik2=0;<br />uint16_t tmp_wynik3=0;<br />uint16_t tmp_wynik4=0;<br />uint16_t tmp_wynik5=0;<br />uint16_t tmp_wynik6=0;<br /><br /> /* Timer2 – konfigurcajca Timera 8bit w trybie NORMAL */<br /> TCCR2  |= (1&lt;&lt;CS22)|(1&lt;&lt;CS21)|(1&lt;&lt;CS20); // preskaler = 1024<br /> OCR2  = 78;   // przerwanie porównania co 10ms (100Hz) troche niedokladnie bo powinno byc 78,125 ale przy tym zegarze nic sie nie da zrobic<br /> TIMSK  = (1&lt;&lt;OCIE2); // Odblokowanie przerwania CompareMatch<br /><br /> sei();<br /><br />//Wczytanie z pamieci EEPROM<br /> kWh_stan = eeprom_read_byte (uiAddress);<br />//********** Start Pętli głównej *****************************<br />while(1) {<br /><br />uint8_t sreg = SREG;<br />cli();<br />tmp_wynik1 = vtab&#91;0&#93;;//wynik;<br />tmp_wynik2 = vtab&#91;1&#93;;//wynik;<br />tmp_wynik3 = vtab&#91;2&#93;;//wynik;<br />tmp_wynik4 = vtab&#91;3&#93;;//wynik;<br />tmp_wynik5 = vtab&#91;4&#93;;//wynik;<br />tmp_wynik6 = vtab&#91;5&#93;;//wynik;<br /><br />SREG = sreg;<br /><br />get_vol1( tmp_wynik1, &amp;nap1, asr1 );<br />get_vol2( tmp_wynik2, &amp;nap2, asr2 );<br />get_vol3( tmp_wynik3, &amp;nap3, asr3 );<br />get_vol4( tmp_wynik4, &amp;nap4, asr4 );<br />get_vol5( tmp_wynik5, &amp;nap5, asr5 );<br />get_vol6( tmp_wynik6, &amp;nap6, asr6 );<br /><br /><br />tr_locate(7,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC0 &quot;);<br />uart_putlong( vtab&#91;0&#93;, 10 );<br />uart_puts( &quot; / 1023&quot;);<br />tr_locate(7,20);<br />uart_puts( &quot;napięcie: &quot;);<br />uart_puts( nap1.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap1.v2 );<br />uart_puts( &quot; V       &quot;);<br /><br />tr_locate(8,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC1 &quot;);<br />uart_putlong( vtab&#91;1&#93;, 10 );<br />uart_puts( &quot; / 1023&quot;);<br />tr_locate(8,20);<br />uart_puts( &quot;napięcie: &quot;);<br />uart_puts( nap2.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap2.v2 );<br />uart_puts( &quot; V       &quot;);<br /><br />tr_locate(9,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC2 &quot;);<br />uart_putlong( vtab&#91;2&#93;, 10 );<br />uart_puts( &quot; / 1023&quot;);<br />tr_locate(9,20);<br />uart_puts( &quot;napięcie: &quot;);<br />uart_puts( nap3.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap3.v2 );<br />uart_puts( &quot; V       &quot;);<br /><br />tr_locate(10,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC3 &quot;);<br />uart_putlong( vtab&#91;3&#93;, 10 );<br />uart_puts( &quot; / 1023&quot;);<br />tr_locate(10,20);<br />uart_puts( &quot;napięcie: &quot;);<br />uart_puts( nap4.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap4.v2 );<br />uart_puts( &quot; V       &quot;);<br /><br />tr_locate(11,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC4 &quot;);<br />uart_putlong( vtab&#91;4&#93;, 10 );<br />uart_puts( &quot; / 1023&quot;);<br />tr_locate(11,20);<br />uart_puts( &quot;napięcie: &quot;);<br />uart_puts( nap5.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap5.v2 );<br />uart_puts( &quot; V       &quot;);<br /><br />tr_locate(12,3);<br />tr_attr(1,MAGENTA,BLACK);<br />uart_puts( &quot;PC5 &quot;);<br />uart_putlong( vtab&#91;5&#93;, 10 );<br />uart_puts( &quot; / 1023 &quot;);<br />tr_locate(12,20);<br />uart_puts( &quot;natężenie: &quot;);<br />uart_puts( nap6.v1 );<br />uart_puts( &quot;.&quot;);<br />uart_puts( nap6.v2 );<br />uart_puts( &quot; A       &quot;);<br /><br /><br />//   funkcja atol - zamiana stringa na integer * 100<br />uint32_t Nap1 = ( atol (nap1.v1)) * 100 + ( atol (nap1.v2));<br />uint32_t Nat6 = ( atol (nap6.v1)) * 100 + ( atol (nap6.v2));<br />uint32_t Moc1 = Nap1 * Nat6 / 10000;<br /><br />   if (Timer2 == 0){<br /><br />//KASKADA START<br /><br /> Nap = Nap1 / 100;<br />        if ((Nap&lt;30) &amp;&amp; (bieg == 1) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_OFF;<br /> LED3_OFF;<br /> bieg = 1; //Ustawiamy 67W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;30) &amp;&amp;  (bieg == 1) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_ON;<br /> LED3_OFF;<br /> bieg = 2; //Ustawiamy 100W<br /> Timer1 = 100;<br />     }<br /> if ((Nap&lt;20) &amp;&amp; (bieg == 2) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_OFF;<br /> LED3_OFF;<br /> bieg = 1; //Ustawiamy 67W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;20) &amp;&amp; (Nap&lt;30) &amp;&amp; (bieg == 2) &amp;&amp; (Timer1 == 0)){<br /> LED1_OFF;<br /> LED2_ON;<br /> LED3_OFF;<br /> bieg = 2; //Ustawiamy 100W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;30) &amp;&amp; (bieg == 2) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_OFF;<br /> bieg = 3; //Ustawiamy 200W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&lt;20) &amp;&amp; (bieg == 3) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_ON;<br /> LED3_OFF;<br /> bieg = 2; //Ustawiamy 100W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;20) &amp;&amp; (Nap&lt;30) &amp;&amp; (bieg == 3) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_OFF;<br /> bieg = 3; //Ustawiamy 200W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;30) &amp;&amp; (bieg == 3) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 4; //Ustawiamy 300W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&lt;20) &amp;&amp; (bieg == 4) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_OFF;<br /> bieg = 3; //Ustawiamy 200W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;20) &amp;&amp; (Nap&lt;30) &amp;&amp; (bieg == 4) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 4; //Ustawiamy 300W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;30) &amp;&amp; (bieg == 4) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 5; //Ustawiamy 400W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&lt;20) &amp;&amp; (bieg == 5) &amp;&amp; (Timer1 == 0)) {<br /> LED1_OFF;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 4; //Ustawiamy 300W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;20) &amp;&amp; (Nap&lt;30) &amp;&amp; (bieg == 5) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 5; //Ustawiamy 400W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;30) &amp;&amp; (bieg == 5) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_ON;<br /> LED3_ON;<br /> bieg = 6; //Ustawiamy 600W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&lt;20) &amp;&amp; (bieg == 6) &amp;&amp; (Timer1 == 0)) {<br /> LED1_ON;<br /> LED2_OFF;<br /> LED3_ON;<br /> bieg = 5; //Ustawiamy 400W<br /> Timer1 = 100;<br /> }<br /> if ((Nap&gt;20) &amp;&amp; (bieg == 6) &amp;&amp; (Timer1 == 0)) {<br />     LED1_ON;<br /> LED2_ON;<br /> LED3_ON;<br /> bieg = 6; //Ustawiamy 600W<br /> Timer1 = 100;<br /> }<br />//KASKADA STOP<br /><br /> Moc = Moc + Moc1;<br /> Timer2 = 30;<br /> LED4_TOG;<br /> if (Moc &gt;= 300) {  //1 &#91;kWh&#93; = 3600000 &#91;Ws&#93;<br />// kWh_stan = Moc/500 ; //dodaj jedną kilowatogodzinę do RAM<br /> kWh_stan = kWh_stan+1 ;<br /> cli();<br />eeprom_write_byte (uiAddress, kWh_stan); // zapis do eeprom<br /> sei();<br />    Moc = 0 ; //wyzeruj licznik Watosekund<br /> }<br /> }<br /><br />tr_locate(15,3);<br />tr_attr(1,YELLOW,BLACK);<br />uart_putlong( Moc, 10 );<br />uart_puts( &quot;   Moc w watosekundach &quot;);<br />tr_locate(16,3);<br />uart_putlong( Nap1, 10 );<br />uart_puts( &quot;   Napiecie INP1 &quot;);<br />tr_locate(17,3);<br />uart_putlong( Nat6, 10 );<br />uart_puts( &quot;   Natezenie INP6 &quot;);<br />tr_locate(18,3);<br />uart_putlong( kWh_stan, 10 );<br />uart_puts( &quot; / &quot;);<br />uart_putlong( *uiAddress,10 );<br />uart_puts( &quot;   Licznik kWh &quot;);<br /><br />tr_locate(19,3);<br />uart_putlong( bieg, 10 );<br />uart_puts( &quot; Numer \&quot;biegu\&quot; &quot;);<br />tr_locate(20,3);<br />uart_puts( &quot;Timer1 &quot;);<br />uart_putlong( Timer1, 10 );<br />uart_puts( &quot;       &quot;);<br />tr_locate(21,3);<br />uart_puts( &quot;Timer2 &quot;);<br />uart_putlong( Timer2, 10 );<br />uart_puts( &quot;       &quot;);<br /><br /><br />}<br />}<br /><br />// *******************FUNKCJE ********************************<br />ISR( ADC_vect ) {<br />static uint8_t idx;<br /><br />vtab&#91;idx++&#93; = ADCW;<br />if( idx&gt;5 ) idx=0; //Definiowanie ilosci kanalow idx&gt;5 = 6 kanałów<br /><br />ADMUX = (ADMUX &amp; 0b11111000) | idx;<br /><br />ADCSRA |= (1&lt;&lt;ADSC);<br /><br />//wynik = ADCW;<br />}<br /><br />uint16_t pomiar( uint8_t kanal ) {<br /><br />ADMUX = (ADMUX &amp; 0b11111000) | kanal;<br /><br />ADCSRA |= (1&lt;&lt;ADSC);  // start konwersji<br /><br />while( ADCSRA &amp; (1&lt;&lt;ADSC) );<br /><br />return ADCW;<br />}<br /><br />void get_vol1( uint16_t adc1, TVOL * voltage, uint16_t * sr_1 ) {<br /><br />uint32_t sr1=0;<br />uint8_t i;<br /><br />sr_1&#91; voltage-&gt;idx++ &amp; (SR1-1) &#93; = adc1;<br /><br />for(i=0; i&lt;SR1; i++) sr1+=sr_1&#91;i&#93;;<br />sr1 /= SR1;<br /><br />voltage-&gt;adc_mid = sr1;<br /><br />uint16_t wynik = ( sr1 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void get_vol2( uint16_t adc2, TVOL * voltage, uint16_t * sr_2 ) {<br /><br />uint32_t sr2=0;<br />uint8_t i;<br /><br />sr_2&#91; voltage-&gt;idx++ &amp; (SR2-1) &#93; = adc2;<br /><br />for(i=0; i&lt;SR2; i++) sr2+=sr_2&#91;i&#93;;<br />sr2 /= SR2;<br /><br />voltage-&gt;adc_mid = sr2;<br /><br />uint16_t wynik = ( sr2 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void get_vol3( uint16_t adc3, TVOL * voltage, uint16_t * sr_3 ) {<br /><br />uint32_t sr3=0;<br />uint8_t i;<br /><br />sr_3&#91; voltage-&gt;idx++ &amp; (SR3-1) &#93; = adc3;<br /><br />for(i=0; i&lt;SR3; i++) sr3+=sr_3&#91;i&#93;;<br />sr3 /= SR3;<br /><br />voltage-&gt;adc_mid = sr3;<br /><br />uint16_t wynik = ( sr3 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void get_vol4( uint16_t adc4, TVOL * voltage, uint16_t * sr_4 ) {<br /><br />uint32_t sr4=0;<br />uint8_t i;<br /><br />sr_4&#91; voltage-&gt;idx++ &amp; (SR4-1) &#93; = adc4;<br /><br />for(i=0; i&lt;SR4; i++) sr4+=sr_4&#91;i&#93;;<br />sr4 /= SR4;<br /><br />voltage-&gt;adc_mid = sr4;<br /><br />uint16_t wynik = ( sr4 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void get_vol5( uint16_t adc5, TVOL * voltage, uint16_t * sr_5 ) {<br /><br />uint32_t sr5=0;<br />uint8_t i;<br /><br />sr_5&#91; voltage-&gt;idx++ &amp; (SR5-1) &#93; = adc5;<br /><br />for(i=0; i&lt;SR5; i++) sr5+=sr_5&#91;i&#93;;<br />sr5 /= SR5;<br /><br />voltage-&gt;adc_mid = sr5;<br /><br />uint16_t wynik = ( sr5 * (uint32_t)voltage-&gt;ref_v ) / voltage-&gt;ref_adc;<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br /><br />void get_vol6( uint16_t adc6, TVOL * voltage, uint16_t * sr_6 ) {<br /><br />uint32_t sr6=0;<br />uint8_t i;<br /><br />sr_6&#91; voltage-&gt;idx++ &amp; (SR6-1) &#93; = adc6;<br /><br />for(i=0; i&lt;SR6; i++) sr6+=sr_6&#91;i&#93;;<br />sr6 /= SR6;<br /><br />voltage-&gt;adc_mid = sr6;<br /><br />uint16_t wynik = ( (sr6-102) * (uint32_t)voltage-&gt;ref_v ) / (voltage-&gt;ref_adc-102);<br /><br />div_t divmod = div(wynik, 100);<br />itoa( divmod.quot, voltage-&gt;v1, 10 );<br />itoa( divmod.rem, voltage-&gt;v2, 10);<br />if( divmod.rem &lt; 10 ) {<br />voltage-&gt;v2&#91;0&#93;='0';<br />voltage-&gt;v2&#91;1&#93;=divmod.rem+'0';<br />}<br /><br />voltage-&gt;v1&#91;2&#93;=0;<br />voltage-&gt;v2&#91;2&#93;=0;<br />}<br />//Funkcje Zapisu do EEPROM<br /><br />//*** przerwanie Timer2 CompareMatch<br />ISR(TIMER2_COMP_vect) {<br /><br />uint16_t n, m;<br /><br />n = Timer1;<br />m = Timer2;<br /><br />if (n) Timer1 = --n;<br />if (m) Timer2 = --m;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 13 lis 2013, o 21:18</p><hr />
]]></content>
</entry>
</feed>