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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-10-15T11:06:47+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=1642&amp;mode</id>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-15T11:06:47+01:00</updated>
<published>2012-10-15T11:06:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16802#p16802</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16802#p16802"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16802#p16802"><![CDATA[
Bravo! <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 15 paź 2012, o 11:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2012-10-15T09:58:17+01:00</updated>
<published>2012-10-15T09:58:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16801#p16801</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16801#p16801"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16801#p16801"><![CDATA[
Zamień:<br />[syntax=c]char                    DispLine_1[16];<br />char                    DispLine_2[16];[/syntax]<br />na:<br />[syntax=c]char                    DispLine_1[17];<br />char                    DispLine_2[17];[/syntax]<br />Problem rzeczywiście jest trudny do wykrycia. Trzeba na to uważać. Równie dobrze koniec łańcucha '/0' mógł zamazywać inną zmienną.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 15 paź 2012, o 09:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-14T22:50:05+01:00</updated>
<published>2012-10-14T22:50:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16794#p16794</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16794#p16794"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16794#p16794"><![CDATA[
Uuu... widzę, że większy problem jest <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Nikt nie znalazł buga?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 14 paź 2012, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Piotrek_P]]></name></author>
<updated>2012-10-09T20:00:29+01:00</updated>
<published>2012-10-09T20:00:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16665#p16665</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16665#p16665"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16665#p16665"><![CDATA[
Może to nie ma wpływu na powyższy problem (ja się nie znam), ale pierwszy raz widzę konstrukcję struktury w C, która zaczyna się i kończy dokładnie taką samą nazwą. W tym przypadku mamy przed nawiasem nazwę struktury _FLAGA i po kolejnym nawiasie (zamykającym) również _FLAGA. Trochę jak by masło maślane <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Ciekawe jak taką sytuację traktuje kompilator? Z ciekawości przejrzałem kilka książek o C i trochę kodów na AVRFreaks(tutoriale) i żadne źródła nie podają takiej konstrukcji. Może ktoś bardziej oblatany w C może się wypowie co do moich wątpliwości.<br /><br />Pozdrawiam<br />PP<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=290">Piotrek_P</a> — 9 paź 2012, o 20:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-09T19:49:12+01:00</updated>
<published>2012-10-09T19:49:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16663#p16663</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16663#p16663"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16663#p16663"><![CDATA[
Wstawiłem... bez zmian <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=82">szopler</a> — 9 paź 2012, o 19:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-09T18:41:20+01:00</updated>
<published>2012-10-09T18:41:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16660#p16660</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16660#p16660"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16660#p16660"><![CDATA[
kurczę ja teraz nie pamiętam z głowy składni sprintfa ale jeszcze raz pytam czy kłopotem jest wstawić sobie <br /><br />lcd_int( Licznik_kWh );<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 paź 2012, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-09T18:02:41+01:00</updated>
<published>2012-10-09T18:02:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16658#p16658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16658#p16658"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16658#p16658"><![CDATA[
[syntax=c]    sprintf(DispLine_1,&quot;   %010lu   &quot;, Licznik_kWh); break;[/syntax]<br /><br />Dalej to samo <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 9 paź 2012, o 18:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-09T12:46:28+01:00</updated>
<published>2012-10-09T12:46:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16644#p16644</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16644#p16644"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16644#p16644"><![CDATA[
Wiesz co ? weź ty sobie wyświetl gdzieś normalnie wartość tej zmiennej Licznik_kWh, bo jak na razie to widzisz ją tylko przez to<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">sprintf(DispLine_1,&quot; %07lu.%03u kWh&quot;, (uint32_t)(Licznik_kWh/1000), (uint16_t)(Licznik_kWh%1000)); </div><br /><br />czy nie prościej dla sprawdzenia wyświetlać sobie do testów samą zmienną bez żadnego dzielenia ?<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">lcd_int( Licznik_kWh );</div><br /><br />bo coś to dziwnie wszystko wygląda<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 paź 2012, o 12:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-09T09:47:20+01:00</updated>
<published>2012-10-09T09:47:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16639#p16639</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16639#p16639"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16639#p16639"><![CDATA[
[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 02-08-2012<br /> *      Author: Michal<br /> */<br /><br />/* Dolaczenia plikow */<br />#include &lt;avr/io.h&gt;<br />//#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />/* Definicje makr i uproszczeń */<br />#define sbi(byte,bit) byte |=  (1&lt;&lt;bit)<br />#define cbi(byte,bit) byte &amp;= ~(1&lt;&lt;bit)<br />#define bit(byte,n) (byte&gt;&gt;n)&amp;1<br />#define FLAG_S1<br />#define FLAG_R0<br /><br />/* Deklaracje zmiennych */<br />volatile struct _FLAGA {<br />    uint8_tDisplay:1;<br />    uint8_tAddTokWh:1;<br />} _FLAGA;<br /><br />volatile uint16_tTimer_1s;<br />volatile uint16_tCounter;<br />volatile uint8_tpoprzedni_stan_portu_B;<br />volatile uint16_tMocCzynna;<br />volatile uint32_tLicznik_kWh;<br />charDispLine_1[16];<br />charDispLine_2[16];<br />volatile uint8_tDISPCNT = 0;<br /><br />/* Deklaracje funkcji */<br />void obsluga_wyswietlacza(void);<br />//void zwieksz_licznik(void);<br /><br />/* ...KOD... */<br />void obsluga_wyswietlacza(void) {<br />    if (_FLAGA.Display == FLAG_S) {<br /><br />//lcd_locate(0,0);<br />//lcd_str(&quot;                &quot;);<br /><br />switch (DISPCNT) {<br />case 0:<br />    sprintf(DispLine_1,&quot;Welcome!&quot;); break;<br />case 1:<br />    sprintf(DispLine_1,&quot;    %4u W      &quot;, MocCzynna); break;<br />case 2:<br />    sprintf(DispLine_1,&quot; %07lu.%03u kWh&quot;, (uint32_t)(Licznik_kWh/1000), (uint16_t)(Licznik_kWh%1000)); break;<br />}<br /><br />    lcd_locate(0,0);<br />    lcd_str(DispLine_1);<br /><br />   // lcd_locate(1,0);<br />    //lcd_str(DispLine_2);<br /><br />    _FLAGA.Display = FLAG_R;<br />    }<br />}<br /><br />/*void zwieksz_licznik(void) {<br />    if (_FLAGA.AddTokWh == FLAG_S) {<br />Licznik_kWh++;<br />_FLAGA.AddTokWh = FLAG_R;<br />    }<br /><br />}*/<br /><br />ISR(TIMER2_COMPA_vect) {// Wywoływane co 4ms przy OCR2A = 250<br />    //TCNT2 = 0;// Zerowanie timera - W trybie CTC automatyczne!<br />    Timer_1s++;<br /><br />    if (Timer_1s &gt;= 1250) {<br />Timer_1s = 0;<br />MocCzynna = Counter;// Ilość impulsów zliczonych w ciągu 5 sekund daje moc w Watach<br />Counter = 0;<br />    }<br /><br />    if (Timer_1s % 125 == 0) {<br />_FLAGA.Display = FLAG_S;// Odświeżaj LCD co 1/2 sekundy<br />    }<br /><br />    if (Timer_1s % 500 == 0) {<br />DISPCNT++;<br />if (DISPCNT &gt;= 3) DISPCNT = 1;<br />    }<br /><br />    PORTD ^= 1&lt;&lt;0;<br /><br />}<br /><br />ISR(TIMER1_COMPA_vect) {<br />    //_FLAGA.AddTokWh = FLAG_S;<br />    Licznik_kWh++;<br />}<br /><br />/*ISR(PCINT1_vect) {<br />    uint8_t stan_portu_B = (~(PINB) &amp; 0b00000010); // T1<br /><br />            if ( (stan_portu_B ^ poprzedni_stan_portu_B) &amp; stan_portu_B ) {<br />        Counter++;<br />            }<br /><br />            poprzedni_stan_portu_B = stan_portu_B;<br />}*/<br /><br />ISR(INT1_vect) {<br />    Counter++;<br />}<br /><br />/* INICJALIZACJA */<br />//----------------<br />void _INIT(void) {<br />    /* Konfiguracja Timer2 jako Timer - odliczanie czasu na potrzeby systemu */<br />    sbi(TCCR2B, CS22); sbi(TCCR2B, CS21); cbi(TCCR2B, CS20);// Konfiguracja na 16MHz/256 = 62.5kHz<br />    cbi(TCCR2A,WGM22); sbi(TCCR2A,WGM21); cbi(TCCR2A,WGM20);// Włączenie trybu CTC (automatyczne zerowanie TCNT2 przy Compare)<br />    OCR2A = 250;// Compare Int co 250/62500 = 4ms (250Hz)<br />    sbi(TIMSK2, OCIE2A);// Włączenie przerwania typu compare od rejestru A<br /><br />    /* Konfiguracja Timer1 jako Counter - zliczanie impulsów z przetwornika */<br />    sbi(TCCR1B,CS12); sbi(TCCR1B,CS11); cbi(TCCR1B,CS10);// External Clock Source @ Falling Edge<br />    cbi(TCCR1B,WGM13); sbi(TCCR1B,WGM12); cbi(TCCR1A,WGM11); cbi(TCCR1A,WGM10);// Włączenie trybu CTC<br />    OCR1A = 720; // Compare Interrupt co 720 impulsów = 0.001kWh [720 000imp = 1kWh]<br />    sbi(TIMSK1, OCIE1A);// Włączenie przerwania typu compare od rejestru A<br /><br />    /* Wersja 1 - zmostkowanie T1 z INT1 */<br />    sbi(EICRA,ISC11); cbi(EICRA,ISC10);// Przerwanie INT1@Falling Edge<br />    sbi(EIMSK,INT1);// Włączenie przerwania<br /><br />    /* Wersja 2 - przerwanie typu PCINT z programowym wykrywaniem zbocza */<br />    //sbi(PCMSK1,PCINT9);// Maska przerwania dla T1 [PCI9]<br />    //sbi(PCICR,PCIE1);// Włączenie przerwania dla grupy PCINT1<br /><br />    cbi(DDRB,1);// T1 jako wejście<br />    sbi(PORTB,1);// Pullup On<br /><br />    lcd_init(); // Inicjalizacja wyswietlacza<br /><br />    sbi(DDRD,0);<br />    cbi(PORTD,0);<br />}<br /><br />int main(void)<br />{<br />    _INIT();<br />    sei();// Globalne wlaczenie przerwan<br /><br />for (;;)<br />{<br />    //zwieksz_licznik();<br />    obsluga_wyswietlacza();<br />}<br />return 0;<br />} // End of main<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 9 paź 2012, o 09:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-09T08:58:07+01:00</updated>
<published>2012-10-09T08:58:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16636#p16636</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16636#p16636"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16636#p16636"><![CDATA[
Wiesz - mi lepiej się patrzy na kod - więc pokaż go po poprawkach. <br /><br />Przy okazji to UL<br /><br />if (Timer_1s &gt;= 1250UL)<br /><br />jest zupełnie niepotrzebne bo przecież ta zmienna jest 16-bit i stała też domyślnie jest traktowana jak 16bit (ale to tylko uwaga kosmetyczna bo nie wpływa to na działanie programu)<br /><br />poza tym _FLAG wygląda jakby była używana w przerwaniu i funkcjach więc brak volatile<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 9 paź 2012, o 08:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-09T07:39:31+01:00</updated>
<published>2012-10-09T07:39:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16635#p16635</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16635#p16635"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16635#p16635"><![CDATA[
Łolaboga... zapomniałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />(do pewnego momentu było OK, po minimalnym rozbudowaniu kodu się skiepściło).<br /><br />PS. Dodałem 'UL' i dzieje się to samo... volatile też nic nie załatwia :/<br />Może jakiś błąd logiczny w kodzie machnąłem...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 9 paź 2012, o 07:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-10-08T23:53:05+01:00</updated>
<published>2012-10-08T23:53:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16633#p16633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16633#p16633"/>
<title type="html"><![CDATA[Re: Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16633#p16633"><![CDATA[
(Licznik_kWh/10000), (Licznik_kWh%10000)<br /><br />poczytaj koniecznie to:<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/domyslna-promocja-do-typu-int.html" >http://atnel.pl/domyslna-promocja-do-typu-int.html</a><!-- m --><br /><br />i sprawdź kod pod tym kątem<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 8 paź 2012, o 23:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2012-10-08T22:56:09+01:00</updated>
<published>2012-10-08T22:56:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16630#p16630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16630#p16630"/>
<title type="html"><![CDATA[Zerowanie się zmiennej... WHY?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1642&amp;p=16630#p16630"><![CDATA[
Pisałem to już tutaj, potem załapałem co jest źle i post skasowałem zanim ktokolwiek odpowiedział, a teraz znów mam zamułkę...<br />Zmienna Licznik_kWh przeskakuje tylko z 0 na 1 i zaraz się zeruje... Wrzucam cały kod:<br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 02-08-2012<br /> *      Author: Michal<br /> */<br /><br />/* Dolaczenia plikow */<br />#include &lt;avr/io.h&gt;<br />//#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />/* Definicje makr i uproszczeń */<br />#define sbi(byte,bit) byte |=  (1&lt;&lt;bit)<br />#define cbi(byte,bit) byte &amp;= ~(1&lt;&lt;bit)<br />#define bit(byte,n) (byte&gt;&gt;n)&amp;1<br />#define FLAG_S1<br />#define FLAG_R0<br /><br />/* Deklaracje zmiennych */<br />struct _FLAGA {<br />    uint8_tDisplay:1;<br />    uint8_tAddTokWh:1;<br />} _FLAGA;<br /><br />uint16_tTimer_1s;<br />uint16_tCounter;<br />uint8_tpoprzedni_stan_portu_B;<br />uint16_tMocCzynna;<br />uint32_tLicznik_kWh;<br />charDispLine_1[16];<br />charDispLine_2[16];<br />uint8_tDISPCNT = 0;<br /><br />/* Deklaracje funkcji */<br />void obsluga_wyswietlacza(void);<br />void zwieksz_licznik(void);<br /><br />/* ...KOD... */<br />void obsluga_wyswietlacza(void) {<br />    if (_FLAGA.Display == FLAG_S) {<br /><br />//lcd_locate(0,0);<br />//lcd_str(&quot;                &quot;);<br /><br />switch (DISPCNT) {<br />case 0:<br />    sprintf(DispLine_1,&quot;Welcome!&quot;); break;<br />case 1:<br />    sprintf(DispLine_1,&quot;    %4u W      &quot;, MocCzynna); break;<br />case 2:<br />    sprintf(DispLine_1,&quot; %06lu.%04lu kWh&quot;, (Licznik_kWh/10000), (Licznik_kWh%10000)); break;<br />}<br /><br />    lcd_locate(0,0);<br />    lcd_str(DispLine_1);<br /><br />   // lcd_locate(1,0);<br />    //lcd_str(DispLine_2);<br /><br />    _FLAGA.Display = FLAG_R;<br />    }<br />}<br /><br />void zwieksz_licznik(void) {<br />    if (_FLAGA.AddTokWh == FLAG_S) {<br />Licznik_kWh++;<br />_FLAGA.AddTokWh = FLAG_R;<br />    }<br /><br />}<br /><br />ISR(TIMER2_COMPA_vect) {// Wywoływane co 4ms przy OCR2A = 250<br />    //TCNT2 = 0;// Zerowanie timera - W trybie CTC automatyczne!<br />    Timer_1s++;<br /><br />    if (Timer_1s &gt;= 1250UL) {<br />Timer_1s = 0;<br />MocCzynna = Counter;// Ilość impulsów zliczonych w ciągu 5 sekund daje moc w Watach<br />Counter = 0;<br />    }<br /><br />    if (Timer_1s % 125 == 0) {<br />_FLAGA.Display = FLAG_S;// Odświeżaj LCD co 1/2 sekundy<br />    }<br /><br />    if (Timer_1s % 1250 == 0) {<br />DISPCNT++;<br />if (DISPCNT &gt;= 3) DISPCNT = 1;<br />    }<br /><br />    //PORTD ^= 1&lt;&lt;0;<br /><br />}<br /><br />ISR(TIMER1_COMPA_vect) {<br />    _FLAGA.AddTokWh = FLAG_S;<br />}<br /><br />ISR(PCINT1_vect) {<br />    uint8_t stan_portu_B = (~(PINB) &amp; 0b00000010); // T1<br /><br />            if ( (stan_portu_B ^ poprzedni_stan_portu_B) &amp; stan_portu_B ) {<br />        Counter++;<br />            }<br /><br />            poprzedni_stan_portu_B = stan_portu_B;<br />}<br /><br />/*ISR(INT1_vect) {<br />    Counter++;<br />}*/<br /><br />/* INICJALIZACJA */<br />//----------------<br />void _INIT(void) {<br />    /* Konfiguracja Timer2 jako Timer - odliczanie czasu na potrzeby systemu */<br />    sbi(TCCR2B, CS22); sbi(TCCR2B, CS21); cbi(TCCR2B, CS20);// Konfiguracja na 16MHz/256 = 62.5kHz<br />    cbi(TCCR2A,WGM22); sbi(TCCR2A,WGM21); cbi(TCCR2A,WGM20);// Włączenie trybu CTC (automatyczne zerowanie TCNT2 przy Compare)<br />    OCR2A = 250;// Compare Int co 250/62500 = 4ms (250Hz)<br />    sbi(TIMSK2, OCIE2A);// Włączenie przerwania typu compare od rejestru A<br /><br />    /* Konfiguracja Timer1 jako Counter - zliczanie impulsów z przetwornika */<br />    sbi(TCCR1B,CS12); sbi(TCCR1B,CS11); cbi(TCCR1B,CS10);// External Clock Source @ Falling Edge<br />    cbi(TCCR1B,WGM13); sbi(TCCR1B,WGM12); cbi(TCCR1A,WGM11); cbi(TCCR1A,WGM10);// Włączenie trybu CTC<br />    OCR1A = 72; // Compare Interrupt co 720 impulsów = 0.001kWh [720 000imp = 1kWh]<br />    sbi(TIMSK1, OCIE1A);// Włączenie przerwania typu compare od rejestru A<br /><br />    /* Wersja 1 - zmostkowanie T1 z INT1 */<br />    //sbi(EICRA,ISC11); cbi(EICRA,ISC10);// Przerwanie INT1@Falling Edge<br />    //sbi(EIMSK,INT1);// Włączenie przerwania<br /><br />    /* Wersja 2 - przerwanie typu PCINT z programowym wykrywaniem zbocza */<br />    sbi(PCMSK1,PCINT9);// Maska przerwania dla T1 [PCI9]<br />    sbi(PCICR,PCIE1);// Włączenie przerwania dla grupy PCINT1<br /><br />    cbi(DDRB,1);// T1 jako wejście<br />    sbi(PORTB,1);// Pullup On<br /><br />    lcd_init(); // Inicjalizacja wyswietlacza<br /><br />    sbi(DDRD,0);<br />    cbi(PORTD,0);<br />}<br /><br />int main(void)<br />{<br />    _INIT();<br />    sei();// Globalne wlaczenie przerwan<br /><br />for (;;)<br />{<br />    zwieksz_licznik();<br />    obsluga_wyswietlacza();<br />}<br />return 0;<br />} // End of main<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=82">szopler</a> — 8 paź 2012, o 22:56</p><hr />
]]></content>
</entry>
</feed>