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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-06-07T12:13:43+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=15538&amp;mode</id>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-06-07T12:13:43+01:00</updated>
<published>2016-06-07T12:13:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161825#p161825</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161825#p161825"/>
<title type="html"><![CDATA[Re: Problem z kodem do gry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161825#p161825"><![CDATA[
Jeśli tmo ustawiamy na 500 to mamy 0,5 sekundy? czyli pętla trwa 0,001 s?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 7 cze 2016, o 12:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-06-07T10:42:03+01:00</updated>
<published>2016-06-07T10:42:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161813#p161813</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161813#p161813"/>
<title type="html"><![CDATA[Re: Problem z kodem do gry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161813#p161813"><![CDATA[
Jaki babol wstyd:(<br />Niestety po zmianie nic nie pomogło. Jak zapala się dioda nr 2 i naciskam klawisz 2 to mam odgłos ze nacisnąłem nie ten klawisz co trzeba, tak samo z diodą nr 3. A to, że diodę nr5 mogę zgasić klawiszem nr 4 to się nie zmieniło.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 2 minutach ]</span></strong><br /><br />W przerwaniu zamiast !PIND miałem !PINC i teraz już śmiga. Dziękuje serdecznie za pomoc. Wstyd mi, że sam poległem.<br />Czy ktoś na forum rozbudowywał tą grę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 7 cze 2016, o 10:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[anshar]]></name></author>
<updated>2016-06-07T10:23:48+01:00</updated>
<published>2016-06-07T10:23:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161811#p161811</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161811#p161811"/>
<title type="html"><![CDATA[Re: Problem z kodem do gry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161811#p161811"><![CDATA[
Masz:<br />[syntax=c]ISR( PCINT0_vect ) //przerwanie na klawiszu K1 (PB0)- PCINT0<br />{<br />        if( !(PINC &amp; PCINT_K1) ) pressed=1, LED1_OFF;<br />}[/syntax]<br /><br />Raczej powinno być:<br />[syntax=c]ISR( PCINT0_vect ) //przerwanie na klawiszu K1 (PB0)- PCINT0<br />{<br />        if( !(PINB &amp; PCINT_K1) ) pressed=1, LED1_OFF;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7157">anshar</a> — 7 cze 2016, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elektronikq]]></name></author>
<updated>2016-06-07T10:45:05+01:00</updated>
<published>2016-06-07T09:30:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161809#p161809</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161809#p161809"/>
<title type="html"><![CDATA[Problem z kodem do gry]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15538&amp;p=161809#p161809"><![CDATA[
Diody na początku migają wciskam dowolny klawisz i zaczynam grę. I tutaj się zaczynają problemy.<br />Klawisze 1, 4, 5 działają bez problemów a 2,3 nie chcą działać. Co gorsza jak wyświetli się dioda nr 5 to nawet klawisz nr 4 może ją zgasić. Co może być przyczyną?<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#define LED1 (1&lt;&lt;PC0)<br />#define LED2 (1&lt;&lt;PC1)<br />#define LED3 (1&lt;&lt;PC2)<br />#define LED4 (1&lt;&lt;PC3)<br />#define LED5 (1&lt;&lt;PC4)<br /><br />#define LED1_ON PORTC &amp;= ~LED1<br />#define LED1_OFF PORTC |= LED1<br />#define LED1_TOG PORTC ^= LED1<br />#define LED2_ON PORTC &amp;= ~LED2<br />#define LED2_OFF PORTC |= LED2<br />#define LED2_TOG PORTC ^= LED2<br />#define LED3_ON PORTC &amp;= ~LED3<br />#define LED3_OFF PORTC |= LED3<br />#define LED3_TOG PORTC ^= LED3<br />#define LED4_ON PORTC &amp;= ~LED4<br />#define LED4_OFF PORTC |= LED4<br />#define LED4_TOG PORTC ^= LED4<br />#define LED5_ON PORTC &amp;= ~LED5<br />#define LED5_OFF PORTC |= LED5<br />#define LED5_TOG PORTC ^= LED5<br /><br />#define PCINT_K1 (1&lt;&lt;PB0)<br />#define PCINT_K2 (1&lt;&lt;PD7)<br />#define PCINT_K3 (1&lt;&lt;PD6)<br />#define PCINT_K4 (1&lt;&lt;PD5)<br />#define PCINT_K5 (1&lt;&lt;PD4)<br /><br />#define BUZ (1&lt;&lt;PC5)<br /><br />#define BUZ_OFF PORTC &amp;= ~BUZ<br />#define BUZ_ON PORTC |= BUZ<br />#define BUZ_TOG PORTC ^= BUZ<br /><br /><br />// deklaracje funkcji<br />void leds_off(void);<br />void buz_start(void);<br />void buz_WAIT(void);<br />void buz_BAD(void);<br />void buz_TMO(void);<br />void buz_OK(void);<br /><br />// definicje zmiennych globalnych<br />volatile uint8_t pressed;<br />uint16_t tmo;<br />uint8_t rnd;<br />uint8_t koniec=3;<br />uint8_t max_err;<br /><br />// główna funkcja programu<br />int main( void ) {<br /><br />// konfiguracja diod LED i pinu buzzera jako wyjścia<br />DDRC |= LED1|LED2|LED3|LED4|LED5|BUZ;<br />leds_off();<br /><br />// podciąganie linii klawiszy do VCC<br />PORTB |= PCINT_K1;<br />PORTD |= PCINT_K2|PCINT_K3|PCINT_K4|PCINT_K5;<br /><br />// konfiguracja PCINT1<br />PCICR |= (1&lt;&lt;PCIE2)|(1&lt;&lt;PCIE0); <br />PCMSK2 |= PCINT_K2|PCINT_K3|PCINT_K4|PCINT_K5; <br />PCMSK0 |= PCINT_K1; <br /><br /><br />sei();<br />while(1) {<br /><br />koniec++;<br /><br />// inicjalizacja gry<br />if( koniec &gt; 3 ) {<br />koniec=0;<br />buz_WAIT();<br />leds_off();<br />_delay_ms(1000);<br />pressed=0;<br />max_err=0;<br />}<br /><br />buz_start();// odgłos startu<br /><br />// losowanie diody<br />while( 1 ) {<br />rnd = rand();<br />if( rnd &lt; 5 ) break;<br />}<br /><br />// zapalenie wylosowanej diody<br />switch( rnd ) {<br />case 0: LED1_ON; break;<br />case 1: LED2_ON; break;<br />case 2: LED3_ON; break;<br />case 3: LED4_ON; break;<br />case 4: LED5_ON; break;<br />}<br /><br />tmo=4000; // timeout = ok 0,5s<br />while( !pressed ) {<br />_delay_ms(1);<br />if(tmo) tmo--;<br />if(!tmo) break;<br />}<br /><br />if( !tmo ) {// jeśli TimeOut<br />buz_TMO();<br />} else<br />if( pressed != rnd+1 ) {// jeśli nie ten klawisz - jeśli nie trafiony bandyta<br />buz_BAD();<br />if(koniec) koniec--;<br />max_err++;<br />if(max_err&gt;6) {<br />max_err=0;<br />BUZ_ON;<br />_delay_ms(1000);<br />BUZ_OFF;<br />_delay_ms(1000);<br />BUZ_ON;<br />_delay_ms(1000);<br />BUZ_OFF;<br />leds_off();<br />koniec=3;<br />}<br />} else {// jeśli trafiony<br />buz_OK();<br />if( koniec ) koniec--;<br />//if( max_err ) max_err--;<br />}<br /><br />_delay_ms(1000);<br /><br />pressed=0;<br /><br />}<br />}<br /><br />// obsługa przerwań<br /><br />ISR( PCINT0_vect ) //przerwanie na klawiszu K1 (PB0)- PCINT0<br />{<br />if( !(PINC &amp; PCINT_K1) ) pressed=1, LED1_OFF;<br />}<br />ISR( PCINT2_vect )  // przerwanie na klawiszach K2-K5 (PD7-PD4) - PCINT23-20<br />{<br />if( !(PINC &amp; PCINT_K2) ) pressed=2, LED2_OFF;<br />if( !(PINC &amp; PCINT_K3) ) pressed=3, LED3_OFF;<br />if( !(PINC &amp; PCINT_K4) ) pressed=4, LED4_OFF;<br />if( !(PINC &amp; PCINT_K5) ) pressed=5, LED5_OFF;<br />}<br /><br />// ------- definicje funkcji<br />void leds_off(void) {<br />LED1_OFF; LED2_OFF; LED3_OFF; LED4_OFF; LED5_OFF;<br />}<br /><br /><br />void buz_start(void) {<br />uint8_t i;<br />for(i=0; i&lt;10; i++) _delay_ms(10), BUZ_TOG;<br />}<br /><br />void buz_WAIT(void) {<br />uint8_t a=1;<br />while(1) {<br />leds_off();<br />switch(a) {<br />case 1: LED1_TOG; break;<br />case 2: LED2_TOG; break;<br />case 3: LED3_TOG; break;<br />case 4: LED4_TOG; break;<br />case 5: LED5_TOG; break;<br />}<br />a++;<br />if(a&gt;5) a=1;<br />_delay_ms(100);<br />if(pressed) break;<br />}<br />}<br /><br />void buz_BAD(void) {<br />uint8_t i;<br /><br />for(i=0; i&lt;5; i++) {<br />_delay_ms(200);<br />BUZ_TOG;<br />switch( pressed )<br />{<br />case 1: LED1_TOG; break;<br />case 2: LED2_TOG; break;<br />case 3: LED3_TOG; break;<br />case 4: LED4_TOG; break;<br />case 5: LED5_TOG; break;<br />}<br />switch( rnd )<br />{<br />case 0: LED1_TOG; break;<br />case 1: LED2_TOG; break;<br />case 2: LED3_TOG; break;<br />case 3: LED4_TOG; break;<br />case 4: LED5_TOG; break;<br />}<br />}<br />BUZ_OFF;<br />leds_off();<br />}<br /><br />void buz_TMO(void) {<br />uint8_t i;<br /><br />for(i=0; i&lt;20; i++) {<br />_delay_ms(100);<br />BUZ_TOG;<br />LED1_TOG; LED2_TOG; LED3_TOG; LED4_TOG; LED5_TOG;<br />}<br />leds_off();<br />}<br /><br />void buz_OK(void) {<br />uint8_t i;<br /><br />for(i=0; i&lt;8; i++) {<br />_delay_ms(20);<br />BUZ_TOG;<br />LED2_TOG; LED4_TOG;<br />}<br />leds_off();<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11544">elektronikq</a> — 7 cze 2016, o 09:30</p><hr />
]]></content>
</entry>
</feed>