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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-20T23:23:02+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9342&amp;mode</id>
<entry>
<author><name><![CDATA[varaderas]]></name></author>
<updated>2014-11-20T23:23:02+01:00</updated>
<published>2014-11-20T23:23:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105234#p105234</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105234#p105234"/>
<title type="html"><![CDATA[Re: Przeróbka programu i krzaki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105234#p105234"><![CDATA[
Dziękuję Panowie za odpowiedzi ale na razie odpuszczam walkę z tym programem, jestem zbyt początkujący na chwilę obecną i np. nie potrafię dokonać modularyzacji programu. Pozdrawiam <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=6283">varaderas</a> — 20 lis 2014, o 23:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2014-11-20T17:57:39+01:00</updated>
<published>2014-11-20T17:57:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105145#p105145</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105145#p105145"/>
<title type="html"><![CDATA[Re: Przeróbka programu i krzaki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105145#p105145"><![CDATA[
Co do linii 151 to spróbuj użyć lcd_str_p(); która to czyta z pamięci flash.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 20 lis 2014, o 17:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[varaderas]]></name></author>
<updated>2014-11-20T13:26:37+01:00</updated>
<published>2014-11-20T13:26:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105092#p105092</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105092#p105092"/>
<title type="html"><![CDATA[Przeróbka programu i krzaki]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9342&amp;p=105092#p105092"><![CDATA[
Witam serdecznie, robię sobie projekcik ze strony: <!-- m --><a class="postlink" href="http://www.elektroda.pl/rtvforum/viewtopic.php?p=13352812#13352812" >http://www.elektroda.pl/rtvforum/viewto ... 2#13352812</a><!-- m --><br />i mam taki problem, że gdy przerabiam go na biblioteki p.Mirka to wychodzą mi krzaki gdyż wszystko jakby odpala się w jednej lini i jest szał na wyświetlaczu. <br /><br />Dodam, że jak wgrałem plik hex kolegi ze strony z linka to wyświetlacz działa prawidłowo. <br /><br />Pozmieniałem następująco:<br /><br />LCD_Home()   na   lcd_home()<br />LCD_WriteText   na   lcd_str()<br />LCD_GoTo()   na   lcd_locate()<br />LCD_Clear()   na   lcd_cls()<br />LCD_WriteData()  na  lcd_write_data ()<br /> <br />cały &quot;mój&quot; kod:<br />[syntax=c]/*<br /> * Sterownik_Trawiarki.cpp<br /> * ATmega 1MHz, LCD 2x16, DS18b20<br /> *<br /> * Wykonano: 07.03.2014r.<br /> *  Autor: Bartłomiej G.<br /> */<br /><br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;util/delay.h&gt;   //nagłówki bibliotek standardowych<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />//#include &quot;1Wire/ds18x20.h&quot;<br /><br /><br /><br />#define KEY_ON_OF (1&lt;&lt;PC0)<br />#define KEY_NEXT  (1&lt;&lt;PC1)<br />#define KEY_PLUS  (1&lt;&lt;PC2)<br />#define KEY_MINUS (1&lt;&lt;PC3)         //definicje przycisków<br /><br />#define LED_NAGRZEWANIE (1&lt;&lt;PC4)<br />#define LED_MIESZANIE   (1&lt;&lt;PC5)  //definicje diód sygnalizujących<br /><br />#define NAGRZEWANIE (1&lt;&lt;PB2)<br />#define MIESZANIE   (1&lt;&lt;PB1)      //definicje włączania grzałki i napowietrzacza<br /><br />#define MIESZANIE_TOG PORTB ^= (1&lt;&lt;PB1)       //togglowanie wyjściem napowietrzacza<br />#define LED_MIESZANIE_TOG PORTC ^= (1&lt;&lt;PC5)   //togglowanie diodą sygnalizacyjną<br /><br /><br />volatile uint8_t flaga_on_of, flaga_next, flaga_plus, flaga_minus; //flagi przycisków<br /><br /><br />int main(void)<br />{<br />DDRB = NAGRZEWANIE | MIESZANIE; //wyjścia grzałki i napowietrzacza<br /><br />DDRC  = LED_NAGRZEWANIE | LED_MIESZANIE;             //wyjścia diod sygnalizacyjnych<br />PORTC = KEY_ON_OF | KEY_NEXT | KEY_PLUS | KEY_MINUS; //wejścia przycisków z podciągnieciem do Vcc<br /><br /><br /><br /><br />uint8_t licznik_czasu = 15;<br />uint8_t licznik_menu = 0;<br />uint8_t stan_ster = 0;<br />        int8_t mieszanie = 0;<br />uint8_t nastawa = 40;<br />uint8_t czas = 15; //zmienne<br /><br /><br />char tablica_czasu &#91;2&#93;;<br />char tablica_temp &#91;17&#93;;<br />char tablica_temp_zadana &#91;10&#93;; //tablice przechowujące znaki w kodzie ASCII<br /><br />double temp;                  //zmiennna przechowuje aktualną wartość temperatury //<br />//unsigned char ds18b20_pad&#91;9&#93;; //tablica odczytów z DS<br /><br /><br /><br />TCCR2 |= (1&lt;&lt;CS20) | (1&lt;&lt;CS21) | (1&lt;&lt;CS22); //timer2 (8-bitowy) z preskalerem 1024 (przerwanie sprawdzające przyciski)<br />TCCR2 |= (1&lt;&lt;WGM21);                        //tryb CTC<br />TIMSK |= (1&lt;&lt;OCIE2);                        //zezwolenie na przerwania CTC<br />OCR2 = 170;                                 // 170 cykli = ~175ms<br /><br /><br />sei();                         //globalne zezwolenie na przerwania<br /><br /><br />TCCR1B = (1&lt;&lt;CS10) | (1&lt;&lt;CS11); //timer1 (16-bitowy) z preskalerem 64 (licznik czasu mieszania)<br /><br /><br /><br />lcd_init(); //inicjalizacja LCD<br />lcd_cls();<br />    lcd_locate(0,0);<br />lcd_str(&quot; TRAWIARKAA PCB&quot;);<br />lcd_locate(1, 0);<br />lcd_str(&quot; jarka&quot;);<br />_delay_ms(5000);<br />lcd_cls();           //napis powitalny<br /><br /><br />    while(1)<br />    {<br />//########################################## STAN STEROWNIKA #################################################################<br />        if (flaga_on_of)<br />{<br />stan_ster++;<br />flaga_on_of = 0;<br /><br />if (stan_ster &gt;= 2)<br />{<br />stan_ster = 0;<br />licznik_menu = 0;<br />}<br />}                       //zmień stan jeśli wciśnięty przycisk &quot;on/off&quot;<br /><br /><br />/////////////////////////////////////////// MENU NASTAW ////////////////////////////////////////////////////////////////////////<br />if (stan_ster == 0)<br />{<br /> TCNT1 = 0;         //zerowanie timera1<br /> licznik_czasu = 0; //zerowanie licznika czasu<br /><br /> PORTB = 0x00;         //RESET PORTB<br /> PORTC &amp;= ~LED_NAGRZEWANIE;<br /> PORTC &amp;= ~LED_MIESZANIE;  //wyłączenie diod sygnalizacyjnych<br /><br /> if (flaga_next)<br /> {<br /> licznik_menu++;<br /> flaga_next = 0;<br /> if (licznik_menu &gt;= 3) licznik_menu = 0;<br /> }                                                 //kolejny ekran nastaw jeśli wciśnięty przycisk &quot;next&quot;<br /><br /><br /><br />   switch (licznik_menu)<br />   {<br />//###################################### NASTAWA TEPERATURY ###############################################################<br />        case 0:<br />    if (flaga_plus)<br />    {<br />    nastawa++;<br />    flaga_plus = 0;<br /><br />    if (nastawa &gt;=60) nastawa = 30;<br />    }                                     //inkrementuj zmienną &quot;nastawa&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /><br />        if (flaga_minus)<br />        {<br />    nastawa--;<br />    flaga_minus = 0;<br /><br />    if(nastawa &lt;= 30) nastawa = 60;<br />        }                                     //dekrementuj zmienną &quot;nastawa&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br /><br /><br />    itoa(nastawa, tablica_temp_zadana, 10); //konwersja zmiennej na łańcuch znaków dla LCD<br /><br />   lcd_home();//USE_LCD_LOCATE();<br />   lcd_str(&quot;  TEMPERATURA   &quot;);<br />    lcd_locate(0, 1);<br />   lcd_str(&quot;   -  &quot;);<br />   lcd_str(tablica_temp_zadana);<br />   lcd_write_data(0xdf); //znak stopnia<br />   lcd_str(&quot;C  +   &quot;);<br /><br />               break;<br /><br /><br /><br /> //############################################ STAN MIESZANIA #################################################################<br />        case 1:<br />        if (flaga_plus)<br />        {<br />    mieszanie++;<br />    flaga_plus = 0;<br /><br />    if (mieszanie &gt;= 3) mieszanie = 0;<br />        }                                       //inkrementuj zmienną &quot;mieszanie&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /><br />    if (flaga_minus)<br />    {<br />    mieszanie--;<br />    flaga_minus = 0;<br /><br />    }<br />                                            //dekrementuj zmienną &quot;mieszanie&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br />   if (mieszanie &lt; 0) mieszanie = 2;<br /><br />   lcd_home(); //  USE_LCD_LOCATE();<br />   lcd_str(&quot;   MIESZANIE    &quot;);<br />   lcd_locate(0, 1);<br /><br />    switch (mieszanie)<br />{<br />case 0:<br />         lcd_str(&quot; &lt;AUTOMATYCZNE&gt; &quot;); //tryb automatyczny<br /><br />break;<br /><br />        case 1:<br />         lcd_str(&quot;    &lt;CIAGLE&gt;    &quot;); //tryb ciągły<br /><br />       break;<br /><br />    case 2:<br />         lcd_str(&quot;  &lt;WYLACZONE&gt;  &quot;); //tryb wyłaczony<br /><br />           break;<br />}<br /><br />                break;<br /><br /><br />//######################################### NASTAWA CZASU MIESZANIA ##############################################################<br />        case 2:<br />        switch (mieszanie)<br />        {<br />           case 0: //tryb automatyczny<br />       if(flaga_plus)<br />           {<br />           czas++;<br />           flaga_plus = 0;<br />       }                    //inkremenduj zmienną &quot;czas&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /><br />       if(flaga_minus)<br />       {<br />           czas--;<br />       flaga_minus = 0;<br /><br />       if (czas &lt;= 0) czas = 1;<br />           }                     //dekermenduj zmienną &quot;czas&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br /><br /><br /><br />           itoa(czas, tablica_czasu, 10); //konwersja na łańcuch znaków dla LCD<br /><br />           lcd_home(); // USE_LCD_LOCATE();<br />          lcd_str(&quot; CZAS MIESZANIA &quot;);<br />      lcd_locate(0, 1);<br />          lcd_str(&quot;   -  &quot;);<br />      lcd_str(tablica_czasu);<br />      lcd_str(&quot;s  +     &quot;);<br /><br />               break;<br /><br />            case 1:<br />        licznik_menu = 0;<br /><br />      break;<br /><br />    case 2:<br />        licznik_menu = 0;<br /><br />      break;<br />   }<br /><br />     break;<br /><br />}<br /><br /><br />    }<br /><br />////////////////////////////////////////////////// TRYB PRACY //////////////////////////////////////////////////////////////////////<br /> else<br /> {<br />//############################################ TERMOMETR #########################################################################<br />/*<br />if(ds18b20_ConvertT()) //polecenie pomiaru<br />{<br />_delay_ms(1);<br /><br /><br />ds18b20_Read(ds18b20_pad); // odczyt z czujnika oraz zapis w tablicy<br /><br /><br />temp = ((ds18b20_pad&#91;1&#93; &lt;&lt; 8) + ds18b20_pad&#91;0&#93;) / 16.0 ; //składa dwa bity pomiary w całość<br /><br /><br />sprintf(tablica_temp, &quot;%4.1f\xdf&quot;&quot;C&quot;, temp);// konwersja na kod ASCII i zapis w tablicy &quot;tablica_temp&quot;<br />}<br />*/<br />//############################################## WYŚWIETLACZ ############################################################<br /><br />lcd_home(); //USE_LCD_LOCATE();<br />lcd_str(&quot; &quot;);<br />lcd_str(tablica_temp);<br />lcd_str(&quot; &quot;);<br />    lcd_write_data(0x2D);<br />lcd_write_data(0x3E ); //strzałka -&gt;<br />lcd_str(&quot; &quot;);<br />lcd_str(tablica_temp_zadana);<br />lcd_write_data(0xdf); //znak stopnia<br />lcd_str(&quot;C   &quot;);<br />lcd_locate(0, 1);<br />lcd_str(&quot; TRAWIENIE  &quot;);<br /><br /><br />   //################################################# TERMOSTAT ################################################################<br /><br />      if (temp &lt; nastawa -1)<br />      {<br />      PORTB |= NAGRZEWANIE;     //włącz grzałkę<br />      PORTC |= LED_NAGRZEWANIE; //włącz diodę PC4<br />    }<br /><br />    if (temp &gt; nastawa +1) //histereza +/- 1 stopień<br />    {<br />      PORTB &amp;= ~NAGRZEWANIE;     //wyłącz grzałkę<br />      PORTC &amp;= ~LED_NAGRZEWANIE; //wyłącz diodę PC4<br />      }<br /><br /><br /> //#################################### MIESZANIE ########################################################<br /><br /> switch (mieszanie)<br /> {<br />   case 0: //tryb automatyczny<br /><br /> if(TCNT1 &gt;=15625)<br /> {<br /> TCNT1=0;<br /> licznik_czasu++;<br /> }                          //inkrementuj zmienną &quot;licznik czasu&quot; i zeruj timer1 jeśli timer1 &gt;= 15625 (1s)<br /><br /><br /> if(licznik_czasu == czas)<br /> {<br /> MIESZANIE_TOG;<br /> LED_MIESZANIE_TOG;<br /> licznik_czasu = 0;<br /> }                           //włącz/wyłącz napowietrzacz i diodę jeśli licznik czasu = czas ustawiony<br /><br />       break;<br /><br /><br />   case 1: //tryb ciągły<br /><br /> PORTB |= MIESZANIE;  //włącz napowietrzacz<br /> PORTC |= LED_MIESZANIE; //włącz diodę sygnalizacyjną<br /><br />   break;<br /><br />   case 2: //tryb wyłączony<br /><br />         PORTB &amp;= ~MIESZANIE;     //wyłącz napowietrzacz<br /> PORTC &amp;= ~LED_MIESZANIE; //wyłącz diodę sygnalizacyjną<br /><br />   break;<br /> }<br /><br />   }<br /><br /><br />  }<br />}<br /><br /><br />ISR (TIMER2_COMP_vect)<br />{<br />if (!(PINC &amp; KEY_ON_OF)) flaga_on_of = 1;<br /><br />if (!(PINC &amp; KEY_NEXT))   flaga_next = 1;<br /><br />if (!(PINC &amp; KEY_PLUS))   flaga_plus = 1;<br /><br />if (!(PINC &amp; KEY_MINUS)) flaga_minus = 1;<br />}[/syntax]<br /><br />a to kod kolegi ze strony z linka powyżej:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000"><em>#define F_CPU 1000000UL - ciekaw jestem ile milionów razy trzeba powtórzyć na tym forum że TEGO NIGDY nie robi się w kodzie - żeby to dotarło do naszych forumowiczów ? przecież już prawie co 3-4 post jest najeżony takimi uwagami - mirekk36 </em></span><br /></div><br /> <br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;stdio.h&gt;  <br />#include &lt;util/delay.h&gt;   //nagłówki bibliotek standardowych<br /> <br />#include &quot;HD44780.c&quot;<br />#include &quot;HD44780.h&quot;     //pliki obsługi LCD<br /> <br />#include &quot;ds18b20.c&quot;<br />#include &quot;ds18b20.h&quot;     //pliki obsługi DS'a<br /> <br /> <br /> <br />#define KEY_ON_OF (1&lt;&lt;PC0)<br />#define KEY_NEXT  (1&lt;&lt;PC1)<br />#define KEY_PLUS  (1&lt;&lt;PC2)<br />#define KEY_MINUS (1&lt;&lt;PC3)         //definicje przycisków<br /> <br />#define LED_NAGRZEWANIE (1&lt;&lt;PC4)<br />#define LED_MIESZANIE   (1&lt;&lt;PC5)  //definicje diód sygnalizujących<br /> <br />#define NAGRZEWANIE (1&lt;&lt;PB2)<br />#define MIESZANIE   (1&lt;&lt;PB1)      //definicje włączania grzałki i napowietrzacza<br /> <br />#define MIESZANIE_TOG PORTB ^= (1&lt;&lt;PB1)       //togglowanie wyjściem napowietrzacza<br />#define LED_MIESZANIE_TOG PORTC ^= (1&lt;&lt;PC5)   //togglowanie diodą sygnalizacyjną<br /> <br /> <br />volatile uint8_t flaga_on_of, flaga_next, flaga_plus, flaga_minus; //flagi przycisków<br /> <br /> <br />int main(void)<br />{<br />DDRB = NAGRZEWANIE | MIESZANIE; //wyjścia grzałki i napowietrzacza<br /> <br />DDRC  = LED_NAGRZEWANIE | LED_MIESZANIE;             //wyjścia diod sygnalizacyjnych<br />PORTC = KEY_ON_OF | KEY_NEXT | KEY_PLUS | KEY_MINUS; //wejścia przycisków z podciągnieciem do Vcc<br /> <br /> <br /> <br /> <br />uint8_t licznik_czasu = 15;<br />uint8_t licznik_menu = 0;<br />uint8_t stan_ster = 0;<br />int8_t mieszanie = 0;<br />uint8_t nastawa = 40; <br />uint8_t czas = 15;         //zmienne <br /> <br />char tablica_czasu &#91;2&#93;;<br />char tablica_temp &#91;17&#93;;<br />char tablica_temp_zadana &#91;10&#93;; //tablice przechowujące znaki w kodzie ASCII <br /> <br />double temp;                  //zmiennna przechowuje aktualną wartość temperatury<br />unsigned char ds18b20_pad&#91;9&#93;; //tablica odczytów z DS<br /> <br /> <br /> <br />TCCR2 |= (1&lt;&lt;CS20) | (1&lt;&lt;CS21) | (1&lt;&lt;CS22); //timer2 (8-bitowy) z preskalerem 1024 (przerwanie sprawdzające przyciski)<br />TCCR2 |= (1&lt;&lt;WGM21);                        //tryb CTC<br />TIMSK |= (1&lt;&lt;OCIE2);                        //zezwolenie na przerwania CTC<br />OCR2 = 170;                                 // 170 cykli = ~175ms<br /> <br /> <br />sei();                         //globalne zezwolenie na przerwania<br /> <br /> <br />TCCR1B = (1&lt;&lt;CS10) | (1&lt;&lt;CS11); //timer1 (16-bitowy) z preskalerem 64 (licznik czasu mieszania)<br /> <br /> <br /> <br />LCD_Initalize(); //inicjalizacja LCD<br /> <br />LCD_WriteText(&quot; TRAWIARKA PCB&quot;);<br />LCD_GoTo(4, 1);<br />LCD_WriteText(&quot;Bartek G&quot;);<br />_delay_ms(3000);<br />LCD_Clear();           //napis powitalny<br /> <br /> <br />    while(1)<br />    {<br />//########################################## STAN STEROWNIKA ###############################################<br />        if (flaga_on_of)<br />{<br />stan_ster++;<br />flaga_on_of = 0;<br /> <br />if (stan_ster &gt;= 2)<br />{<br />stan_ster = 0;<br />licznik_menu = 0;<br />}<br />}                       //zmień stan jeśli wciśnięty przycisk &quot;on/off&quot;<br /> <br /> <br />/////////////////////////////////////////// MENU NASTAW ///////////////////////////////////////////////<br />if (stan_ster == 0)<br />{<br /> TCNT1 = 0;         //zerowanie timera1<br /> licznik_czasu = 0; //zerowanie licznika czasu<br /> <br /> PORTB = 0x00;         //RESET PORTB<br /> PORTC &amp;= ~LED_NAGRZEWANIE; <br /> PORTC &amp;= ~LED_MIESZANIE;  //wyłączenie diod sygnalizacyjnych<br /> <br /> if (flaga_next)<br /> {<br /> licznik_menu++;<br /> flaga_next = 0;<br /> if (licznik_menu &gt;= 3) licznik_menu = 0; <br /> }                                                 //kolejny ekran nastaw jeśli wciśnięty przycisk &quot;next&quot;<br /> <br /> <br /> <br />   switch (licznik_menu)<br />   {<br />//###################################### NASTAWA TEPERATURY ################################################<br />        case 0: <br />    if (flaga_plus) <br />    {<br />    nastawa++;<br />    flaga_plus = 0;<br /> <br />    if (nastawa &gt;=60) nastawa = 30;<br />    }                                     //inkrementuj zmienną &quot;nastawa&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /> <br />        if (flaga_minus)<br />        {<br />    nastawa--;<br />    flaga_minus = 0;<br /> <br />    if(nastawa &lt;= 30) nastawa = 60; <br />        }                                     //dekrementuj zmienną &quot;nastawa&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br /> <br /> <br />    itoa(nastawa, tablica_temp_zadana, 10); //konwersja zmiennej na łańcuch znaków dla LCD<br /> <br />    LCD_Home();<br />    LCD_WriteText(&quot;  TEMPERATURA   &quot;);<br />    LCD_GoTo(0, 1);<br />    LCD_WriteText(&quot;   -  &quot;);<br />    LCD_WriteText(tablica_temp_zadana);<br />    LCD_WriteData(0xdf); //znak stopnia<br />    LCD_WriteText(&quot;C  +   &quot;);<br /> <br />               break;<br /> <br /> <br /> <br /> //############################################ STAN MIESZANIA ###############################################<br />        case 1:<br />        if (flaga_plus)<br />        {<br />    mieszanie++;<br />    flaga_plus = 0;<br /> <br />    if (mieszanie &gt;= 3) mieszanie = 0;<br />        }                                       //inkrementuj zmienną &quot;mieszanie&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /> <br />    if (flaga_minus)<br />    {<br />    mieszanie--;<br />    flaga_minus = 0;<br /> <br />    }    <br />                                            //dekrementuj zmienną &quot;mieszanie&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br />   if (mieszanie &lt; 0) mieszanie = 2;<br /> <br />    LCD_Home();<br />    LCD_WriteText(&quot;   MIESZANIE    &quot;);<br />    LCD_GoTo(0, 1);<br /> <br />    switch (mieszanie)<br />{<br />case 0:<br />          LCD_WriteText(&quot; &lt;AUTOMATYCZNE&gt; &quot;); //tryb automatyczny<br /> <br />break;<br /> <br />        case 1:<br />          LCD_WriteText(&quot;    &lt;CIAGLE&gt;    &quot;); //tryb ciągły<br /> <br />       break;<br /> <br />    case 2:<br />          LCD_WriteText(&quot;  &lt;WYLACZONE&gt;  &quot;); //tryb wyłaczony<br /> <br />           break;<br />}<br /> <br />                break;<br /> <br /> <br />//######################################### NASTAWA CZASU MIESZANIA ###########################################<br />        case 2:  <br />        switch (mieszanie)<br />        {<br />           case 0: //tryb automatyczny <br />       if(flaga_plus)<br />           {<br />           czas++;<br />           flaga_plus = 0;<br />       }                    //inkremenduj zmienną &quot;czas&quot; jeśli wciśnięty przycisk &quot;plus&quot;<br /> <br />       if(flaga_minus)<br />       {<br />           czas--;<br />       flaga_minus = 0;<br /> <br />       if (czas &lt;= 0) czas = 1;<br />           }                     //dekermenduj zmienną &quot;czas&quot; jeśli wciśnięty przycisk &quot;minus&quot;<br /> <br /> <br /> <br />           itoa(czas, tablica_czasu, 10); //konwersja na łańcuch znaków dla LCD<br /> <br />           LCD_Home();<br />           LCD_WriteText(&quot; CZAS MIESZANIA &quot;);<br />       LCD_GoTo(0, 1);<br />           LCD_WriteText(&quot;   -  &quot;);<br />       LCD_WriteText(tablica_czasu);<br />       LCD_WriteText(&quot;s  +     &quot;); <br /> <br />               break;<br /> <br />            case 1:<br />        licznik_menu = 0;<br /> <br />      break;<br /> <br />    case 2:<br />        licznik_menu = 0;<br /> <br />      break;<br />   }<br /> <br />     break;<br /> <br />}<br /> <br /> <br />    }<br /> <br />////////////////////////////////////////////////// TRYB PRACY ///////////////////////////////////////////<br /> else<br /> {<br />//############################################ TERMOMETR ###########################################<br /> <br />if(ds18b20_ConvertT()) //polecenie pomiaru<br />{<br />_delay_ms(1);      <br /> <br /> <br />ds18b20_Read(ds18b20_pad); // odczyt z czujnika oraz zapis w tablicy<br /> <br /> <br />temp = ((ds18b20_pad&#91;1&#93; &lt;&lt; 8) + ds18b20_pad&#91;0&#93;) / 16.0 ; //składa dwa bity pomiary w całość<br /> <br /> <br />sprintf(tablica_temp, &quot;%4.1f\xdf&quot;&quot;C&quot;, temp);// konwersja na kod ASCII i zapis w tablicy &quot;tablica_temp&quot;<br />}<br /> <br />//############################################## WYŚWIETLACZ #########################################<br /> <br />LCD_Home();<br />LCD_WriteText(&quot; &quot;);<br />LCD_WriteText(tablica_temp);<br />LCD_WriteText(&quot; &quot;);<br />LCD_WriteData(0x2D);<br />LCD_WriteData(0x3E ); //strzałka -&gt;<br />LCD_WriteText(&quot; &quot;);<br />LCD_WriteText(tablica_temp_zadana);<br />LCD_WriteData(0xdf); //znak stopnia<br />LCD_WriteText(&quot;C   &quot;);<br />LCD_GoTo(0, 1);<br />LCD_WriteText(&quot;   TRAWIENIE    &quot;); <br /> <br /> <br />   //################################################# TERMOSTAT ########################################<br /> <br />      if (temp &lt; nastawa -1)<br />      {<br />      PORTB |= NAGRZEWANIE;     //włącz grzałkę<br />      PORTC |= LED_NAGRZEWANIE; //włącz diodę PC4<br />    }<br /> <br />if (temp &gt; nastawa +1) <br />{<br />      PORTB &amp;= ~NAGRZEWANIE;     //wyłącz grzałkę<br />      PORTC &amp;= ~LED_NAGRZEWANIE; //wyłącz diodę PC4<br />      }<br /> <br /> <br /> //#################################### MIESZANIE ##################################<br /> <br /> switch (mieszanie)<br /> {<br />   case 0: //tryb automatyczny<br /> <br /> if(TCNT1 &gt;=15625)<br /> {<br /> TCNT1=0;         <br /> licznik_czasu++;     <br /> }                          //inkrementuj zmienną &quot;licznik czasu&quot; i zeruj timer1 jeśli timer &gt;= 15625 (1s)<br /> <br /> <br /> if(licznik_czasu == czas)<br /> {<br /> MIESZANIE_TOG;<br /> LED_MIESZANIE_TOG;<br /> licznik_czasu = 0;<br /> }                           //włącz/wyłącz napowietrzacz i diodę jeśli licznik czasu = czas ustawiony<br /> <br />       break;<br /> <br /> <br />   case 1: //tryb ciągły<br /> <br /> PORTB |= MIESZANIE;  //włącz napowietrzacz<br /> PORTC |= LED_MIESZANIE; //włącz diodę sygnalizacyjną<br /> <br />   break;<br /> <br />   case 2: //tryb wyłączony<br /> <br />         PORTB &amp;= ~MIESZANIE;     //wyłącz napowietrzacz<br /> PORTC &amp;= ~LED_MIESZANIE; //wyłącz diodę sygnalizacyjną<br /> <br />   break;<br /> }<br /> <br />   }<br /> <br /> <br />  }<br />}<br /> <br /> <br />ISR (TIMER2_COMP_vect)<br />{<br />if (!(PINC &amp; KEY_ON_OF)) flaga_on_of = 1;<br /> <br />if (!(PINC &amp; KEY_NEXT))   flaga_next = 1;<br /> <br />if (!(PINC &amp; KEY_PLUS))   flaga_plus = 1;<br /> <br />if (!(PINC &amp; KEY_MINUS)) flaga_minus = 1;<br />}[/syntax]<br /><br />po kompilacji mojego przerobionego kodu są warningi w liniach:<br />151: lcd_str(tablica_temp_zadana); <br />289: if (temp &lt; nastawa -1) <br /><br />Bardzo bym prosił o pomoc w nakierowaniu gdzie popełniam błąd.<br /><br />Dodam, że mam atmege 8 i wgrywam to na taktowaniu 1MHz jak autor projektu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6283">varaderas</a> — 20 lis 2014, o 13:26</p><hr />
]]></content>
</entry>
</feed>