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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-08-02T16:45:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=3735&amp;mode</id>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-08-02T16:45:32+01:00</updated>
<published>2013-08-02T16:45:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44194#p44194</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44194#p44194"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44194#p44194"><![CDATA[
trochę to trwało, kod trzeba było trochę poprawić, bo nie podobał się do końca Eclipsowi  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />ale to mało ważne, w końcu zadziałał tak samo<br /><br />no i zacząłem myśleć (lepiej późno niż wcale), to nie miało szans zadziałania<br />ponieważ w zależności od stanu PCINT0 nadajnik rfm22 miał wysłać odpowiedni sygnał,<br />okazało się, że odstęp między dwoma sygnałami musi być większy niż 500ms, 1s działa<br />pewnie<br />teraz muszę rozgryzać rfm22 bo to chyba niemożliwe, żeby to musiało trwać tak długo<br /><br />[syntax=c]while(1)<br />    {<br />    if( flaga == 1 )<br />    {<br />    if( !(PINB &amp; (1&lt;&lt;PB0)) )<br />        {<br />    _delay_ms(10);<br />    state = (PINB &amp; (1&lt;&lt;PB0));<br /><br />    if( state != last_state )<br />    {<br />    if( state ) // to masz rozwarcie<br />    {<br />    // nadajnik wysyła sygnał<br />    }<br />            else // masz zwarcie<br />            {<br />            // nadajnik wysyła sygnał<br />            }<br />    }<br />    last_state = state;<br />    flaga = 0;<br />       }<br />    }<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 2 sie 2013, o 16:45</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-02T13:04:00+01:00</updated>
<published>2013-08-02T13:04:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44162#p44162</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44162#p44162"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44162#p44162"><![CDATA[
no poczekaj, bierzesz sobie jakieś zmienne<br /><br />[syntax=c]uint8_t state, last_state;[/syntax]<br /><br />przy starcie wczytujesz stan<br /><br />[syntax=c]state = (PINB &amp; (1&lt;&lt;PB0));[/syntax]<br /><br />i dalej w pętli głównej jak dostaniesz flagę<br /><br />[syntax=c]if( flaga ) {<br /><br />   if( !(PINB &amp; (1&lt;&lt;PB0) ) {<br />     _delay_ms(10); // prymitywna eliminacja drgań - to tylko przykład<br />     state = (PINB &amp; (1&lt;&lt;PB0)); <br />     if( state != last_state ) <br />        if( state ) // to masz rozwarcie<br />        else // masz zwarcie<br />   }<br />   <br />   last_state = state;<br />   flaga = 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 sie 2013, o 13:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-08-02T11:23:27+01:00</updated>
<published>2013-08-02T11:23:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44158#p44158</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44158#p44158"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44158#p44158"><![CDATA[
<div class="quotetitle">wireless napisał(a):</div><div class="quotecontent"><br />Za to jeśli pamiętać w RAM zawsze ostatni stan logiczny na pinie i wspomóc się leciutkim opóźnieniem (eliminującym czas drgania styków) to spokojnie można dojść i to bez zbędnej zwłoki , czy mamy do czynienia ze zwarciem czy rozwarciem.<br /></div>to może któryś z kolegów poświęci mi trochę czasu i pokaże jak taką &quot;rybę&quot; usmażyć  <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=380">wireless</a> — 2 sie 2013, o 11:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-02T11:10:03+01:00</updated>
<published>2013-08-02T11:10:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44157#p44157</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44157#p44157"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44157#p44157"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />to, że po przecięciu stan PINB0 będzie już na rozwarcie to pewne, ale stwierdzenie tego w pętli głównej już będzie dla mnie<br />chyba bezwartościowe, ponieważ ja potrzebuję kontrolować moment zwarcia i rozwarcia<br /></div><br /><br />Ja nie wiem jak z drganiami styków u ciebie przy tych zwarciach i rozwarciach. Jeśli do tego używać przerwania które reaguje na dowolne zbocze - to łatwo sobie wyobrazić, że czy przy zwarciu czy przy rozwarciu - w wyniku &quot;drgań styków&quot; przerwanie może być wywołane wielokrotnie i ciężko sprawdzić co było czym tylko na podstawie zaistnienia przerwania.<br /><br />Za to jeśli pamiętać w RAM zawsze ostatni stan logiczny na pinie i wspomóc się leciutkim opóźnieniem (eliminującym czas drgania styków) to spokojnie można dojść i to bez zbędnej zwłoki , czy mamy do czynienia ze zwarciem czy rozwarciem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 sie 2013, o 11:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-08-02T11:04:31+01:00</updated>
<published>2013-08-02T11:04:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44155#p44155</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44155#p44155"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44155#p44155"><![CDATA[
jeśli dobrze rozumiem to w momencie cięcia występuje przerwanie (zwarcie do masy), ale po przecięciu przerwania nie ma<br />bo nastąpiło za szybko po pierwszym?<br /><br />to, że po przecięciu stan PINB0 będzie już na rozwarcie to pewne, ale stwierdzenie tego w pętli głównej już będzie dla mnie<br />chyba bezwartościowe, ponieważ ja potrzebuję kontrolować moment zwarcia i rozwarcia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 2 sie 2013, o 11:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-08-02T10:44:44+01:00</updated>
<published>2013-08-02T10:44:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44153#p44153</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44153#p44153"/>
<title type="html"><![CDATA[Re: przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44153#p44153"><![CDATA[
Ja na razie tak z doskoku bo nie mam jeszcze swojego kompa i do PDF'a jak zajrzeć ale...<br /><br />ale ja bym może nie bawił się w te dwie flagi w przerwaniu - tylko ustawiał flagę że ono wystąpiło a stan pinu PB0 badał już w pętli głównej nawet wtedy z lekkim opóźnieniem na wypadek jakichś drgań styków. I dopiero wtedy rozstrzygał sobie czy miało miejsce zbocze opadające czy narastające. To taki na szybko jak mówię pomysł - musiałbyś go sobie sprawdzić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 2 sie 2013, o 10:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-08-02T10:35:56+01:00</updated>
<published>2013-08-02T10:35:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44152#p44152</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44152#p44152"/>
<title type="html"><![CDATA[przerwanie zewnętrzne PCINT]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=3735&amp;p=44152#p44152"><![CDATA[
[syntax=c]ISR (PCINT0_vect)<br />{<br />    if((PINB &amp; (1 &lt;&lt; PB0)))<br />    {<br />    flaga_PCINT0 = 1;// LOW to HIGH pin change<br />    }<br />    else<br />    {<br />    flaga_PCINT0 = 2;// HIGH to LOW pin change<br />    }<br />}[/syntax] do pinu PB0 (PCINT0) i do masy mam podłączony kabelek, który mogę zwierać i rozwierać, PB0 podciągnięty jest do HIGH,<br />i to działa jak robię zwarcie i rozwarcie bez pośpiechu, flagi są odpowiednio ustawione<br /><br />ale jak robię zwarcie przecinając oba kabelki to flaga na zwarcie jest ustawiona, a po przecięciu flaga na rozwarcie już nie<br /><br />z czego to wynika i jak sobie z tym poradzić?<br />atmega88 - 8 MHz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 2 sie 2013, o 10:35</p><hr />
]]></content>
</entry>
</feed>