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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-01-24T15:28:55+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=17424&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-01-24T15:28:55+01:00</updated>
<published>2017-01-24T15:28:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180659#p180659</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180659#p180659"/>
<title type="html"><![CDATA[Re: prosty programik - kłopot w rozbudowaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180659#p180659"><![CDATA[
<div class="quotetitle">danko91 napisał(a):</div><div class="quotecontent"><br />Ale jak to zrealizować? I czy to musi się znajdować w kodzie w miejscu gdzie sprawdza czy przycisk jest wciśnięty? Może chociaż jakaś podpowiedź:<br /></div><br /><br />Przede wszystkim poczytaj Bluebooka dalej , żeby dotrzeć do rozdziału &quot;projekt wielozadaniowy&quot;, naucz się korzystać z timerów programowych.<br /><br />Poza tym w dalszej części książki masz opisaną porządną obsługę przycisków, ale gdyby była za trudna to zaglądaj na mojego bloga i użyj tej co wszyscy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/10/obsuga-klawiszy-drgania-stykow-cd2.html" >http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 24 sty 2017, o 15:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[worner]]></name></author>
<updated>2017-01-24T15:24:57+01:00</updated>
<published>2017-01-24T15:24:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180658#p180658</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180658#p180658"/>
<title type="html"><![CDATA[Re: prosty programik - kłopot w rozbudowaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180658#p180658"><![CDATA[
<div class="quotetitle">danko91 napisał(a):</div><div class="quotecontent"><br />Druga sprawa to, że w Eclipse gdy piszę kod i w komentarzu chcę napisać literę &quot;ć&quot;, wciskając &quot;alt+c&quot; wyskakuje mi okno Folder Selection. Można jakoś to zmienić?<br /></div><br /><br />We menu z paska Windows/Preferences wybierz General/ Keys i usuń ten skrót alt+c. Przy okazji usuń też inne.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=150">worner</a> — 24 sty 2017, o 15:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danko91]]></name></author>
<updated>2017-01-24T12:52:17+01:00</updated>
<published>2017-01-24T12:44:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180646#p180646</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180646#p180646"/>
<title type="html"><![CDATA[prosty programik - kłopot w rozbudowaniu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=17424&amp;p=180646#p180646"><![CDATA[
Witam kolegów.<br /><br />Ostatnie dwa tygodnie poświęciłem nauce języka C z książki bluebook. Doszedłem do części praktycznej. Na chwilę obecną umiem i rozumiem ćwiczenie migania diodami i używania przycisków. Zanim przejdę dalej do multipleksowania postanowiłem, że najpierw napiszę programik do sterowania silnikiem na bazie zdobytej z ćwiczenia pierwszego wiedzy. Problem mam taki, że chciałbym dodać funkcję działającą jak podtrzymanie. To znaczy, że gdy załączę silnik z obrotami w lewo i nagle zachce mi się zmienić obroty na prawe to oczekuję, że wciśnięcie przycisku - obroty prawe spowoduje najpierw akcję STOP. A dopiero potem odpowiednim przyciskiem ustawie kierunek obrotów. Mam nadzieję, że w miare mnie zrozumiecie o co mi chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Nie chcę przecież akcji gdzie silnik kręci w lewo, wciskam przycisk i gwałtownie zmienia się kierunek :-O<br /><br />Oczywiście fizyczny układ jest zmontowany na płytce stykowej, zamiast przekaźników zastosowałem tranzystory NPN i diody LED które będą sygnalizować stan pracy. Zapewne nie powstanie z tego układ do użytku. Interesuje mnie tylko jak to można zrealizować. <br /><br />Kod zamieszczam poniżej:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#define Q1 (1 &lt;&lt; PB0)//pin PB0 dla tranzystora Q1 - przekaźnik ON/OFF<br />#define Q2 (1 &lt;&lt; PB1)//pin PB1 dla tranzystora Q2 - przekaźnik LEWO<br />#define Q3 (1 &lt;&lt; PB2)//pin PB2 dla tranzystora Q3 - przekaźnik PRAWO<br /><br />#define START PORTB |= Q1   //makro - włącz zasilanie<br />#define STOP PORTB &amp;= ~Q1   //makro - wyłącz zasilanie<br />#define LEWO PORTB &amp;= ~Q2   //makro - ustaw obroty w lewo<br />#define PRAWO PORTB &amp;= ~Q3  //makro - ustaw obroty w prawo<br /><br />#define PRZYCISK1 (1 &lt;&lt; PC0)//pin PC0 dla przycisku 1<br />#define PRZYCISK2 (1 &lt;&lt; PC1)//pin PC1 dla przycisku 2<br />#define PRZYCISK3 (1 &lt;&lt; PC2)//pin PC2 dla przycisku 3<br />#define PRZYCISK4 (1 &lt;&lt; PC3)//pin PC3 dla przycisku 4<br /><br />uint8_t silnik (uint8_t akcja); //deklaracja funkcji<br /><br />int main(void) //funkcja główna main<br />{<br />DDRB |= Q1 | Q2 | Q3;  //kierunek - wyjście<br />PORTB &amp;= ~(Q1 | Q2 | Q3); //wyłącz wszystkie tranzystory<br />DDRC &amp;= ~(PRZYCISK1 | PRZYCISK2 | PRZYCISK3 | PRZYCISK4); //kierunek - wejście<br />PORTC |= PRZYCISK1 | PRZYCISK2 | PRZYCISK3 | PRZYCISK4; //podciąganie do Vcc<br /><br />while(1) //pętla główna programu<br />{<br />if (silnik(PRZYCISK1)) START; //jeśli przycisk1 wciśnięty - włącz zasilanie<br />if (silnik(PRZYCISK2)) STOP;  //jeśłi przycisk2 wciśnięty - wyłącz zasilanie<br />if (silnik(PRZYCISK3)) LEWO;  //jeśli przycisk3 wciśnięty - włącz obroty w lewo<br />if (silnik(PRZYCISK4)) PRAWO; //jeśli przycisk4 wciśnięty - włącz obroty w prawo<br />}<br />}<br /><br />uint8_t silnik (uint8_t akcja)<br />{<br />if (!(PINC &amp; akcja))<br />{<br />    _delay_ms(70);<br />    if (!(PINC &amp; akcja)) return 1;<br />}   return 0;<br />}[/syntax]<br /><br />Myślałem o zastosowaniu dwóch funkcji if z warunkiem, że jeśli  PRAWO wciśnięty to LEWO zablokowane i w drugą stronę podobnie, bądź po prostu jeśli PRAWO wciśnięty, to wciskanie LEWO nie zadzała, Trzeba Wcisnąć STOP i dopiero po tym LEWO . Ale jak to zrealizować? I czy to musi się znajdować w kodzie w miejscu gdzie sprawdza czy przycisk jest wciśnięty? Może chociaż jakaś podpowiedź:)<br /><br />Druga sprawa to, że w Eclipse gdy piszę kod i w komentarzu chcę napisać literę &quot;ć&quot;, wciskając &quot;alt+c&quot; wyskakuje mi okno Folder Selection. Można jakoś to zmienić?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=16216">danko91</a> — 24 sty 2017, o 12:44</p><hr />
]]></content>
</entry>
</feed>