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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-30T17:45:22+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=16110&amp;mode</id>
<entry>
<author><name><![CDATA[Maju]]></name></author>
<updated>2016-08-30T17:45:22+01:00</updated>
<published>2016-08-30T17:45:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167576#p167576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167576#p167576"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167576#p167576"><![CDATA[
Bardzo Dziękuje Daro69 <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Przeczytałem pare razy, przeanalizowałem, z 20min mi to zajeło <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> i juz wiem o co chodzi <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Teraz jeszcze pobawie się w blokowanie 3 klawisza aby działał: 'jedno kliknięcie jedno przełączenie' i zabieram się za dalsze ćwiczenia <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14796">Maju</a> — 30 sie 2016, o 17:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-08-30T16:48:16+01:00</updated>
<published>2016-08-30T16:48:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167574#p167574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167574#p167574"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167574#p167574"><![CDATA[
Kolego &quot;maju&quot;<br />Przeanalizuj może ten sposób.?<br />Co prawda przy tym sposobie nadal będzie szybko zmieniał stan na LEDzie trzeci klawisz.<br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_ON PORTB &amp;= ~LED_PIN<br />#define LED_OFF PORTB |= LED_PIN<br />#define LED_TOG PORTB ^= LED_PIN<br /><br />#define KEY1_PIN (1&lt;&lt;PB2)<br />#define KEY2_PIN (1&lt;&lt;PC5)<br />#define KEY3_PIN (1&lt;&lt;PC4)<br /><br />#define PIERWSZY (!(PINB &amp; KEY1_PIN))<br />#define DRUGI (!(PINC &amp; KEY2_PIN))<br />#define TRZECI (!(PINC &amp; KEY3_PIN))<br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz);<br /><br />int main()<br />{<br />        DDRB |= LED_PIN;<br />        PORTB |= ( LED_PIN | KEY1_PIN );<br /><br />        DDRC &amp;= ~( KEY2_PIN | KEY3_PIN );<br />        PORTC |= ( KEY2_PIN | KEY3_PIN );<br /><br />        while(1)<br />        {<br />                if(klawisz_wcisniety(PIERWSZY)) LED_ON;<br />                if(klawisz_wcisniety(DRUGI)) LED_OFF;<br />                if(klawisz_wcisniety(TRZECI)) LED_TOG;<br />        }<br />}<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />        if(klawisz)<br />        {<br />                _delay_ms(80); /*TOG-owanie tez bedzie sie wykonywac co 80 ms*/<br /><br />                if(klawisz) return 1;<br />        }<br />        return 0;<br />}[/syntax]<br />Informacyjnie- odnośnie Twojego poprzedniego kodu.<br />Pomijając ^, w funkcji próbowałeś sprawdzać PINC oraz PIND - Czy zauważyłeś że wciskając kl PC4 lub PC5,<br />Sprawdzałeś to także ze stanem PINU PB4 i PB5. a tam jest MISO i SCK . Ponieważ PC4 to 4, PC5 to 5, a PB2 to 2.<br />Tak więc wciskajac klawisz na PB2 funkcja sprawdzała stan także na uwaga! PIN<strong>C</strong> PC2, czytając klawisz jako 2.<br />Niestety trzeba pilnować co funkcja może sprawdzać przypadkowo. A i niestety nie dopatrzyłem się w kodzie <strong>DDRB</strong> &amp;= KEY1_PIN. &lt;___ ok. jest zero od początku , ja zawsze wstawiam mimo wszystko.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Pozdrawiam  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 sie 2016, o 16:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-08-30T14:25:18+01:00</updated>
<published>2016-08-30T14:25:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167567#p167567</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167567#p167567"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167567#p167567"><![CDATA[
<div class="quotetitle">Jazio napisał(a):</div><div class="quotecontent"><br />W If() jak tez w innych warunkach może być używany operator bitowy. Przecież w wyniku działania operatorem bitowym dostajemy jakąś wartość liczbową, którą sprawdzamy czy jest zerem czy nie.<br /></div><br /><br />Musisz jednak zrozumieć czym różnią się operatory bitowe od logicznych. Owszem można używać operatora bitowego w warnku IF ale!... ale na zmiennych/liczbach a nie jako operatora koniunkcji.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 30 sie 2016, o 14:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-08-30T13:54:54+01:00</updated>
<published>2016-08-30T13:54:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167565#p167565</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167565#p167565"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167565#p167565"><![CDATA[
Tak, kolega janusz17 ma rację.to jest operator bitowy.<br />Jezeli to ma reagować na obia śladowe to powinno być || .<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 sie 2016, o 13:54</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2016-08-30T13:25:31+01:00</updated>
<published>2016-08-30T13:25:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167562#p167562</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167562#p167562"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167562#p167562"><![CDATA[
Dziwne, że kompilator tego nie podkreśla jako błąd, bo przecież w warunku logicznym złożonym<br />[syntax=c]if(!(PINC &amp; klawisz) ^ !(PINB &amp; klawisz))[/syntax]<br />stosujesz operator bitowy ^. Tam może być tylko operator logiczny: &amp;&amp;, ||, !. <br />Chyba nie ma w języku C operatora logicznego ExOR.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 30 sie 2016, o 13:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-08-30T12:40:18+01:00</updated>
<published>2016-08-30T12:40:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167560#p167560</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167560#p167560"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167560#p167560"><![CDATA[
Faktycznie,<br />Pozostaje zrobić maly delay przed pętlą while żeby dać czas na podciagniecie pinu do vcc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 sie 2016, o 12:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maju]]></name></author>
<updated>2016-08-30T12:22:48+01:00</updated>
<published>2016-08-30T12:22:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167558#p167558</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167558#p167558"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167558#p167558"><![CDATA[
KEY1_PIN jest przydzielony do portu B. Automatycznie jest ustawiany jak wejście i juz tego nie pisałem i jest podsprzegniety do vcc w 18 linijce. Przez moją niedbałość fragment kodu jest mało czytelny.<br />Po zamianie 17 i 18 linijki kodu na poniższe staje się bardziej czytelne. Przy zrobieniu tego zadania z 3 przyciskami na PORTC wszystko działa jak należy. A przy tym wariancie nie moge dojść dlaczego ta dioda miga przez pare sekund.<br />[syntax=c]DDRB |= LED_PIN;<br />DDRB &amp;= (~KEY1_PIN);<br />PORTB |= LED_PIN | KEY1_PIN;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14796">Maju</a> — 30 sie 2016, o 12:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2016-08-30T11:39:24+01:00</updated>
<published>2016-08-30T11:39:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167554#p167554</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167554#p167554"/>
<title type="html"><![CDATA[Re: Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167554#p167554"><![CDATA[
Ddrc i portc key-pin1 brak.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 30 sie 2016, o 11:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Maju]]></name></author>
<updated>2016-08-30T11:12:38+01:00</updated>
<published>2016-08-30T11:12:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167551#p167551</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167551#p167551"/>
<title type="html"><![CDATA[Dziwne mruganie diody]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=16110&amp;p=167551#p167551"><![CDATA[
Witam<br />Jest to mój pierwszy post na tym forum i zapowiada się, że nie ostatni.Witam wszystkich Forumowiczów <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. Jestem totalnym początkującym także już z góry przepraszam za moje przyszłe pytania. <br />Pare dni temu nabyłem BB, przeczytałem już część teoretyczną i zabrałem się za ćwiczenia praktyczne. Oprócz tych zawartych w książce robiłem różne kombinacje aby lepiej zrozumieć temat operacji bitowych i przypisywania do portów. Problem dotyczy programu do mrugania diodą przy użyciu 3 przycisków. Jednak nie podłączałem 3 przycisków do 1 portu tylko jeden do portu B a dwa do portu C. Musiałem lekko zmienić warunek if aby program zadziałał. Jednak po wgraniu programu oraz przy podłączniu napiecia do układu dioda LED przez kilka sekund mruga tak jakby przycisk LED_TOG był wciśniety. Po tych kilku sekundach dioda gasnie i program działa normalnie. Co może być przyczyną? mam jeszcze jedno pytanie czy warunek if(!(PINC &amp; klawisz) ^ !(PINB &amp; klawisz)) jest prawidłowo skonstruowany?(dokładnie chodzi o uzycie operatora XOR). Zauważyłem, że przy usunieciu członu PINB... z warunku if mruganie nie wystepuje(i oczywiscie jeden przycisk nie działa). Dodam jeszcze że pracuje na atmega8L 8MHz.<br /><br />Z góry dziękuje za pomoc<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_ON PORTB &amp;= ~LED_PIN<br />#define LED_OFF PORTB |= LED_PIN<br />#define LED_TOG PORTB ^= LED_PIN<br /><br />#define KEY1_PIN (1&lt;&lt;PB2)<br />#define KEY2_PIN (1&lt;&lt;PC5)<br />#define KEY3_PIN (1&lt;&lt;PC4)<br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz);<br /><br />int main()<br />{<br />DDRB |= LED_PIN;<br />PORTB |= (LED_PIN | (1&lt;&lt;PB2));<br /><br />DDRC &amp;= ~(KEY2_PIN | KEY3_PIN);<br />PORTC |= (KEY2_PIN | KEY3_PIN);<br /><br />while(1)<br />{<br />if(klawisz_wcisniety(KEY1_PIN)) LED_ON;<br />if(klawisz_wcisniety(KEY2_PIN)) LED_OFF;<br />if(klawisz_wcisniety(KEY3_PIN)) LED_TOG;<br />}<br />}<br /><br /><br />uint8_t klawisz_wcisniety(uint8_t klawisz)<br />{<br />if(!(PINC &amp; klawisz) ^ !(PINB &amp; klawisz))<br />{<br />_delay_ms(80);<br /><br />if(!(PINC &amp; klawisz) ^ !(PINB &amp; klawisz)) return 1;<br />}<br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14796">Maju</a> — 30 sie 2016, o 11:12</p><hr />
]]></content>
</entry>
</feed>