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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-09-16T22:58:01+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=3&amp;t=1541&amp;mode</id>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-09-16T22:58:01+01:00</updated>
<published>2012-09-16T22:58:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15283#p15283</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15283#p15283"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15283#p15283"><![CDATA[
To w takim razie muszę przeanalizować powtórnie sprawę maskowania, a na razie  &quot;iloczyn logiczny&quot; pozostawię w spokoju, póki działa:))) <br /><br />Jeszcze raz dziękuje i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 16 wrz 2012, o 22:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-16T22:29:30+01:00</updated>
<published>2012-09-16T22:29:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15281#p15281</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15281#p15281"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15281#p15281"><![CDATA[
<div class="quotetitle">Zgred napisał(a):</div><div class="quotecontent"><br />A widzi Pan i to mi już wyjaśnia wszystko, ponieważ moja wersja programu działa na pinie zero, więc powinien zadziałać mi warunek  if(PINC==0b11111110) ?.... i działa. Być może to nie jest elegancki sposób , ale musiałem to sprawdzić. <br /><br />Dziękuje i pozdrawiam<br /></div><br /><br />Ale co ty mówisz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> tu nawet nie chodzi czy to elegancki sposób czy nie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... zastanów się - a co będzie gdy na innych pinach pojawią się zera - bo będą to piny podpięte do całkiem innych rzeczy niż klawisze ??? - to KLAPA - już w ten sposób nie sprawdzisz klawisza. Dlatego potrzebne jest MASKOWANIE<br /><br />to się nazywa maskowanie<br /><br />( PINC &amp; (1&gt;&gt;PC0) )<br /><br />maskujemy TYLKO jeden PIN, który chcemy sprawdzić w tym przypadku twój PC0<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 wrz 2012, o 22:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-09-16T22:13:11+01:00</updated>
<published>2012-09-16T22:13:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15280#p15280</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15280#p15280"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15280#p15280"><![CDATA[
A widzi Pan i to mi już wyjaśnia wszystko, ponieważ moja wersja programu działa na pinie zero, więc powinien zadziałać mi warunek  if(PINC==0b11111110) ?.... i działa. Być może to nie jest elegancki sposób , ale musiałem to sprawdzić. <br /><br />Dziękuje i pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 16 wrz 2012, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-16T21:53:30+01:00</updated>
<published>2012-09-16T21:53:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15278#p15278</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15278#p15278"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15278#p15278"><![CDATA[
Nie żaden aksjomat - tylko jeszcze do końca nie zrozumiałeś - ale już tłumaczę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />PINC to jest REJESTR. A co to jest REJESTR ??? to jest jeden bajt czyli 8 bitów .... zgadza się ? czy tego nie kojarzyłeś ??? A zatem KAŻDY bit w tym rejestrze odpowiada kolejnym pinom portu, np, <br /><br />PC0 ----&gt; to jest najmłodyszy bit nr.0 po prawej stronie <br />PC1 ----&gt; to jest bit nr.1 <br />PC1 ----&gt; to jest bit nr.2 <br /><br />i tak dalej<br /><br />co zatem wg ciebie miałoby znaczyć wyrażenie<br /><br />if( !PINC ) ....<br /><br />pomyśl - chcesz sprawdzać pin PC6 czyli TYLKO bit nr 6 w tym rejestrze .... załóżmy że inne bity (są do nich podłączone nie wciśnięte klawisze) mają wartość = 1 a TYLKO bit nr.6 (PC6) jest wciśnięty - zwarty do masy i w tym bicie jest 0 a zatem cały rejestr ma wartość:<br /><br />0b1<strong><span style="color: #0040FF">0</span></strong>111111<br /><br />co wg ciebie da warunek<br /><br />if( ! 0b1<strong><span style="color: #0040FF">0</span></strong>111111 )<br /><br />ja ci od razu podpowiem że w tym momencie rejestr ma logiczną wartość TRUE ponieważ 0b10111111 jest większe od zera, ale negujemy to za pomocą wykrzyknika i dostajemy FALSE - a zatem warunek nie będzie spełniony jeśli klawisz jest wciśnięty. A chyba nie o to ci chodziło hmmmmm ???<br /><br />dlatego nie możesz pisać ani nawet myśleć że:<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />to jasne, ale skoro używamy go w wyrażeniu logicznym to musi mieć jakąś wartość (0 lub 1)<br /></div><br /><br />bo wyżej ci udowodniłem że REJESTR jako zbiór 8 bitów nie przyjmuje TYLKO wartości 0 lub 1 - rozumiesz teraz ???<br /><br />dlatego MUSIMY sprawdzać co się dzieje na konkretnym bicie rejestru PINC, gdzie każdy bit jak pisałem wyżej odwzorowuje jeden pin od PC0 ... do .... PC7<br /><br />teraz zobacz zakładamy, że znowu mamy wartość (w trakcie wciśniętego klawisza) gdzie PINC = 0b10111111, a zatem<br /><br />wyrażenie <br /><br />( PINC &amp; (1&lt;&lt;PC6) )<br /><br />da nam wartość:<br /><br />0b1<strong><span style="color: #FF0000">0</span></strong>111111  PINC<br />0b0<strong><span style="color: #FF0000">1</span></strong>000000  PC6   AND<br />---------------------------<br />0b0<strong><span style="color: #FF0000">0</span></strong>000000<br /><br />czyli = ZERO <strong><span style="color: #0040FF">(FALSE)</span></strong><br /><br />a teraz w warunku mamy negację logiczną czyli wykrzyknik - więc negujemy i mamy TRUE <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> warunek spełniony gdy wciśnięty klawisz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 16 wrz 2012, o 21:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-09-16T21:28:06+01:00</updated>
<published>2012-09-16T21:28:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15274#p15274</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15274#p15274"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15274#p15274"><![CDATA[
Pozwól że ja dołożę kolejne trzy grosze... Samo napisane (if (!PINC) mówi tylko że chodzi ci o jakiś PINC a ty musisz napisać  o który konkretniej ci chodzi(czyli do tego &amp;PC6), bo kompilator ani sam uC nie ma fizycznej możliwości sprawdzenia o który PIN tobie chodzi.<br />Jeśli chodzi o ostatnie zdanie o alternatywę to jest specjalne makro bit_is_clear ale daruj sobie to rozwiązanie bo jest ono pamięciożerne i nieczytelne... <br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 16 wrz 2012, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-09-16T20:50:57+01:00</updated>
<published>2012-09-16T20:50:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15271#p15271</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15271#p15271"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15271#p15271"><![CDATA[
Witam, dzięki za odpowiedź oczywiście wiele mi wyjaśniła, ale nie byłbym sobą gdybym się do czegoś nie przyczepił. Wyjaśnię tylko, że moja dociekliwość wynika z chęci dogłębnego poznania tematu i jego pełnego zrozumienia. Do rzeczy: oczywiście PINC - reprezentuje rejestr wejściowy portu C - to jasne, ale skoro używamy go w wyrażeniu logicznym to musi mieć jakąś wartość (0 lub 1). Napisał Pan w przykładzie że naciśnięcie przycisku powoduje zerowanie odpowiedniego bitu takiego rejestru, w takim razie dlaczego w warunku nie wystarczy wstawić samego PINC (if (!PINC)- sprawdziłem nie działa) ? a konieczne jest wstawienie wyrażenia (pomijam znak negacji, bo w tym wypadku użycie przycisku albo zapala , albo gasi diodę). Podobnie nie działa wstawienie jako warunek samego przesunięcia bitowego i próba zerowania go za pomocą przycisku. Czyli jeśli nie użyję wyrażenia logicznego w postaci iloczynu (PINC &amp; (1&lt;&lt;PC6)) nie uzyskam jakby fizycznego dostępu do rejestru wejściowego z poziomu przycisku . Co oznacza, tak mi się wydaje, że naciśnięcie przycisku zeruje albo neguje całe to wyrażenie. I teraz pytanie : czy istnieją alternatywne (wyrażenia) czy też to o którym tu mowa należy uznać za aksjomat?<br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 16 wrz 2012, o 20:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-09-15T00:14:49+01:00</updated>
<published>2012-09-15T00:14:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15131#p15131</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15131#p15131"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15131#p15131"><![CDATA[
<div class="quotetitle">Zgred napisał(a):</div><div class="quotecontent"><br />Konkretnie chodzi o to co oznacza zapis PINC.<br /></div><br /><br />Przyznaję, że niechcący zabrakło w książce opisu podstawowych rejestrów które związane z KAŻDYM portem, ale proszę bardzo tutaj kolega ma małe uzupełnienie do książki:<br /><br /><!-- m --><a class="postlink" href="http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html" >http://mirekk36.blogspot.com/2012/01/av ... stawy.html</a><!-- m --><br /><br />a teraz, już kolega wie, że PINC to rejestr wejściowy prawda? czyli jeśli klawisz jest wciśnięty na PC6 to znaczy że bit nr.6 jest = 0 a zatem rozpatrzmy wyrażenie<br /><br />( PINC &amp; (1&lt;&lt;PC6) )<br /><br />przyjmie ono wartość FALSE ponieważ<br /><br />PINC 0bx0xx xxxx<br />AND  0b0100 0000<br />-------------------<br />wynik wyrażenia = 0b0000 0000<br /><br />a zatem FALSE<br /><br />jednak w warunku if mamy jeszcze negację w postaci wykrzyknika<br /><br />if( ! (PINC &amp; (1&lt;&lt;PC6)) ) ...<br /><br />a zatem to FALSE zamieni nam się na TRUE (jeśli klawisz jest wciśnięty - prawda ? ..... w takim razie warunek spełniony <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />---------------<br /><br />rozważmy co będzie gdy klawisz nie jest wciśnięty czyli na linii PC6 utrzymuje się stan wysoki<br /><br />PINC 0bx1xx xxxx<br />AND  0b0100 0000<br />-------------------<br />wynik wyrażenia = 0b0100 0000<br /><br />tak więc ponieważ wynik jest większy od 0, to znaczy TRUE, ale znowu mamy negację !(wyrażenie) zatem, z TRUE zrobi się FALSE czyli warunek IF nie zostanie spełniony<br /><br />czy teraz jaśniej ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 wrz 2012, o 00:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-09-14T23:47:26+01:00</updated>
<published>2012-09-14T23:47:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15129#p15129</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15129#p15129"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15129#p15129"><![CDATA[
Ono nie jest zanegowane, chodzi o to że warunek sprawdza czy wartość warunku jest równa 0 czyli czy przycisk jest zwarty do masy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 14 wrz 2012, o 23:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-09-14T23:33:10+01:00</updated>
<published>2012-09-14T23:33:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15127#p15127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15127#p15127"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15127#p15127"><![CDATA[
Michał dziękuję za odpowiedź, ale chodzi mi o to,że kontroler odczyta informacje o wciśniętym przycisku w sytuacji kiedy całe to wyrażenie przyjmie pewną wartość (prawdopodobnie 1). Ponieważ w nawiasie mamy iloczyn logiczny, a przesunięcie bitowe które jest częścią tego iloczynu moim zdaniem ma wartość 1 całe zaś wyrażenie jest zanegowane(!), to wynika że PINC ma wartość zero. Jak jest naprawdę próbuję dociec.<br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 14 wrz 2012, o 23:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[MichalXY]]></name></author>
<updated>2012-09-14T23:13:38+01:00</updated>
<published>2012-09-14T23:13:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15126#p15126</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15126#p15126"/>
<title type="html"><![CDATA[Re: Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15126#p15126"><![CDATA[
Ogólnie to witaj na naszym forum <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />. <br /><br />Odnośnie twojego pytania to chodzi o to że PINC oznacza pin do którego jest podłączony przycisk a to za znakiem &amp; to numer tego pinu do którego przycisk podłączyłeś. <br /><br />Pozdrawiam!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=226">MichalXY</a> — 14 wrz 2012, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zgred]]></name></author>
<updated>2012-09-14T22:47:19+01:00</updated>
<published>2012-09-14T22:47:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15124#p15124</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15124#p15124"/>
<title type="html"><![CDATA[Funkcja sprawdzająca nacisnięcie klawisza]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=1541&amp;p=15124#p15124"><![CDATA[
Witam, niedawno zacząłem przygodę i oczywiście napotykam ciągle jakieś problemy. Tym na którym utknąłem jest funkcja sprawdzająca naciśnięcie przycisku  !(PINC &amp; (1&lt;&lt;PC6)) użyta i opisana w przykładowym programie z książki. Niestety  wyjaśnienie jej działania jest, jak dla mnie, mało czytelne. Konkretnie chodzi o to co oznacza zapis PINC bo pozostałe składniki oraz działania są oczywiście czytelne. Korci mnie aby przetestować jakąś własną funkcję służącą temu celowi , ale póki  nie rozumiem jak działa to od strony procesora nie dam rady. Proszę oczywiście o wyrozumiałość bo być może  część z Was uzna, że pytanie jest trywialne (bo jest) albo że skoro jest funkcja i działa to nie ma konieczności wnikać w szczegóły tylko jej używać i iść dalej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=555">Zgred</a> — 14 wrz 2012, o 22:47</p><hr />
]]></content>
</entry>
</feed>