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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-04-03T20:31:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2636&amp;mode</id>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-03T20:31:27+01:00</updated>
<published>2013-04-03T20:31:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33021#p33021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33021#p33021"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33021#p33021"><![CDATA[
Nic <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent"><br />**** Build of configuration Release for project 10_1Wire ****<br /><br />make all <br />Invoking: Print Size<br />avr-size --format=avr --mcu=atmega16 10_1Wire.elf<br />AVR Memory Usage<br />----------------<br />Device: atmega16<br /><br />Program:    2966 bytes (18.1% Full)<br />(.text + .data + .bootloader)<br /><br />Data:         49 bytes (4.8% Full)<br />(.data + .bss + .noinit)<br /><br /><br />Finished building: sizedummy<br /> <br /><br /></div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 3 kwi 2013, o 20:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fredek]]></name></author>
<updated>2013-04-03T20:27:55+01:00</updated>
<published>2013-04-03T20:27:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33020#p33020</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33020#p33020"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33020#p33020"><![CDATA[
Masz jakieś warningi przy kompilacji ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=919">fredek</a> — 3 kwi 2013, o 20:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-03T20:07:33+01:00</updated>
<published>2013-04-03T20:07:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33015#p33015</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33015#p33015"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33015#p33015"><![CDATA[
Kod jest ten sam jak z płyty z niebieskiej książki<br />Zastosowałem ten sam kwarc 11,0592MHz, preskaler 108 i zmieniłem tylko te linie:<br />#define OW_PIN  PD0<br />#define OW_IN   PIND<br />#define OW_OUT  PORTD<br />#define OW_DDR  DDRD<br /><br />#define MAXSENSORS 1<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 3 kwi 2013, o 20:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[fredek]]></name></author>
<updated>2013-04-03T20:02:20+01:00</updated>
<published>2013-04-03T20:02:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33011#p33011</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33011#p33011"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33011#p33011"><![CDATA[
Mamy zgadywać co masz w kodzie do obsługi DS18B20 (oprócz bibliotek) czy coś zamieścisz ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=919">fredek</a> — 3 kwi 2013, o 20:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-04-03T19:56:46+01:00</updated>
<published>2013-04-03T19:56:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33010#p33010</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33010#p33010"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=33010#p33010"><![CDATA[
Ktoś pomoże? Bo już nie wiem co mam z tym zrobić. Zaledwie parę miesięcy wcześniej z tego samego kodu korzystałem i działało teraz nie chce. <br />Zrobiłem nawet 2 układ by wykluczyć błąd w połączeniu ale nadal to samo. Cały czas wyświetla mi się error przy pomiarze temp.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 3 kwi 2013, o 19:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-30T11:01:50+01:00</updated>
<published>2013-03-30T11:01:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32442#p32442</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32442#p32442"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32442#p32442"><![CDATA[
No tak zapomniałem że to wstawiłem.  Teraz klawisze działają i już zrobiłem swoje menu ustawiające zegar.<br />Zabrałem się za regulacje mocy grzania grzałki na przykładzie Mirka z niebieskiej książki.<br />Trochę źle triaka podłączyłem. Ponieważ nie wiedziałem że będzie miało znaczenie między T1 a T2 ale już działa. Lecz nie do końca. Do testów zamiast grzałki zastosowałem żarówkę i przy 100% święci na maksa. Ale gdy zmniejszam procent to już przy 91% nie świeci w ogóle. W programie eclipse ustawiłem F_CPU na 8MHz, Preskaler mam też na 8. Próbowałem zwiększyć preskaler pozycje wyżej (64) lecz efekt ten sam. <br />Gdzie można szukać błędu ?<br /><br />Kolejny problem się pojawił <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br />W między czasie chciałem już sobie zrobić pomiar temp. I takiego pecha mam że co nie ruszę to mi nie działa:(<br />Aktualnie próbuję odpalić sam pomiar temp. z gotowca z książki. Mam podłączony 1 czujnik DS18B20 i zwraca mi cały czas error na LCD. <br />Przerobiłem tylko to że ma być max 1 czujnik, podłączony to PD0 i w eclipse zaznaczyłem 8MHz po czym zmniejszyłem OCR0 do 78. Niedawno korzystałem z tego kodu na wyświetlacz siedmiosegmentowy z dwoma czujnikami i działał świetnie. Teraz nie mam pojęcia co robię nie tak. <br />Próbowałem z rezystorem 4,7k; 2,2k; 2k. Podmieniałem na inny czujnik. Jak wyciągnę całkiem czujnik to error zostaje a jak wyciągnę rezystor to sie pojawia &quot;0.0 C&quot;<br />Podłączenie normalne 3 pinowe.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 30 mar 2013, o 11:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T22:50:22+01:00</updated>
<published>2013-03-29T22:50:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32412#p32412</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32412#p32412"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32412#p32412"><![CDATA[
Linia 140 dodaje Ci 2s, bo procedura potrzebuje 10 wywołań do prawidłowego zadziałania. Jak trwa to za długo to zmień<br />if ((debounce_licznik&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1]))<br />na<br />if ((debounce_licznik&gt;=4) &amp;&amp; key &amp;&amp; (!key_lock[key-1]))<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T22:47:15+01:00</updated>
<published>2013-03-29T22:47:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32410#p32410</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32410#p32410"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32410#p32410"><![CDATA[
Ok proszę :<br />[syntax=c]    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/pgmspace.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #include &quot;lcd.h&quot;<br />    typedef uint8_t  u08;<br />    typedef uint16_t u16;<br /><br />    #define PIN_ADC 7<br />    volatile u16 ADC_pomiar;  //aktualny pomiar ADC<br />    volatile u08 flaga_klaw;  //flaga żądania analizy klawiatury<br /><br />    volatile u08 sek = 0;<br />    u08 min = 0;<br />    u08 godz = 0;<br /><br />    u08 przycisk_wcisniety;<br /><br />    enum key {NIC, RIGHT, LEFT, UP, DOWN, OK, ESC};<br />    u08 rozpisz_klawisze (void)<br />    {<br />            u08 key=0;<br />        const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />        const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />        static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />        static u08 debounce_poziom=0, debounce_licznik=0;<br />        if (flaga_klaw)<br />        {<br />            lcd_locate(0, 10);<br />            lcd_int(ADC_pomiar);<br />            lcd_str(&quot;   &quot;);<br /><br /><br />            flaga_klaw=0;<br />            for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />            for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />            if (key==debounce_poziom)<br />                    debounce_licznik++;<br />            else<br />            {<br />                    debounce_licznik=0;<br />                    debounce_poziom=key;<br />            }<br />            if ((debounce_licznik&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1])) // Jezeli wcisnieto klawisz i nie ma blokady<br />            {<br />                    lcd_locate(1,10);<br />                    lcd_int(key);<br /><br />                    key_lock[key-1]=1;<br />                    return wartosci_klawiszy[key-1];<br />            }<br />        }<br />            lcd_locate(1,10);<br />            lcd_int(0);<br />        return NIC;                                                 // Jezeli nie wcisnieto klawisza<br />    }<br /><br /><br /><br /><br /><br /><br /><br />    inline void ustawienia(void)<br />    {<br />    //--------------------Ustawienia timera zegara<br />        ASSR |=(1&lt;&lt;AS2);//async<br />        TCNT2 = 0x00;<br />        TCCR2 |=(1&lt;&lt;CS22)|(1&lt;&lt;CS20);//128<br />        TIMSK |=(1&lt;&lt;TOIE2);<br />    //--------------------Ustawienia timera zegara - KONIEC<br /><br />    //--------------------Ustawienie ADC<br />        ADMUX  |= (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0);            //napięcie odniesienia 2,56V<br />        ADMUX   |= PIN_ADC;<br />        //ADMUX  |= (1&lt;&lt;ADLAR);  //wynik wyrównaj do lewej<br />        ADCSRA |= (1&lt;&lt;ADEN)    //ADEN=1 włączenie przetwornika ADC)<br />               | (1&lt;&lt;ADSC)    //start pierwszego pomiaru<br />               | (1&lt;&lt;ADATE)    //włącz Free Running Mode<br />               | (1&lt;&lt;ADIE)    //włącz przerwania z ADC<br />               | (1&lt;&lt;ADPS1)   //ustawienie preskalera na (ADPS1 i 0) 8<br />               | (1&lt;&lt;ADPS0);<br />    //--------------------Ustawienie ADC - KONIEC<br />        sei();<br />        lcd_init();<br />    }<br /><br />    void wyswietl_czas (void)<br />    {<br />        // Godziny<br />        lcd_locate(1,0);<br />        if (godz&lt;10) lcd_char('0');<br />        lcd_int(godz);<br /><br />        // Minuty<br />        lcd_locate(1,3);<br />        if (min&lt;10) lcd_char('0');<br />        lcd_int(min);<br /><br />        // Sekundy<br />        lcd_locate(1,6);<br />        if (sek&lt;10) lcd_char('0');<br />        lcd_int(sek);<br />    }<br /><br />//--------------------Zegar<br />    inline void zegar_przekrecenie (void)<br />    {<br />        if (sek&gt;59)<br />        {<br />            sek=0;<br />            if (++min&gt;59)<br />            {<br />                    min=0;<br />                    if (++godz&gt;23) godz=0;<br />            }<br />         }<br />    }<br />//--------------------Zegar - KONIEC<br /><br />//--------------------Miganie podczas nastawy czasu<br />    inline void set_time (u08 ktora_czesc) // 0-h 1-m 2-s<br />    {<br />            if (sek%2) for (u08 licznik=0; licznik&lt;=2; licznik++) if (licznik!=ktora_czesc)<br />            {<br />                    lcd_locate(1, licznik*3);<br />                    lcd_str(&quot;  &quot;);<br />            }<br />    }<br />//--------------------Miganie podczas nastawy czasu - KONIEC<br />    int main (void)<br />    {<br />        _delay_ms(10);<br /><br />        ustawienia();<br /><br />        while(1)<br />        {<br />            przycisk_wcisniety=rozpisz_klawisze();<br />            _delay_ms(200);<br />            lcd_locate(0,0);<br />            lcd_int(przycisk_wcisniety);<br />            lcd_locate(1,0);<br />            lcd_int(ADC_pomiar);<br />            lcd_str(&quot;    &quot;);<br /><br /><br />            /*<br />            zegar_przekrecenie();<br /><br />            static int8_t menu=0;<br />            if(przycisk_wcisniety==RIGHT)menu++;<br />if(menu&gt;2)menu=0;<br />            else if (przycisk_wcisniety==LEFT)menu--;<br />if(menu&lt;0)menu=2;<br /><br /><br />            switch(menu)<br />            {<br />            case 0:<br />            lcd_locate(0,0);<br />            lcd_str(&quot;Temp:           &quot;);<br /><br />            //dwukropek<br />            if ((sek % 2) == 1 ){<br />            lcd_locate(1,5);<br />            lcd_str(&quot;:&quot;);<br />            lcd_locate(1,2);<br />            lcd_str(&quot;:&quot;);<br />            }<br />            else{<br />                    lcd_locate(1,5);<br />                    lcd_str(&quot; &quot;);<br />                    lcd_locate(1,2);<br />                    lcd_str(&quot; &quot;);<br /><br /><br />            }<br /><br />            wyswietl_czas();<br /><br />        break;<br />    static uint8_t i;<br />        case 1:<br /><br /><br /><br />            if(przycisk_wcisniety==OK){<br />        i++;<br />        if(i&gt;4)i=0;<br />            }<br />        if(przycisk_wcisniety==ESC){<br />        TIMSK |=(1&lt;&lt;TOIE2);<br />        menu=0;<br />        lcd_cls();<br />            }<br /><br />            if(i==0){<br />         lcd_locate(0,0);<br />            lcd_str(&quot;UST. ZEGARA.    &quot;);<br />            }<br />            if(i==1){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;STOP            &quot;);<br /><br />            }<br />            if(i==2){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;GODZINY:        &quot;);<br /><br />            }<br />            if(i==3){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;MINUTY:         &quot;);<br /><br />            }<br />            if(i==4){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;SEKUNDY:        &quot;);<br /><br />            }<br /><br />            //dwukropek<br />            lcd_locate(1,5);<br />            lcd_str(&quot;:&quot;);<br />            lcd_locate(1,2);<br />            lcd_str(&quot;:&quot;);<br /><br />            wyswietl_czas();<br /><br />        break;<br /><br />        case 2:<br />                        lcd_locate(0,0);<br />                        lcd_str(&quot;UST. TEMP.      &quot;);<br />        break;<br />        }<br />*/<br />        }<br />    }<br /><br />    //--------------------Przerwanie ADC<br />    ISR(ADC_vect)<br />        {<br />            if (!flaga_klaw)<br />            {<br />                    ADC_pomiar=ADCW;<br />                    flaga_klaw=1;<br />            }<br />        }<br />    //--------------------Przerwanie ADC - KONEC<br /><br />    //--------------------Przerwanie zegara<br />    ISR(TIMER2_OVF_vect) {sek++;}<br />    //--------------------Przerwanie zegara - KONIEC<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 22:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T22:44:48+01:00</updated>
<published>2013-03-29T22:44:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32409#p32409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32409#p32409"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32409#p32409"><![CDATA[
4s ? Wrzuć cały kod, który testujesz.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 22:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T22:43:35+01:00</updated>
<published>2013-03-29T22:43:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32407#p32407</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32407#p32407"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32407#p32407"><![CDATA[
Tak dokładnie. tylko że 4s trzeba czekać nie było by praktyczne jak by trochę szybciej to reagowało ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 22:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T22:37:40+01:00</updated>
<published>2013-03-29T22:37:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32402#p32402</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32402#p32402"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32402#p32402"><![CDATA[
[syntax=c]u08 rozpisz_klawisze (void)<br />{<br />u08 key=0;<br />    const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />    const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />    static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />    static u08 debounce_poziom=0, debounce_licznik=0;<br />    if (flaga_klaw)<br />    {<br />    lcd_locate(0, 10);<br />    lcd_int(ADC_pomiar);<br />    lcd_str(&quot;   &quot;);<br /><br /><br />    flaga_klaw=0;<br />    for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />        for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />        if (key==debounce_poziom)<br />        debounce_licznik++;<br />        else<br />        {<br />        debounce_licznik=0;<br />        debounce_poziom=key;<br />        }<br />        if ((debounce_licznik&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1])) // Jezeli wcisnieto klawisz i nie ma blokady<br />        {<br />        lcd_locate(1,10);<br />        lcd_int(key);<br /><br />        key_lock[key-1]=1;<br />        return wartosci_klawiszy[key-1];<br />        }<br />    }<br />lcd_locate(1,10);<br />lcd_int(0);<br />    return NIC;                                                 // Jezeli nie wcisnieto klawisza<br />}[/syntax] A teraz powinieneś widzieć cały czas kod klawisza = 0, albo kod właściwy przez bardzo krótki czas, a potem 0.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Sorki, 35 linie jeszcze zmieniłem tutaj.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 22:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T22:34:23+01:00</updated>
<published>2013-03-29T22:34:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32400#p32400</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32400#p32400"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32400#p32400"><![CDATA[
Wybacz wcześniej też wyskakiwał się kod klawisza tylko że po 4s. <br />teraz też się wyświetla po 4s i zostaje. nie wraca do zera tylko jak nadusiłem klawisz nr 3 to zostaje 3 na LCD.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 22:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T22:25:10+01:00</updated>
<published>2013-03-29T22:25:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32399#p32399</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32399#p32399"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32399#p32399"><![CDATA[
Dobra, błąd był, ale teraz to debugowanie jest problemem. Musiałbyś przytrzymać klawisz przez 20 sek aby coś zobaczyć.<br />[syntax=c]u08 rozpisz_klawisze (void)<br />{<br />u08 key=0;<br />    const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />    const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />    static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />    static u08 debounce_poziom=0, debounce_licznik=0;<br />    if (flaga_klaw)<br />    {<br />    lcd_locate(0, 10);<br />    lcd_int(ADC_pomiar);<br />    lcd_str(&quot;   &quot;);<br />    <br />    <br />    flaga_klaw=0;<br />    for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />        for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />        if (key==debounce_poziom)<br />        debounce_licznik++;<br />        else<br />        {<br />        debounce_licznik=0;<br />        debounce_poziom=key;<br />        }<br />        if ((debounce_licznik&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1])) // Jezeli wcisnieto klawisz i nie ma blokady<br />        {<br />        lcd_locate(1,10);<br />        lcd_int(key);<br />        <br />        key_lock[key-1]=1;<br />        return wartosci_klawiszy[key-1];<br />        }<br />    }<br />    return NIC;                                                 // Jezeli nie wcisnieto klawisza<br />}[/syntax]<br />Teraz powinieneś mieć normalnie wyświetlane napięcie oraz kod klawisza. Poprzednie debugowanie koniecznie wyłącz. Kod klawisza będzie się zmieniał przy naciśnięciu od 1-6 (nie będzie zerowany). Jak to będzie dobrze działać to napisz to podam Ci jeszcze jeden kod z debugiem i jak wtedy przejdzie to procedurka będzie w końcu zrobiona.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T22:15:22+01:00</updated>
<published>2013-03-29T22:15:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32398#p32398</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32398#p32398"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32398#p32398"><![CDATA[
Nadal to samo <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=493">Jeżyk-1</a> — 29 mar 2013, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T22:10:11+01:00</updated>
<published>2013-03-29T22:10:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32397#p32397</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32397#p32397"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32397#p32397"><![CDATA[
[syntax=c]u08 rozpisz_klawisze (void)<br />{<br />u08 key=0;<br />    const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />    const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />    static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />    static u08 debounce_poziom=0, debounce_licznik=0;<br />    if (flaga_klaw)<br />    {<br />    flaga_klaw=0;<br />    for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />        for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />        if (key==debounce_poziom)<br />        debounce_licznik++;<br />        else<br />        {<br />        debounce_licznik=0;<br />        debounce_poziom=key;<br />        }<br />        if ((debounce_licznik&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1])) // Jezeli wcisnieto klawisz i nie ma blokady<br />        {<br />        key_lock[key-1]=1;<br />        return wartosci_klawiszy[key-1];<br />        }<br />    }<br />    return NIC;                                                 // Jezeli nie wcisnieto klawisza<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 22:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T21:56:45+01:00</updated>
<published>2013-03-29T21:56:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32394#p32394</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32394#p32394"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32394#p32394"><![CDATA[
Aj przepraszam <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />1 key == 250<br />2 key == 446<br />3 key == 600<br />4 key == 730<br />5 key == 830<br />6 key == 925<br />null == 1000<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />Ale lcd_int(przycisk_wcisniety); nie daje nic cały czas 0 <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=493">Jeżyk-1</a> — 29 mar 2013, o 21:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T21:49:55+01:00</updated>
<published>2013-03-29T21:49:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32392#p32392</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32392#p32392"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32392#p32392"><![CDATA[
a ostatnie cyfry zerujesz z lcd_str(&quot;   &quot;); ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 21:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T21:48:30+01:00</updated>
<published>2013-03-29T21:48:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32391#p32391</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32391#p32391"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32391#p32391"><![CDATA[
Taki odczyt mam:<br /><br />[syntax=c]  <br />        while(1)<br />        {<br />            przycisk_wcisniety=rozpisz_klawisze();<br />            _delay_ms(200);<br />            lcd_locate(0,10);<br />            lcd_int(przycisk_wcisniety);<br />            lcd_locate(1,10);<br />            lcd_int(ADC_pomiar);<br />[/syntax]<br /><br />1 key == 2515<br />2 key == 4468<br />3 key == 6020<br />4 key == 7315<br />5 key == 8370<br />6 key == 9270<br />null == 1000<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 21:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T21:30:47+01:00</updated>
<published>2013-03-29T21:30:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32389#p32389</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32389#p32389"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32389#p32389"><![CDATA[
[syntax=c]u08 rozpisz_klawisze (void)<br />{<br />u08 key=0;<br />    const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />    const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />    static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />    static u08 debounce_poziom=0, debounce_licznik=0;<br />    if (flaga_klaw)<br />    {<br />    flaga_klaw=0;<br />    for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />        for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />        if (key==debounce_poziom) <br />        debounce_licznik++;<br />        else<br />        {<br />        debounce_licznik=0;<br />        debounce_poziom=key;<br />        }<br />        if ((debounce_poziom&gt;=10) &amp;&amp; key &amp;&amp; (!key_lock[key-1])) // Jezeli wcisnieto klawisz i nie ma blokady<br />        {<br />        key_lock[key-1]=1;<br />        return wartosci_klawiszy[key-1];<br />        }<br />    }<br />    return NIC;                                                 // Jezeli nie wcisnieto klawisza<br />}<br /><br /><br /><br />    ISR(ADC_vect)<br />    {<br />    if (!flaga_klaw)<br />    {<br />    ADC_pomiar=ADCW;<br />    flaga_klaw=1;    <br />    }<br />    }[/syntax] No dobra, to trochę inne podejście do klawiszy. I nie sprawdzaj działania tej procedury po reakcji twojego menu, a wyświetlaj sobie jakie napięcie do procedury wchodzi i jaki klawisz zwraca.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T19:18:01+01:00</updated>
<published>2013-03-29T19:18:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32378#p32378</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32378#p32378"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32378#p32378"><![CDATA[
2-3s pojawia się wciśnięty przycisk a po 7-8 s zmienia się menu. <br />Tylko że pierwsze przyciśnięcie nic nie daje dopiero drugie.  <br />potem znów nic nie daje i czwarte tak samo jak drugie. <br />Może jak to tyle problemu to lepiej będzie jak zastosuje tradycyjną klawiaturę a jak będzie czas to zająć się ADC. Coraz mniej dni mi zostało a tu prawie nić nie zrobione mam <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=493">Jeżyk-1</a> — 29 mar 2013, o 19:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T18:56:31+01:00</updated>
<published>2013-03-29T18:56:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32376#p32376</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32376#p32376"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32376#p32376"><![CDATA[
No to wygląda ok, ale brakuje jeszcze według mnie oczekiwania na ustabilizowanie się napięcia, tzn. jeżeli wciśniesz przycisk podczas np. 30 pomiaru ADCka to dostaniesz błędny kod klawisza. Zobacz coś takiego: [syntax=c]u08 rozpisz_klawisze (void)<br />{<br />u08 key=0;<br />const  u16 pom_wartosc [6] = {160,   355,  525, 665,  785, 885};<br />const  u08 wartosci_klawiszy [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />static u08 key_lock [6] = {0,     0,    0,   0,    0,   0};<br />static u08 debounce=0;<br />if (flaga_klaw)<br />{<br />flaga_klaw=0;<br />for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp;&amp; (980 &gt; ADC_pomiar)) key++;<br />for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;// Usuwanie blokad dla puszczonych klawiszy<br />if (key)<br />{<br />if ((debounce&gt;=3) &amp;&amp; (!key_lock[key-1]))<br />{<br />key_lock[key-1]=1;<br />debounce=0;<br />return wartosci_klawiszy[key-1];<br />}<br />if (!key_lock[key-1]) debounce++;<br />}<br />else<br />debounce=0;<br />}<br />return NIC;// Jezeli nie wcisnieto klawisza<br />}[/syntax] Powinno wyświetlać klawisz po ~8s od naciśnięcia przez ~2s. Sprawdź też czy się nie blokuje, tzn. poklikaj bez resetu uP kilkoma klawiszami.<br /><br />I tą procedurę magluje nie bez powodu - bez pewności, że masz właściwe kody będą dziać się cuda przy sterowaniu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 18:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T18:20:39+01:00</updated>
<published>2013-03-29T18:20:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32375#p32375</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32375#p32375"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32375#p32375"><![CDATA[
Jest pozycja 0 (zegar)<br />wciskam klawisz <br />5s nic się nie dzieje po czym pojawia się wciśnięty klawisz (RIGHT)<br />w 10s przełącza się na menu 1 (ustaw zegar) i gaśnie przycisk (RIGHT)<br />I cały czas trzymałem do 1min.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 18:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T18:01:01+01:00</updated>
<published>2013-03-29T18:01:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32371#p32371</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32371#p32371"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32371#p32371"><![CDATA[
Dodaj sobie kodzik z 14:56 i dokładnie sprawdź czy procedura zwraca tylko raz kod klawisza, mimo tego, że jest ciągle przytrzymany, bo bez tego nie zrobisz menu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 18:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jeżyk-1]]></name></author>
<updated>2013-03-29T17:52:49+01:00</updated>
<published>2013-03-29T17:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32370#p32370</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32370#p32370"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32370#p32370"><![CDATA[
No to już podmieniam te linie <br /><br />[syntax=c]    #include &lt;avr/io.h&gt;<br />    #include &lt;util/delay.h&gt;<br />    #include &lt;avr/pgmspace.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br />    #include &quot;lcd.h&quot;<br />    typedef uint8_t  u08;<br />    typedef uint16_t u16;<br /><br />    #define PIN_ADC 7<br />    volatile u16 ADC_pomiar;  //aktualny pomiar ADC<br />    volatile u08 flaga_klaw;  //flaga żądania analizy klawiatury<br /><br />    volatile u08 sek = 0;<br />    u08 min = 0;<br />    u08 godz = 0;<br /><br />    u08 przycisk_wcisniety;<br /><br />    enum key {NIC, RIGHT, LEFT, UP, DOWN, OK, ESC};<br />    u08 rozpisz_klawisze (void)<br />    {<br />            u08 key=0;<br />            const  u16 pom_wartosc                  [6] = {160,   355,  525, 665,  785, 885};<br />            const  u08 wartosci_klawiszy    [6] = {RIGHT, LEFT, UP,  DOWN, OK,  ESC};<br />            static u08 key_lock [6] = {0, 0, 0, 0, 0, 0};<br />            if (flaga_klaw)<br />{<br />                    flaga_klaw=0;<br />                    for (u08 x=0; x&lt;6; x++) if ((pom_wartosc[x]&lt;ADC_pomiar) &amp; (980 &gt; ADC_pomiar)) key++;<br />                    for (u08 x=0; x&lt;6; x++) if (x!=(key-1)) key_lock[x]=0;  // Usuwanie blokad dla puszczonych klawiszy<br />                    if (key &amp;&amp; (!key_lock[key-1]))                                                  // Jezeli wcisnieto klawisz i nie ma blokady<br />                    {<br />                         key_lock[key-1]=1;<br />                            return wartosci_klawiszy[key-1];<br />                }<br />            }<br />            return NIC;                                                                                               // Jezeli nie wcisnieto klawisza<br />    }<br /><br /><br /><br />    inline void ustawienia(void)<br />    {<br />    //--------------------Ustawienia timera zegara<br />        ASSR |=(1&lt;&lt;AS2);//async<br />        TCNT2 = 0x00;<br />        TCCR2 |=(1&lt;&lt;CS22)|(1&lt;&lt;CS20);//128<br />        TIMSK |=(1&lt;&lt;TOIE2);<br />    //--------------------Ustawienia timera zegara - KONIEC<br /><br />    //--------------------Ustawienie ADC<br />        ADMUX  |= (1&lt;&lt;REFS1)|(1&lt;&lt;REFS0);            //napięcie odniesienia 2,56V<br />        ADMUX   |= PIN_ADC;<br />        //ADMUX  |= (1&lt;&lt;ADLAR);  //wynik wyrównaj do lewej<br />        ADCSRA |= (1&lt;&lt;ADEN)    //ADEN=1 włączenie przetwornika ADC)<br />               | (1&lt;&lt;ADSC)    //start pierwszego pomiaru<br />               | (1&lt;&lt;ADATE)    //włącz Free Running Mode<br />               | (1&lt;&lt;ADIE)    //włącz przerwania z ADC<br />               | (1&lt;&lt;ADPS1)   //ustawienie preskalera na (ADPS1 i 0) 8<br />               | (1&lt;&lt;ADPS0);<br />    //--------------------Ustawienie ADC - KONIEC<br />        sei();<br />        lcd_init();<br />    }<br /><br />    void wyswietl_czas (void)<br />    {<br />        // Godziny<br />        lcd_locate(1,0);<br />        if (godz&lt;10) lcd_char('0');<br />        lcd_int(godz);<br /><br />        // Minuty<br />        lcd_locate(1,3);<br />        if (min&lt;10) lcd_char('0');<br />        lcd_int(min);<br /><br />        // Sekundy<br />        lcd_locate(1,6);<br />        if (sek&lt;10) lcd_char('0');<br />        lcd_int(sek);<br />    }<br /><br />//--------------------Zegar<br />    inline void zegar_przekrecenie (void)<br />    {<br />        if (sek&gt;59)<br />        {<br />            sek=0;<br />            if (++min&gt;59)<br />            {<br />                    min=0;<br />                    if (++godz&gt;23) godz=0;<br />            }<br />         }<br />    }<br />//--------------------Zegar - KONIEC<br /><br />//--------------------Miganie podczas nastawy czasu<br />    inline void set_time (u08 ktora_czesc) // 0-h 1-m 2-s<br />    {<br />            if (sek%2) for (u08 licznik=0; licznik&lt;=2; licznik++) if (licznik!=ktora_czesc)<br />            {<br />                    lcd_locate(1, licznik*3);<br />                    lcd_str(&quot;  &quot;);<br />            }<br />    }<br />//--------------------Miganie podczas nastawy czasu - KONIEC<br />    int main (void)<br />    {<br />        _delay_ms(10);<br /><br />        ustawienia();<br /><br />        while(1)<br />        {<br />            przycisk_wcisniety=rozpisz_klawisze();<br />            zegar_przekrecenie();<br /><br />            static int8_t menu=0;<br />            if(przycisk_wcisniety==RIGHT)menu++;<br />if(menu&gt;2)menu=0;<br />            else if (przycisk_wcisniety==LEFT)menu--;<br />if(menu&lt;0)menu=2;<br /><br /><br />            switch(menu)<br />            {<br />            case 0:<br />            lcd_locate(0,0);<br />            lcd_str(&quot;Temp:           &quot;);<br /><br />            //dwukropek<br />            if ((sek % 2) == 1 ){<br />            lcd_locate(1,5);<br />            lcd_str(&quot;:&quot;);<br />            lcd_locate(1,2);<br />            lcd_str(&quot;:&quot;);<br />            }<br />            else{<br />                    lcd_locate(1,5);<br />                    lcd_str(&quot; &quot;);<br />                    lcd_locate(1,2);<br />                    lcd_str(&quot; &quot;);<br /><br /><br />            }<br /><br />            wyswietl_czas();<br /><br />        break;<br />    static uint8_t i;<br />        case 1:<br /><br /><br /><br />            if(przycisk_wcisniety==OK){<br />        i++;<br />        if(i&gt;4)i=0;<br />            }<br />        if(przycisk_wcisniety==ESC){<br />        TIMSK |=(1&lt;&lt;TOIE2);<br />        menu=0;<br />        lcd_cls();<br />            }<br /><br />            if(i==0){<br />         lcd_locate(0,0);<br />            lcd_str(&quot;UST. ZEGARA.    &quot;);<br />            }<br />            if(i==1){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;STOP            &quot;);<br /><br />            }<br />            if(i==2){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;GODZINY:        &quot;);<br /><br />            }<br />            if(i==3){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;MINUTY:         &quot;);<br /><br />            }<br />            if(i==4){<br />            lcd_locate(0,0);<br />            lcd_str(&quot;SEKUNDY:        &quot;);<br /><br />            }<br /><br />            //dwukropek<br />            lcd_locate(1,5);<br />            lcd_str(&quot;:&quot;);<br />            lcd_locate(1,2);<br />            lcd_str(&quot;:&quot;);<br /><br />            wyswietl_czas();<br /><br />        break;<br /><br />        case 2:<br />                        lcd_locate(0,0);<br />                        lcd_str(&quot;UST. TEMP.      &quot;);<br />        break;<br />        }<br /><br />        }<br />    }<br /><br />    //--------------------Przerwanie ADC<br />    ISR(ADC_vect)<br />    {<br />            static u08 licznik=0;<br />            static u16 pomiary=0;<br />            pomiary+=ADCW;<br />            if (++licznik&gt;=64)<br />            {<br />                    ADC_pomiar=(pomiary&gt;&gt;6);        // obsługa przerwania po zakończeniu pomiaru ADC i usrednianie wyniku<br />                    flaga_klaw=1;<br />                    pomiary=0;                                      // zerowanie zmiennych do usredniania<br />                    licznik=0;<br />            }<br />    }<br />    //--------------------Przerwanie ADC - KONEC<br /><br />    //--------------------Przerwanie zegara<br />    ISR(TIMER2_OVF_vect) {sek++;}<br />    //--------------------Przerwanie zegara - KONIEC<br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=493">Jeżyk-1</a> — 29 mar 2013, o 17:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[barney]]></name></author>
<updated>2013-03-29T17:45:07+01:00</updated>
<published>2013-03-29T17:45:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32369#p32369</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32369#p32369"/>
<title type="html"><![CDATA[Re: Regulator temperatury na atmega 16]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2636&amp;p=32369#p32369"><![CDATA[
No nie całkiem - u mnie się jeszcze linie 5 i 18 zmieniły. I upewnij się że ta procedura zwraca tylko raz kod klawisza jeżeli jest wciśnięty - bez tego w życiu tego nie oprogramujesz.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />I wstawiaj za każdym razem kompletny kod.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=973">barney</a> — 29 mar 2013, o 17:45</p><hr />
]]></content>
</entry>
</feed>