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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-12-27T21:29:04+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=21778&amp;mode</id>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-12-27T21:29:04+01:00</updated>
<published>2018-12-27T21:29:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215126#p215126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215126#p215126"/>
<title type="html"><![CDATA[Re: Timer0 sterowany z klawiatury.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215126#p215126"><![CDATA[
Albo super timery programowe w YB <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=1546">micky</a> — 27 gru 2018, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-12-27T19:50:24+01:00</updated>
<published>2018-12-27T19:50:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215119#p215119</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215119#p215119"/>
<title type="html"><![CDATA[Re: Timer0 sterowany z klawiatury.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215119#p215119"><![CDATA[
Może jednak zajrzeć do Bluebooka, którego zdaje się posiadasz? ... masz tam 100%-tową odpowiedź ...<br /><br />Tylko nie odpowiedź o jakimś zbiorniku i podlewaniu, czy opróżnianiu - masz odpowiedź w temacie jak wykonywać wiele czynności w jednym czasie - zajrzyj pan do rozdziału<br /><br /><span style="color: #0080FF">&quot;Wstęp do systemów czasu rzeczywistego&quot;</span><br /><br />I zobacz jak się do tego podchodzi ... i to bez żadnego, nawet najmniejszego delaja<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 gru 2018, o 19:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[KampoPampo]]></name></author>
<updated>2018-12-27T19:09:23+01:00</updated>
<published>2018-12-27T19:09:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215116#p215116</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215116#p215116"/>
<title type="html"><![CDATA[Timer0 sterowany z klawiatury.]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21778&amp;p=215116#p215116"><![CDATA[
Witam. Założeniem projektu jest to, żeby podlewanie było zależne od czasu jaki wpiszemy. Do tego dołączony jest kontrola stanu zbiornika. Głównym problemem jest brak reakcji układu na suchobieg, jeśli timer odlicza czas (gdy czujnik pływakowy pokaże stan 0, pompka dalej działa, a chciałbym, żeby przerywało swoją pracę). Zakres czasu w jakim możliwa jest praca to 1 minuta do 60 minut. W jaki sposób mógłbym zmieniać czas działania timera z klawiatury tak, żeby reagował również na brak wody w zbiorniku a nie działał do końca mierzonego czasu?<br /><br />Dodam, że wcześniej próbowałem uzyskać rezultat z funkcją &quot;my_delay&quot;, ale jest to nic innego jak pętla, która musi zakończyć swoją pracę, żeby reszta pętli zaczynała reagować.<br /><br />Wiem, że można wykorzystać przerwania, żeby uzyskać wielokrotność zliczania impulsów.<br /><br />Program główny<br />[syntax=c]if(key == 8) // Zmienic pozycje napisow.<br /> {<br />  _delay_ms(400);<br />  skok2:<br />   lcd_cls();<br />   lcd_locate(0,0);<br />        // lcd_cls();<br />      lcd_str(&quot;Czas podlewania:&quot;);<br /><br /><br /><br />      czas = 0;       // zerowanie licznika<br /><br />           sei(); //włączenie globalnego przerwania<br /><br />while(true)<br />{<br />          switch (PINB &amp; 0x1f)<br />             {<br />             case 0x1f:<br />             poziom=0;<br />             break;<br /><br />             case 0x1e:<br />             poziom=1;<br />             break;<br /><br />             case 0x1c:<br />          poziom=2;<br />          break;<br /><br />             case 0x18:<br />             poziom=3;<br />             break;<br /><br />             case 0x10:<br />                poziom=4;<br />                break;<br /><br />             case 0x00:<br />                poziom=5;<br />                break;<br />             }<br /><br />             int key = read_key();<br />              if (key != -1) {<br />            if(key==16)<br />            {<br />            licz=0;<br />            PORTA &amp;= ~(1&lt;&lt;PA3);<br />            PORTC &amp;= ~(1&lt;&lt;PC2);<br />            goto skok2;<br />            }<br />              if(key == 13)<br />            {<br />              _delay_ms(500);<br />              licz=0;<br />              PORTA &amp;= ~(1&lt;&lt;PA3);<br />              PORTC &amp;= ~(1&lt;&lt;PC2);<br />              goto skok;<br />            }<br /><br />                  if (key == 15)<br />                  {<br />             check_result(licz);<br /><br /><br />             lcd_locate(0,0);<br />             lcd_str(&quot; START  PODLEW. &quot;);<br />         lcd_locate(1,0);<br />         lcd_str(&quot;################&quot;);<br /><br />//<br />        if(licz&gt;0 &amp;&amp; licz&lt;=60)<br />         {<br />        PORTC |= (1&lt;&lt;PC2);<br /><br />        _delay_ms(500);<br />        PORTA |= (1&lt;&lt;PA3);<br />        //timer();<br />        my_delay(czas);<br />//        lcd_locate(0,0);<br />//        lcd_str(&quot;   ZAKONCZONO   &quot;);<br />//        lcd_locate(1,0);<br />//        lcd_str(&quot;D-WROC || *-MENU&quot;);<br />//<br />//        PORTA &amp;= ~(1&lt;&lt;PA3);<br />//        _delay_ms(500);<br />//        PORTC &amp;= ~(1&lt;&lt;PC2);<br />         }<br /><br />        else<br />             {<br />             licz=0;<br />             lcd_locate(0,0);<br />             lcd_str(&quot;*POZA  ZAKRESEM*&quot;);<br />             lcd_locate(1,0);<br />             lcd_str(&quot; WPISZ PONOWNIE &quot;);<br /><br />             _delay_ms(2000);<br />             goto skok2;<br />                }<br /><br />//          lcd_cls();<br />//          lcd_locate(0,0);<br />//          lcd_str(&quot;   ZAKONCZONO   &quot;);<br />//          lcd_locate(1,0);<br />//          lcd_str(&quot;D-WROC || *-MENU&quot;);<br />//          PORTA &amp;= ~(1&lt;&lt;PA3);<br />//      _delay_ms(500);<br />//      PORTC &amp;= ~(1&lt;&lt;PC2);<br />                  }<br /><br />                  else {<br />                      licz = licz * 10 + a;<br /><br />                      lcd_locate(1,10);<br />                      lcd_int(licz);<br />                      lcd_locate(1,15);<br />                lcd_str(&quot; &quot;);<br />                  }<br />            }<br /><br />       if(poziom&lt;1)<br />       {<br />      lcd_locate(0,0);<br />      lcd_str(&quot;      BRAK      &quot;);<br />      lcd_locate(1,0);<br />      lcd_str(&quot;      WODY      &quot;);<br />      licz=0;<br />      PORTA &amp;= ~(1&lt;&lt;PA3);<br />      _delay_ms(500);<br />      PORTC &amp;= ~(1&lt;&lt;PC2);<br />      _delay_ms(100);<br />      goto skok2;<br />       }<br />              }<br /> }[/syntax]<br /><br />Timer0<br /><br />[syntax=c]void timer() //200ms<br />{<br />TCCR0 = (1&lt;&lt;CS02) | (1&lt;&lt;CS00);<br />TCNT0 = czas;<br />//TCNT0 = 60;<br />while((TIFR&amp;(1&lt;&lt;TOV0))==0);//sprawdz flage<br />TIFR = (1&lt;&lt;TOV0);<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=18498">KampoPampo</a> — 27 gru 2018, o 19:09</p><hr />
]]></content>
</entry>
</feed>