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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-11-14T14:55:57+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9241&amp;mode</id>
<entry>
<author><name><![CDATA[giciors]]></name></author>
<updated>2014-11-14T14:55:57+01:00</updated>
<published>2014-11-14T14:55:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103949#p103949</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103949#p103949"/>
<title type="html"><![CDATA[Re: Problem z maskowaniem bitowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103949#p103949"><![CDATA[
Witam<br />Pozwolę się zapytać po co kasujesz tę flage, zgodnie z tym co kolega wyżej napisał ona sama się kasuje pozakończeniu procedury przerwania( tak jest napisane w datasheecie) ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1818">giciors</a> — 14 lis 2014, o 14:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[icer_cmg]]></name></author>
<updated>2014-11-14T13:46:35+01:00</updated>
<published>2014-11-14T13:46:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103936#p103936</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103936#p103936"/>
<title type="html"><![CDATA[Re: Problem z maskowaniem bitowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103936#p103936"><![CDATA[
Nawet taki kod:<br />[syntax=c]ISR( INT0_vect )<br />{<br /><br /> maska&gt;&gt;=1;<br />  if (!maska){<br />    PORTB ^= (1 &lt;&lt; PB1);<br />    PORTB ^= (1 &lt;&lt; PB1);<br />  }<br /> <br /> GIFR |= (1&lt;&lt;INTF0);                                     //skasowanie flagi przerwania INT0<br />}[/syntax]<br /><br />Nie działa pomimo 4 sekund zbierania przerwania - masakra.  Chodzi mi o to, by maska przesuwała się z tyknięciami przerwnia, a gdy &quot;1&quot; wyjdzie poza maskę to tyknie impuls na PB1.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 19 minutach ]</span></strong><br /><br /><strong>Więc problem okazał się ciekawy</strong>: otóż było tak, że zainicjowałem timer, wrzuciłem sei(); i dopiero potem inicjowałem przerwanie - masakra w jego działaniu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1636">icer_cmg</a> — 14 lis 2014, o 13:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[icer_cmg]]></name></author>
<updated>2014-11-14T13:22:20+01:00</updated>
<published>2014-11-14T13:22:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103932#p103932</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103932#p103932"/>
<title type="html"><![CDATA[Re: Problem z maskowaniem bitowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103932#p103932"><![CDATA[
Więc poczyniłem małe zmiany i nadal głupi jestem. <br /><br />Kod 1:<br />[syntax=c]ISR( INT0_vect )<br />{<br /><br /><br />        if(PIND &amp; (1&lt;&lt;PD7)){<br />       PORTB ^= (1 &lt;&lt; PB0);<br />       dane_1 |= maska;<br />       PORTB ^= (1 &lt;&lt; PB0);<br /><br />              }<br /><br />maska&gt;&gt;=1;<br /><br />//if (!maska){<br /><br />                        PORTB ^= (1 &lt;&lt; PB1);<br />PORTB ^= (1 &lt;&lt; PB1);<br />//}<br />       GIFR |= (1&lt;&lt;INTF0);                                     //skasowanie flagi przerwania INT0<br />}[/syntax]<br />Przebieg: <br /><a href="http://forum.atnel.pl/_obrazki/o/1636/bb04e52f09ee61cb498b43f4cb486f93.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1636/bb04e52f09ee61cb498b43f4cb486f93.JPG" alt="Obrazek" /></a><br /><br /><br />Kod 2:<br />[syntax=c]ISR( INT0_vect )<br />{<br /><br /><br />        if(PIND &amp; (1&lt;&lt;PD7)){<br />       PORTB ^= (1 &lt;&lt; PB0);<br />       dane_1 |= maska;<br />       PORTB ^= (1 &lt;&lt; PB0);<br /><br />              }<br /><br />maska&gt;&gt;=1;<br /><br />if (!maska){<br /><br />                        PORTB ^= (1 &lt;&lt; PB1);<br />PORTB ^= (1 &lt;&lt; PB1);<br />}<br />       GIFR |= (1&lt;&lt;INTF0);                                     //skasowanie flagi przerwania INT0<br />}[/syntax]<br /><br />Przebieg:<br /><a href="http://forum.atnel.pl/_obrazki/o/1636/2abca0adbc4a7ed5c13e5f9460822694.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1636/2abca0adbc4a7ed5c13e5f9460822694.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1636">icer_cmg</a> — 14 lis 2014, o 13:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[icer_cmg]]></name></author>
<updated>2014-11-14T12:33:01+01:00</updated>
<published>2014-11-14T10:44:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103905#p103905</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103905#p103905"/>
<title type="html"><![CDATA[Problem z maskowaniem bitowym]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9241&amp;p=103905#p103905"><![CDATA[
Mam problem z maskowaniem bitowym. Otóż kod działa tak, że sygnał clk SPI generuje przerwanie i na PB1 pojawia się impuls, gdy na data jest &quot;1&quot;. <br />[syntax=c]ISR( INT0_vect )<br />{<br /><br /><br />if(PIND &amp; (1&lt;&lt;PD7)){<br />PORTB ^= (1 &lt;&lt; PB1);<br />dane_1 |= maska;<br />PORTB ^= (1 &lt;&lt; PB1);<br />maska&gt;&gt;=1;<br /><br />       GIFR |= (1&lt;&lt;INTF0);                                     //skasowanie flagi przerwania INT0<br />}<br />}[/syntax]<br /><a href="http://forum.atnel.pl/_obrazki/o/1636/98a367d2c16eb115de3b8286b7ec9d79.JPG"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/1636/98a367d2c16eb115de3b8286b7ec9d79.JPG" alt="Obrazek" /></a><br /><br />Jednak, gdy chcę przepisać data do zmiennej i po wyzerowaniu maski podać impuls na PB1 - nie wychodzi - przebieg identyczny jak wyżej.<br />[syntax=c]volatile uint16_t dane_1=0;<br />volatile uint16_t maska=0b1000000000000000;<br />ISR( INT0_vect )<br />{<br /><br /><br />if(PIND &amp; (1&lt;&lt;PD7)){<br />PORTB ^= (1 &lt;&lt; PB1);<br />dane_1 |= maska;<br />PORTB ^= (1 &lt;&lt; PB1);<br />maska&gt;&gt;=1;<br />if (!maska){<br /><br />PORTB ^= (1 &lt;&lt; PB1);<br />PORTB ^= (1 &lt;&lt; PB1);<br />}<br />}<br />       GIFR |= (1&lt;&lt;INTF0);                                     //skasowanie flagi przerwania INT0<br />}[/syntax]<br /><br /><br />Co robię źle?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1636">icer_cmg</a> — 14 lis 2014, o 10:44</p><hr />
]]></content>
</entry>
</feed>