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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-08-10T13:29:53+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=7997&amp;mode</id>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-10T13:29:53+01:00</updated>
<published>2014-08-10T13:29:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90923#p90923</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90923#p90923"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90923#p90923"><![CDATA[
Dzięki Jacek, kot już działa. Zadziałał jak tylko wywaliłem tą linijkę ze zmienna w obsludze przrwania. Aczkowliek zostawiłem TImer0 ponieważ tak właśnie miało być, bo multipleksowanie jest zriobione na Timer2. W Atmega8 tylko Timer2 dzialać moze w trybie CTC, stad małe zamieszanie <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=5194">MisiekZPieklaRodem</a> — 10 sie 2014, o 13:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-08-10T10:54:01+01:00</updated>
<published>2014-08-10T10:54:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90907#p90907</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90907#p90907"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90907#p90907"><![CDATA[
Jeśli używasz biblioteki z BB do multipleksowania to właśnie z tego powodu nie działa ci przerwanie <strong>TIMER_OVF_wect</strong> bo ten sam timer ale w trybie CTC jest używany do multipleksowania. Obsługę przerwania Overflow zrób na np. Timerze2. <br /><br />Poza tym masz w kodzie kilka baboli.<br />Przed funkcją main tworzysz zmienną licznik2 (linia 20) i wewnątrz przerwania też tworzysz zmienną licznik2 (linia 88). To nie są te same zmienne mimo, że mają takie same nazwy. Zwiększanie wartości licznika w przerwaniu nie będzie widoczne na zewnątrz przerwania np. w funkcji uint8_t key_down2(void). Z tego powodu warunek  if(licznik2&gt;1) nigdy ci nie zadziała. <br />Dlatego wywal to [syntax=c]volatile uint8_t licznik2=1;[/syntax] z przerwania.<br /><br />Zmienna licznik2 jest typu uint8_t a w przerwaniu masz warunek [syntax=c]if(licznik2&gt;1000) licznik2=1;[/syntax]<br />Ten warunek nigdy się nie spełni bo licznik2 przyjmuje wartości w przedziale 0...255.<br /><br />Poniżej poprawiony kod (nie kot)<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;d_led.h&quot;<br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br />#define KEY2 (1&lt;&lt;PB0)<br />//#define KEY3 (1&lt;&lt;PB1)<br />#define jumper_down !(PINB &amp; KEY1)<br />#define jumper_down2 !(PINB &amp; KEY2)<br />//#define jumper_down3 !(PINB &amp; KEY3)<br />uint8_t key_lock=1;<br />uint8_t key_down(void);<br />uint8_t key_down2(void);<br />//uint8_t key_down3(void);<br /><br />uint8_t counter=0;<br />volatile uint8_t licznik2;<br /><br /><br />int main(void)<br />{<br />TCCR2 |= (1&lt;&lt;CS22)|(1&lt;&lt;CS20) | (1&lt;&lt;CS21);  //preskaler1024<br />TIMSK |= (1&lt;&lt;TOIE2);<br /><br />PORTB |= KEY1|KEY2;<br /><br />d_led_init(); //inicjalizacja wyswietlacza<br />cy1=0;<br />cy2=0;<br />cy3=0;<br />cy4=0;<br /><br />sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br /><br />while(1)<br />{<br />if(key_down2())<br />{<br />counter=0;<br />cy1=cy2=cy3=cy4=0;<br />}<br /><br />if(key_down())<br />{<br />if(key_lock)<br />{<br />key_lock=0;<br />counter++;<br />cy4=counter/1000;<br />cy3=counter/100;<br />cy2=(counter%100)/10;<br />cy1=counter%10;<br /><br />}<br />}else key_lock=1;<br /><br />}<br />}<br /><br /><br />uint8_t key_down(void)<br />{<br />if(jumper_down)<br />{<br />_delay_ms(80);<br />if(jumper_down) return 1;<br />}<br />return 0;<br />}<br /><br />uint8_t key_down2(void)<br />{<br />if(jumper_down2)<br />{<br />if(licznik2&gt;1)<br />{<br />return 1;<br />}<br />}<br />return 0;<br />}<br /><br />//obsluga przerwania timer1<br />ISR(TIMER2_OVF_vect)<br />{<br />licznik2++;<br />if(licznik2&gt;100) licznik2=1;<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 10 sie 2014, o 10:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-10T07:58:59+01:00</updated>
<published>2014-08-10T07:58:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90895#p90895</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90895#p90895"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90895#p90895"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br />#define KEY2 (1&lt;&lt;PB0)<br />//#define KEY3 (1&lt;&lt;PB1)<br />#define jumper_down !(PINB &amp; KEY1)<br />#define jumper_down2 !(PINB &amp; KEY2)<br />//#define jumper_down3 !(PINB &amp; KEY3)<br />uint8_t key_lock=1;<br />uint8_t key_down(void);<br />uint8_t key_down2(void);<br />//uint8_t key_down3(void);<br /><br />uint8_t counter=0;<br />volatile uint8_t licznik2;<br /><br /><br />int main(void)<br />{<br />TCCR0 |= (1&lt;&lt;CS02|1&lt;&lt;CS00);  //preskaler1024<br />TIMSK |= (1&lt;&lt;TOIE0);<br /><br /><br /><br />    PORTB |= KEY1|KEY2;<br /><br />        d_led_init(); //inicjalizacja wyswietlacza<br />        cy1=0;<br />        cy2=0;<br />        cy3=0;<br />        cy4=0;<br /><br />        sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br /><br />        while(1)<br />        {<br />        if(key_down2()){ counter=0;<br />        cy1=cy2=cy3=cy4=0;}<br />                if(key_down()){<br />                        if(key_lock){<br /><br />                                key_lock=0;<br />                        counter++;<br />                        cy4=counter/1000;<br />                        cy3=counter/100;<br />                        cy2=(counter%100)/10;<br />                        cy1=counter%10;<br /><br />                        }<br />                }else key_lock=1;<br /><br /><br /><br />        }<br />}<br /><br /><br />uint8_t key_down(void)<br />{<br />if(jumper_down){<br />        _delay_ms(80);<br />        if(jumper_down) return 1;<br />}<br />return 0;<br />}<br /><br />uint8_t key_down2(void)<br />{<br />if(jumper_down2){<br /><br />if(licznik2&gt;1)<br />{<br /><br />return 1;}<br />}<br />return 0;<br />}<br /><br />//obsluga przerwania timer1<br />ISR(TIMER0_OVF_vect)<br />{<br />volatile uint8_t licznik2=1;<br /><br />licznik2++;<br />if(licznik2&gt;1000) licznik2=1;<br /><br />}[/syntax]<br /><br />Pozmieniałem w kocie obslugę przerwania, przeczytalem jeszcze raz note aplikacyjna atmegi8 i wychodzi ze timer jest ok ustawiony , mimo to kot nie dziala. W ogole nie ma reakcji na obsluge przycisku jumper_down2. Wstawilem nawet debugrera na 1 diodzie i sie w tej obsludze nie zapala....wtf?<br />Anybody help?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 10 sie 2014, o 07:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2014-08-05T20:01:05+01:00</updated>
<published>2014-08-05T20:01:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90362#p90362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90362#p90362"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90362#p90362"><![CDATA[
Kompilator wywala ci ostrzeżenie bo stworzyłeś zmienną wewnątrz funkcji obsługi przerwania a nigdzie w kodzie jej nie używasz. <br /><br />Zmienna utworzona wewnątrz przerwania nie jest tą samą zmienną utworzoną przed funkcją main mimo, że ich nazwy są takie same.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 5 sie 2014, o 20:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-05T19:27:29+01:00</updated>
<published>2014-08-05T19:27:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90356#p90356</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90356#p90356"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90356#p90356"><![CDATA[
ISR(TIMER0_OVF_vect)<br />{<br />volatile uint8_t licznik2=1;  &lt;-- przy tej linijce mam warning: unused variable licznik2<br />}<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 5 sie 2014, o 19:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[NCIS]]></name></author>
<updated>2014-08-05T18:42:36+01:00</updated>
<published>2014-08-05T18:42:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90348#p90348</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90348#p90348"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90348#p90348"><![CDATA[
masz sie przejmować, powiedz jaki błąd masz jeszcze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=295">NCIS</a> — 5 sie 2014, o 18:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-05T18:39:11+01:00</updated>
<published>2014-08-05T18:39:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90347#p90347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90347#p90347"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90347#p90347"><![CDATA[
Jak dam ==1, to znika ten robaczek, ale za to pojawia sie jakis blad w linijce gdzie mam obsluge przerwania :/<br /><br />W sumie wszystko dziala, wiec mam sie tym przejmowac i to drazyc czy olać ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 5 sie 2014, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[NCIS]]></name></author>
<updated>2014-08-05T16:45:47+01:00</updated>
<published>2014-08-05T16:45:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90338#p90338</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90338#p90338"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90338#p90338"><![CDATA[
bo ==1 to : czy coś jest równe 1<br />a =1 to : zmienna = 1, czyli przypisanie wartości<br /><br />___________________________<br /><br />poza tym masz chyba nie tą konsole otwartą co trzeba jeżeli mówisz że nie pokazała błędów<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=295">NCIS</a> — 5 sie 2014, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-05T16:28:18+01:00</updated>
<published>2014-08-05T16:28:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90336#p90336</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90336#p90336"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90336#p90336"><![CDATA[
A dlaczego ==1 a nie =1 ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 5 sie 2014, o 16:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-08-04T20:54:20+01:00</updated>
<published>2014-08-04T20:54:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90227#p90227</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90227#p90227"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90227#p90227"><![CDATA[
Masz błąd, gdyż powinno być<br />[syntax=c]if(licznik2==1)<br />{<br />//dalsza część programu<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 4 sie 2014, o 20:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-04T19:19:41+01:00</updated>
<published>2014-08-04T19:19:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90213#p90213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90213#p90213"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90213#p90213"><![CDATA[
Czesc, mam taki kot, który przerobiłem dzięki NCIS. Wszystko działa, nawet dołożyłem jeszcze jeden jumperek, który zeruje i resetuje wyswietlacz. Działa on na przerwaniu timera0 Atmegi8, zatem włącza się po przepełnieniu. Tak czy siak działa to poprawnie.<br />Ale coś mi spedza sen z powiek.<br /><br />1.Program kompiluje sie prawidłowo, bez błędów w consoli, ale w 76 linijce jest jakiś robaczek &quot;possible assignment in condition 'licznik2=1&quot;  dlaczego tak sie dzieje i czy w przyszlości to nie bedzie stanowic jakiegos problemu?<br /><br />2. Czy do obsługi jumpera mogę użyć procedury przerwania z pliku d_led.c jesli obsługuje on już multiplekser? A jesli tak to czy mogę do tego celu użyć tej zmiennej, która jest użyta w jego procedurze przerwania czy powołać nową zmienną volatile?<br /><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br />#define KEY2 (1&lt;&lt;PB0)<br />//#define KEY3 (1&lt;&lt;PB1)<br />#define jumper_down !(PINB &amp; KEY1)<br />#define jumper_down2 !(PINB &amp; KEY2)<br />//#define jumper_down3 !(PINB &amp; KEY3)<br />uint8_t key_lock=1;<br />uint8_t key_down(void);<br />uint8_t key_down2(void);<br />//uint8_t key_down3(void);<br /><br />uint8_t counter=0;<br />volatile uint8_t licznik2;<br /><br />int main(void)<br />{<br /><br />TCCR0 |= (1&lt;&lt;CS02|1&lt;&lt;CS00);  //preskaler1024<br />TIMSK |= (1&lt;&lt;TOIE0);<br /><br /><br />    PORTB |= KEY1|KEY2;<br /><br />        d_led_init(); //inicjalizacja wyswietlacza<br />        cy1=0;<br />        cy2=0;<br />        cy3=0;<br />        cy4=0;<br /><br />        sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br /><br />        while(1)<br />        {<br />        if(key_down2()){ counter=0;<br />        cy1=cy2=cy3=cy4=0;}<br />                if(key_down()){<br />                        if(key_lock){<br /><br />                                key_lock=0;<br />                        counter++;<br />                        cy4=counter/1000;<br />                        cy3=counter/100;<br />                        cy2=(counter%100)/10;<br />                        cy1=counter%10;<br /><br />                        }<br />                }else key_lock=1;<br /><br /><br /><br />        }<br />}<br /><br /><br />uint8_t key_down(void)<br />{<br />if(jumper_down){<br />        _delay_ms(80);<br />        if(jumper_down) return 1;<br />}<br />return 0;<br />}<br /><br />uint8_t key_down2(void)<br />{<br />if(jumper_down2){<br /><br />if(licznik2=1)<br />{<br /><br />return 1;}<br />}<br />return 0;<br />}<br /><br />//obsluga przerwania timer1<br />ISR(TIMER0_OVF_vect)<br />{<br />volatile uint8_t licznik2=1;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 4 sie 2014, o 19:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[NCIS]]></name></author>
<updated>2014-08-03T21:42:31+01:00</updated>
<published>2014-08-03T21:42:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90095#p90095</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90095#p90095"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90095#p90095"><![CDATA[
<div class="quotetitle">kaka0204 napisał(a):</div><div class="quotecontent"><br />Program będzie wtedy nie blokujący, przez co w czasie 80 ms bedziesz mógl kliknąć 10 razy a procek i tak to zliczy.<br /></div><br /><br />oj chyba nie, bo właśnie o to chodzi, żeby tego nie zliczał. Ale fakt program będzie nieblokujący i też jako następny krok polecam zapoznanie się z timerami.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=295">NCIS</a> — 3 sie 2014, o 21:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-08-03T14:11:14+01:00</updated>
<published>2014-08-03T14:11:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90026#p90026</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90026#p90026"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90026#p90026"><![CDATA[
Program przez 80 ms nic nie robi. Co jeżeli w ciągu tych 80 ms klikniesz jumperka 2 razy? Program zliczy tylko jedno naciśnięcie. Także polecam zapoznać sie z notą katalogową procka i użyć przerwania INTx. Program będzie wtedy nie blokujący, przez co w czasie 80 ms bedziesz mógl kliknąć 10 razy a procek i tak to zliczy. Jak będziesz miał problemy ze skonfigurowaniem przerwania to pisz śmiało. Na pewno ktoś pomoże <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=889">kaka0204</a> — 3 sie 2014, o 14:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[NCIS]]></name></author>
<updated>2014-08-03T12:55:16+01:00</updated>
<published>2014-08-03T12:55:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90024#p90024</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90024#p90024"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90024#p90024"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br />#define jumper_down !(PINB &amp; KEY1)<br /><br />uint8_t key_lock=1;<br />uint8_t key_down(void);<br />uint8_t counter=1;<br /><br />int main(void)<br />{<br /><br />        PORTB |= KEY1;<br /><br />        d_led_init(); //inicjalizacja wyswietlacza<br />        cy1=0;<br />        cy2=0;<br />        cy3=0;<br />        cy4=0;<br /><br />        sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br />        while(1)<br />        {<br />                if(key_down()){<br />                if(key_lock){<br /><br />                key_lock=0;<br />                        counter++;<br /><br />                        cy1=counter/100;<br />                        cy2=(counter%100)/10;<br />                        cy3=counter%10;<br /><br />                }<br />                }else key_lock=1;<br /><br /><br />        }<br />}<br /><br />uint8_t key_down(void)<br />{<br />if(jumper_down){<br />_delay_ms(80);<br />if(jumper_down) return 1;<br />}<br />return 0;<br />}[/syntax]<br /><br />spróbuj tak<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=295">NCIS</a> — 3 sie 2014, o 12:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-03T12:16:11+01:00</updated>
<published>2014-08-03T12:16:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90022#p90022</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90022#p90022"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90022#p90022"><![CDATA[
Kaka licznik ma zliczać impulsy z jumperka i wyswietlic ich ilość na wyświetlaczu 7 segmentowym 4 cyfrowym. Ot cala filozofia.<br /><br />Przerwan INT jeszcze nigdy w zyciu nie ustawialem.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 21 minutach ]</span></strong><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br />#include &lt;util/delay.h&gt;<br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br />#define jumper_down !(PINB &amp; KEY1)<br /><br />uint8_t key_lock;<br />uint8_t key_down(void);<br />uint8_t counter=1;<br /><br />int main(void)<br />{<br /><br />PORTB |= KEY1;<br /><br />d_led_init(); //inicjalizacja wyswietlacza<br />cy1=0;<br />cy2=0;<br />cy3=0;<br />cy4=0;<br /><br />sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br />while(1)<br />{<br />if(key_down())<br />{<br />counter++;<br /><br />cy4=counter/100;<br />cy3=counter/10;<br /><br />}<br /><br /><br />}<br />}<br /><br />uint8_t key_down(void)<br />{<br />if(jumper_down)<br />{_delay_ms(80);<br />if(jumper_down) return 1;<br />}<br />return 0;<br />}[/syntax]<br /><br />Kot z delayem, dziala ale nie liczy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 3 sie 2014, o 12:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-08-03T12:10:48+01:00</updated>
<published>2014-08-03T12:10:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90021#p90021</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90021#p90021"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90021#p90021"><![CDATA[
[syntax=c]if(key_down())<br />                {<br />                        counter++;<br />                        if(counter&gt;=100) counter=1;<br />                        cy1=counter/100;<br />                        cy2=(counter%100)/10;<br />                        cy3=counter%10;<br /><br /> <br /> <br />                }[/syntax]<br /><br />spróbuj w ten sposób:)<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />[syntax=c]if(counter&gt;=100) counter=1;[/syntax]   i to tez bym usuną<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 3 sie 2014, o 12:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-03T12:12:02+01:00</updated>
<published>2014-08-03T12:03:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90019#p90019</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90019#p90019"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90019#p90019"><![CDATA[
[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br /><br /><br />#define KEY1 (1&lt;&lt;PB2)<br /><br /><br />uint8_t key_lock;<br />uint8_t key_down(void);<br />uint8_t counter=1;<br /><br />int main(void)<br />{<br /><br />PORTB |= KEY1;<br /><br />d_led_init(); //inicjalizacja wyswietlacza<br />cy1=5;<br />cy2=9;<br />cy3=4;<br />cy4=1;<br /><br />sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br />while(1)<br />{<br />if(key_down())<br />{<br />counter++;<br />if(counter&gt;=100) counter=1;<br />cy1=counter;<br /><br /><br />}<br /><br /><br />}<br />}<br /><br />uint8_t key_down(void)<br />{<br />if(!key_lock &amp;&amp; !(PINB &amp; KEY1))<br />{<br />key_lock=1;<br />return 1;<br />}<br />else if(key_lock &amp;&amp; (PINB &amp; KEY1))<br />{key_lock++;<br />return 0;<br />}<br />}[/syntax]<br /><br />Tak aktualnie wyglada kot. Narazie wrzucam tylko na 1 segment to co powinien wskazywać licznik.Niestety po naciśnięciu jumperka wyskakują przypadkowe znaki ;/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 3 sie 2014, o 12:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kaka0204]]></name></author>
<updated>2014-08-03T11:50:29+01:00</updated>
<published>2014-08-03T11:50:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90017#p90017</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90017#p90017"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90017#p90017"><![CDATA[
Uruchom przerwanie INTx i w obsłudze przerwanie po prostu inkrementuj zmienną i ją wyświetlaj na wyświetlaczu. Napisz coś więcej o tym liczniku.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=889">kaka0204</a> — 3 sie 2014, o 11:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-08-03T11:13:57+01:00</updated>
<published>2014-08-03T11:13:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90013#p90013</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90013#p90013"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90013#p90013"><![CDATA[
pomyśl trochę i się na pewno uda, to nie jest trudne <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=1672">Nondzu</a> — 3 sie 2014, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-03T10:49:48+01:00</updated>
<published>2014-08-03T10:49:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90005#p90005</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90005#p90005"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90005#p90005"><![CDATA[
Faktycznie, dzięki <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Teraz działa przycisk, ale nadal rozkminiam jak zrobić z tego licznik <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=5194">MisiekZPieklaRodem</a> — 3 sie 2014, o 10:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2014-08-03T10:34:39+01:00</updated>
<published>2014-08-03T10:34:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90002#p90002</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90002#p90002"/>
<title type="html"><![CDATA[Re: multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90002#p90002"><![CDATA[
napisz  na jaki uC to jest kod <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />dobra mam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Tam gdzie masz makro KEY1 usun średnik <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 5 minutach ]</span></strong><br /><br />ma być [syntax=c]#define KEY1 (1&lt;&lt;PB2)[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 3 sie 2014, o 10:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MisiekZPieklaRodem]]></name></author>
<updated>2014-08-03T10:25:43+01:00</updated>
<published>2014-08-03T10:25:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90000#p90000</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90000#p90000"/>
<title type="html"><![CDATA[multiplekser- dokoptowanie jumpera]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7997&amp;p=90000#p90000"><![CDATA[
Cześć, mam taki problem. Chcę dołożyć obsługę jumperka w programie do multipleksowania wyswietlacza  7 segomentowego.<br /><br />Kod pierwotny - do mutlipleksowania- działa bez zarzutu.Natomiast gdy tylko dołoże kod do obslugi przycisku wywala błędy. Kombinowałem z nawiasami, srednikami, bez efektu. Może ktoś wie z czym problem jest?<br /><br />W ogóle to chcę, przerobić to na licznik impulsów zliczanych z jumperka. Wystarczy mi nawet żeby liczył do 255. Lepiej zrobić to programowo czy poprostu dołożyć do Atmegi jakiś dekoder kodu BCD i z niego puścić sygnał na wyświetlacz?<br /><br />poniżej program z pliku main.c:<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;d_led.h&quot;<br /><br /><br />#define KEY1 (1&lt;&lt;PB2);<br /><br /><br />uint8_t key_lock;<br /><br />int main(void)<br />{<br /><br />PORTB |= KEY1;<br /><br />d_led_init(); //inicjalizacja wyswietlacza<br />cy1=5;<br />cy2=9;<br />cy3=4;<br />cy4=1;<br /><br />sei();  //wlaczenie globalnego zezwolenia na przerwania<br /><br />while(1)<br />{<br /><br />if(!key_lock &amp;&amp; !(PINB &amp; KEY1)){<br />key_lock=1;<br /><br />}<br />else if(key_lock &amp;&amp; (PINB &amp; KEY1))  key_lock++;<br /><br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5194">MisiekZPieklaRodem</a> — 3 sie 2014, o 10:25</p><hr />
]]></content>
</entry>
</feed>