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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-12-28T22:15:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=9867&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-12-28T22:04:00+01:00</updated>
<published>2014-12-28T22:04:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110934#p110934</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110934#p110934"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110934#p110934"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Fajna i obrazowa analiza, jednak ma błędy. Przede wszystkim zarówno SBI jak i CBI zajmują dwa takty. Poza tym niepotrzebnie do pętli zaliczasz instrukcję LDI (chodzi o listingi 6. i 10), skoki RJMP wracają do następnej instrukcji po LDI.<br /></div><br />Masz rację.<br />Teraz muszę to poprawić  <img src="https://forum.atnel.pl/images/smilies/icon_evil.gif" alt=":evil:" title="Zły" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 28 gru 2014, o 22:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-12-28T21:55:07+01:00</updated>
<published>2014-12-28T21:55:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110933#p110933</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110933#p110933"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110933#p110933"><![CDATA[
Fajna i obrazowa analiza, jednak ma błędy. Przede wszystkim zarówno SBI jak i CBI zajmują dwa takty. Poza tym niepotrzebnie do pętli zaliczasz instrukcję LDI (chodzi o listingi 6. i 10), skoki RJMP wracają do następnej instrukcji po LDI. Wyliczenia będą więc trochę inne, np. dla <br /><br />[syntax=c]PINB |= (1&lt;&lt;PB0);[/syntax]<br />będą to 4 takty, a <br /><br />[syntax=c]PINB = (1&lt;&lt;PB0);[/syntax]<br />3 takty.<br /><br />Słowo wyjaśnienia o co mi chodzilo w tej wypowidzi:<br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Możesz. A właściwie musisz.<br /></div> <br />Powyższe przypisanie nr 1 (z sumą bitową), zostało rozwinięte do SBI (nie sprawdzilem tego) więc spoko, ale gdyby to faktycznie było zrealizowane jako read-modify-write to powodowało by nieporządane efekty na pinach ze stanem HIGH.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 28 gru 2014, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-12-28T22:15:34+01:00</updated>
<published>2014-12-28T21:00:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110923#p110923</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110923#p110923"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110923#p110923"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Wystarczy samo przypisanie bez sumy bitowej (oczywiście zakładając, że nie togluje się w ten sposób innych pinów):<br /></div><br />Nie zgodzę się z kolegą. Przypisanie to inny rozkaz asemblera i wymaga wcześniejszego załadowania wartości do rejestru rx, a potem kolejna instrukcja kopiuje to do rejestru wejścia wyjścia. Przykłady:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />int main()<br />{<br />    DDRB |= (1&lt;&lt;PB0);<br />    asm volatile(&quot;Nop&quot;);<br /><br />    while(1)<br />    {<br />    PORTB |= (1&lt;&lt;PB0);<br />    PORTB &amp;= ~(1&lt;&lt;PB0);<br />    }<br />}[/syntax]<br />daje kod asemblera:<br />[syntax=asm]00000038 &lt;main&gt;:<br />  38:b8 9a       sbi0x17, 0; 23<br />  3a:00 00       nop<br />  3c:c0 9a       sbi0x18, 0; 24<br />  3e:c0 98       cbi0x18, 0; 24<br />  40:fd cf       rjmp.-6      ; 0x3c &lt;main+0x4&gt;[/syntax]<br />sbi i cbi zajmują 2 takty, a rjmp 2 takty. Razem cała pętla while zajmuje 6 taktów. Z tym, że wypełnienie nie wynosi 50%. Okres 6 taktów. Częstotliwość 8 MHz / 6 = 1,(3) MHz.<br />Sytuacja z zamianą instrukcji:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />int main()<br />{<br />    DDRB |= (1&lt;&lt;PB0);<br />    asm volatile(&quot;Nop&quot;);<br /><br />    while(1)<br />    {<br />    PORTB &amp;= ~(1&lt;&lt;PB0);<br />    PORTB |= (1&lt;&lt;PB0);<br />    }<br />}[/syntax]<br />[syntax=asm]00000038 &lt;main&gt;:<br />  38:b8 9a       sbi0x17, 0; 23<br />  3a:00 00       nop<br />  3c:c0 98       cbi0x18, 0; 24<br />  3e:c0 9a       sbi0x18, 0; 24<br />  40:fd cf       rjmp.-6      ; 0x3c &lt;main+0x4&gt;[/syntax]<br />Tak samo czasowo, ale stan wysoki teraz trwa 4 takty a niski 2. Okres 6 taktów. Częstotliwość 8 MHz / 6 = 1,(3) MHz.<br /> Z użyciem EXOR:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />int main()<br />{<br />    DDRB |= (1&lt;&lt;PB0);<br />    asm volatile(&quot;Nop&quot;);<br /><br />    while(1)<br />    {<br />    PORTB ^= (1&lt;&lt;PB0);<br />    }<br />}[/syntax]<br />[syntax=asm]00000038 &lt;main&gt;:<br />  38:b8 9a       sbi0x17, 0; 23<br />  3a:00 00       nop<br />  3c:91 e0       ldir25, 0x01; 1<br />  3e:88 b3       inr24, 0x18; 24<br />  40:89 27       eorr24, r25<br />  42:88 bb       out0x18, r24; 24<br />  44:fc cf       rjmp.-8      ; 0x3e &lt;__SP_H__&gt;[/syntax]<br />(ldi - 1 takt jednorazowo) in - 1 - takt, eor - 1 takt, out - 1 takt, rjmp - 2 takty. Razem 5. Przebieg ma wypełnienie 50%. Okres 10 taktów. Częstotliwość 8 MHz / 10 = 800 kHz.<br /><br />Wpisanie 1 do rejestru PINx:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />int main()<br />{<br />    DDRB |= (1&lt;&lt;PB0);<br />    asm volatile(&quot;Nop&quot;);<br /><br />    while(1)<br />    {<br />    PINB |= (1&lt;&lt;PB0);<br />    }<br />}[/syntax]<br />[syntax=asm]00000038 &lt;main&gt;:<br />  38:b8 9a       sbi0x17, 0; 23<br />  3a:00 00       nop<br />  3c:b0 9a       sbi0x16, 0; 22<br />  3e:fe cf       rjmp.-4      ; 0x3c &lt;main+0x4&gt;[/syntax]<br />sbi - 2 takty, rjmp - 2 takty. Razem 4 takty. Wypełnienie 50%. Okres 8 taktów. Częstotliwość 8 MHz / 6 = 1 MHz.<br /><br />Propozycja kolegi xor:<br />[syntax=c]#include &lt;avr/io.h&gt;<br /><br />int main()<br />{<br />    DDRB |= (1&lt;&lt;PB0);<br />    asm volatile(&quot;Nop&quot;);<br /><br />    while(1)<br />    {<br />    PINB = (1&lt;&lt;PB0);<br />    }<br />}[/syntax]<br />[syntax=asm]00000038 &lt;main&gt;:<br />  38:b8 9a       sbi0x17, 0; 23<br />  3a:00 00       nop<br />  3c:81 e0       ldir24, 0x01; 1<br />  3e:86 bb       out0x16, r24; 22<br />  40:fe cf       rjmp.-4      ; 0x3e &lt;__SP_H__&gt;[/syntax]<br />(ldi - 1 takt jednorazowo), out - 1 takt, rjmp - 2 takty. Razem 3. Wypełnienie 50%. Okres 6 taktów. Częstotliwość 8 MHz / 6 = 1,(3) MHz.<br /><br /><div class="quotetitle">splawik00 napisał(a):</div><div class="quotecontent"><br />Niby jak? Mam wywoływać przerwanie z każdym taktem zegara? A co z pętlą main?<br /></div><br />Tryb CTC, a wartość OCRx = 0. Przykład dla ATMEGI644PA, który umieszcza się przed pętlą główną programu:<br />[syntax=c]DDRD |= (1&lt;&lt;PD5);<br />OCR1A = 0;<br />TCCR1B |= (1&lt;&lt;WGM12) | (1&lt;&lt;CS00);<br />TCCR1A |= (1&lt;&lt;COM1A0);[/syntax]<br />W razie potrzeby można wyłączyć:<br />[syntax=c]TCCR1A &amp;= ~(1&lt;&lt;COM1A0);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 28 gru 2014, o 21:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-28T18:19:22+01:00</updated>
<published>2014-12-28T18:19:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110883#p110883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110883#p110883"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110883#p110883"><![CDATA[
<div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />Ale PINB = (1&lt;&lt;PB0) na pewno zajmuje mniej.<br /></div><br />Ale nadal generuje to 1,3MHz. Tyle samo jak dla:<br />PORTB |= (1&lt;&lt;PB0);<br />PORTB &amp;= ~(1&lt;&lt;PB0);<br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">splawik00 napisał(a):</div><div class="quotecontent">Przypisywać bezpośrednio nie mogę, bo na nieszczęście kod ma jeszcze robić coś innego<br /></div><br />Możesz. A właściwie musisz. I to jest właśnie piękne w tej metodzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /> </div><br />Mógłbyś rozwinąć, bo nie za bardzo zrozumiałem  <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> <br /><br /><div class="quotetitle">xor napisał(a):</div><div class="quotecontent"><br />A tak na marginesie: maksymalną częstotliwość równą F_CPU/2 można uzyskać sprzętowo timerem.<br /></div><br />Niby jak? Mam wywoływać przerwanie z każdym taktem zegara? A co z pętlą main?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 28 gru 2014, o 18:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-12-28T15:34:06+01:00</updated>
<published>2014-12-28T15:34:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110850#p110850</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110850#p110850"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110850#p110850"><![CDATA[
<div class="quotetitle">splawik00 napisał(a):</div><div class="quotecontent"><br />PINB |= (1&lt;&lt;PB0) nadal zajmuje tyle samo kodu co PORTB |= (1&lt;&lt;PB0).<br /></div><br />Ale PINB = (1&lt;&lt;PB0) na pewno zajmuje mniej.<br /><div class="quotetitle">splawik00 napisał(a):</div><div class="quotecontent"><br />Przypisywać bezpośrednio nie mogę, bo na nieszczęście kod ma jeszcze robić coś innego<br /></div><br />Możesz. A właściwie musisz. I to jest właśnie piękne w tej metodzie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";-)" title="Puszcza oko" /><br /><br />A tak na marginesie: maksymalną częstotliwość równą F_CPU/2 można uzyskać sprzętowo timerem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 28 gru 2014, o 15:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-28T13:09:47+01:00</updated>
<published>2014-12-28T13:09:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110829#p110829</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110829#p110829"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110829#p110829"><![CDATA[
Jakbym umiał ASM to bym napisał  <img src="https://forum.atnel.pl/images/smilies/icon_redface.gif" alt=":oops:" title="Zawstydzony" /> <br />Natomiast mam jeszcze prośbę do tych co znają ASM.<br />Mam taki kod:<br />[syntax=c]if(licznik == nastawa){<br />licznik = 0;<br />PORTB ^= (1&lt;&lt;PB2);<br />}<br />else{<br />asm(&quot;NOP&quot;);<br />}[/syntax]<br />Jak widać dodałem NOPy, żeby zrównoważyć (w przypadku kiedy licznik != nastawa) prędkość na pinie.<br />Pytanie do Was ile NOPów powinienem wstawić, żeby zrównoważyć instrukcje w przypadku kiedy licznik jest równy nastawa?<br />Kod w ASM:<br />[syntax=asm]90:41 f4       brne.+16     ; 0xa2 &lt;main+0x4c&gt;<br />  92:88 b3       inr24, 0x18; 24<br />  94:86 27       eorr24, r22<br />  96:88 bb       out0x18, r24; 24<br />  98:20 e0       ldir18, 0x00; 0<br />  9a:30 e0       ldir19, 0x00; 0<br />  9c:40 e0       ldir20, 0x00; 0<br />  9e:50 e0       ldir21, 0x00; 0<br />  a0:e7 cf       rjmp.-50     ; 0x70 &lt;main+0x1a&gt;<br />...<br />  ae:e0 cf       rjmp.-64     ; 0x70 &lt;main+0x1a&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 28 gru 2014, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[WoodPaker]]></name></author>
<updated>2014-12-28T12:39:51+01:00</updated>
<published>2014-12-28T12:39:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110823#p110823</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110823#p110823"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110823#p110823"><![CDATA[
A napisz program w czystym asm. Może tak będzie lepiej?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1425">WoodPaker</a> — 28 gru 2014, o 12:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-28T12:32:47+01:00</updated>
<published>2014-12-28T12:32:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110821#p110821</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110821#p110821"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110821#p110821"><![CDATA[
PINB |= (1&lt;&lt;PB0) nadal zajmuje tyle samo kodu co  PORTB |= (1&lt;&lt;PB0).<br />Przypisywać bezpośrednio nie mogę, bo na nieszczęście kod ma jeszcze robić coś innego  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 28 gru 2014, o 12:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xor]]></name></author>
<updated>2014-12-28T11:29:22+01:00</updated>
<published>2014-12-28T11:29:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110817#p110817</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110817#p110817"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110817#p110817"><![CDATA[
Wystarczy samo przypisanie bez sumy bitowej (oczywiście zakładając, że nie togluje się w ten sposób innych pinów):<br />[syntax=c]while(1){<br />   PINB = (1&lt;&lt;PB0);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1774">xor</a> — 28 gru 2014, o 11:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-12-28T10:23:49+01:00</updated>
<published>2014-12-28T10:23:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110799#p110799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110799#p110799"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110799#p110799"><![CDATA[
Proponuję jeszcze sprawdzić czy taki kod zadziała:<br />[syntax=c]while(1){<br />   PINB |= (1&lt;&lt;PB0);<br />}[/syntax]<br />W nowszych mikrokontrolerach toggle można uzyskać wpisując 1 do rejestru PINx<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 28 gru 2014, o 10:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-28T00:25:52+01:00</updated>
<published>2014-12-28T00:25:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110765#p110765</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110765#p110765"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110765#p110765"><![CDATA[
Kod z togglowaniem zamieściłem w jednym z powyższych postów i rzeczywiście jest różnica, bo tam jest odczytywany stan portu, wykonywany xor i zapisywany port.<br />Swoją drogą powyższy kod zajmuje 4 takty zegara. Przy kwarcu 8MHz daje to generowane 1MHz na wyjściu, a w praktyce jest 1,33MHz. To juz nie rozumiem, dopalacz jakiś?  <img src="https://forum.atnel.pl/images/smilies/icon_cool.gif" alt="8-)" title="Cool" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 28 gru 2014, o 00:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-12-28T00:12:24+01:00</updated>
<published>2014-12-28T00:12:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110761#p110761</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110761#p110761"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110761#p110761"><![CDATA[
Dla pewności możesz podejrzeć plik asemblerowy i<br />wtedy wychwycić różnicę<br /><br />ale to co kolega @krish pokazał<br /><br />[syntax=c]while(1)<br />    {<br />        PORTB |= (1&lt;&lt;PB0);<br />        PORTB &amp;= ~(1&lt;&lt;PB0);<br />        }[/syntax]<br />jest zamienione przez kompilator na:<br />[syntax=asm]PORTB |= (1&lt;&lt;PB0);<br />  32:   c0 9a           sbi     0x18, 0 ; 24<br />        PORTB &amp;= ~(1&lt;&lt;PB0);<br />  34:   c0 98           cbi     0x18, 0 ; 24<br />  36:   fd cf           rjmp    .-6             ; 0x32 &lt;main+0x2&gt;[/syntax]<br />to by znaczyło że przy tym sposobie (bez toglowania) nie są odczytywane <br />rejestry tylko kompilator ustawia  pin w konkretny stan.<br />Niestety nie mogę  sprawdzić jak jest skompilowany kod z toglowaniem<br />nie mam teraz dostępu do swojego kompa , <br />wtedy można by to porównać<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 28 gru 2014, o 00:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-27T23:23:38+01:00</updated>
<published>2014-12-27T23:23:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110756#p110756</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110756#p110756"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110756#p110756"><![CDATA[
No nie wiem, może się mylę, ale wydaje mi się, że w obu przypadkach zarówno XOR jak i AND oraz OR, trzeba najpierw odczytać stan portu, wykonać operacje biotowe i zapisać nową wartość. Ale to również jest mój domysł i mogę się mylić. Co innego jak bym napisał:<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">while(1){<br />   PORTB = 0;<br />   PORTB = 1;<br />}</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 27 gru 2014, o 23:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Zaba]]></name></author>
<updated>2014-12-27T23:01:22+01:00</updated>
<published>2014-12-27T23:01:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110749#p110749</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110749#p110749"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110749#p110749"><![CDATA[
Zaznaczam że to co napiszę to jest mój domysł<br /><br />ATmega nie ma sprzętowego negowania pinu i pewnie<br />dla przełącznia typu &quot;togle&quot; musi najpierw odczytać stan pinu<br />a dopiero później zmienić na przeciwny odpowiednim rozkazem,<br /><br />a w tym drugim przypadku Ty bezpośrednio podajesz to co ma<br />być na pinie wyjściowym<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1044">Zaba</a> — 27 gru 2014, o 23:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-27T22:13:40+01:00</updated>
<published>2014-12-27T22:13:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110742#p110742</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110742#p110742"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110742#p110742"><![CDATA[
Włączenie optymalizacji -O3 niestety nic nie zmienia.<br />Nie ma różnicy, czy najpierw wyzeruję pin, czy go ustawię.<br />Natomiast nie wiadomo, dlaczego nagle już mam na wyjściu 800kHz  <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" /><br />Nie zmieniałem treści kodu.<br />Natomiast co ciekawego zauważyłem:<br />Przy kodzie <br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />PORTB ^= (1&lt;&lt;PB0);<br /></div><br />uzyskuję 800kHz.<br />Natomiast przy kodzie<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />PORTB |= (1&lt;&lt;PB0);<br />PORTB &amp;= ~(1&lt;&lt;PB0);<br /></div><br />oraz<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />PORTB &amp;= ~(1&lt;&lt;PB0);<br />PORTB |= (1&lt;&lt;PB0);<br /></div><br />prędkość nagle wynosi 1,3MHz !!!<br />Jakim cudem?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 27 gru 2014, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[szopler]]></name></author>
<updated>2014-12-27T20:15:14+01:00</updated>
<published>2014-12-27T20:15:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110728#p110728</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110728#p110728"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110728#p110728"><![CDATA[
Proponuję sprawdzić jak działają:<br /><br />[syntax=c]while(1){<br />    PORTB |= (1&lt;&lt;PB0);<br />PORTB &amp;= ~(1&lt;&lt;PB0);<br />    }[/syntax]<br />oraz:<br />[syntax=c]while(1){<br />    PORTB &amp;= ~(1&lt;&lt;PB0);<br />PORTB |= (1&lt;&lt;PB0);<br />    }[/syntax]<br /><br />Bo o ile pamiętam to są różnice <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=82">szopler</a> — 27 gru 2014, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2014-12-27T20:52:47+01:00</updated>
<published>2014-12-27T20:04:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110727#p110727</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110727#p110727"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110727#p110727"><![CDATA[
Tutaj jest filmik  pokazujący mniej więcej to, o co mi chodzi:<br /><a href="http://www.insidegadgets.com/2011/05/16/change-attiny85-clock-speed-on-the-fly/"  class="postlink">http://www.insidegadgets.com/2011/05/16/change-attiny85-clock-speed-on-the-fly/</a><br /><br />w kodzie b. ważna jest sekwencja zapisu do rejestrów:<br />[syntax=c]// Change to 2 MHz by changing clock prescaler to 4<br />cli(); // Disable interrupts -jeżeli potrzeba<br />CLKPR = (1&lt;&lt;CLKPCE); // Prescaler enable<br />CLKPR = (1&lt;&lt;CLKPS1); // Clock division factor 4 (0010)<br />sei(); // Enable interrupts -jeżeli potrzeba<br />// i zmiana preskalera na 1<br />cli(); // Disable interrupts -jeżeli potrzeba<br />CLKPR = (1&lt;&lt;CLKPCE); // Prescaler enable<br />CLKPR = 0; // Clock division factor 1 (0000)<br />sei(); // Enable interrupts -jeżeli potrzeba[/syntax]<br /><br />p.s.<br />oczywiście wtedy _delay_...  źle chodzi.<br /><br />p.s2.<br /><br />spróbuj ustawić optymalizację kodu na &quot;heavy optimalizations&quot;  -O3<br />jest b. dobry kod dla np. <br /><br />[syntax=c]while(1)<br />    {<br />        PORTB |= (1&lt;&lt;PB0);<br />        PORTB &amp;= ~(1&lt;&lt;PB0);<br />        }[/syntax]<br />jest:<br />[syntax=asm]PORTB |= (1&lt;&lt;PB0);<br />  32:c0 9a       sbi0x18, 0; 24<br />        PORTB &amp;= ~(1&lt;&lt;PB0);<br />  34:c0 98       cbi0x18, 0; 24<br />  36:fd cf       rjmp.-6      ; 0x32 &lt;main+0x2&gt;[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 27 gru 2014, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[acid3]]></name></author>
<updated>2014-12-27T19:23:28+01:00</updated>
<published>2014-12-27T19:23:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110720#p110720</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110720#p110720"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110720#p110720"><![CDATA[
Nie wiem jak jest w Medze (bo nie dałem rady tego znaleźć ani w googlu ani w datasheet'cie) ale w większych prockach (ARMopochodnych) oprócz częstotliwości pracy samego rdzenia procka podaje się również maksymalną częstotliwość pracy GPIO. Nie pamiętam dokładnie danych ale np dla XMOS , gdzie wewnętrzny timer tyka z F=100Mhz, porty mogą pracować z F=60Mhz. Myślę że związane jest to ze sposobem skonstruowania układu i jest coś takiego jak czas narastania czy opadania czy coś w ten deseń. Nie wiem, nie znam się , tak tylko mi do głowy przyszło.<br /><br />BTW, niedawno robiłem test tego typu - while(1) PORTx ^= (1&lt;&lt;0); i maksymalna częstotliwość na pinie togglowanym wyniosła ok 2Mhz (dokładnie nie pamiętam) dla kwarców od 1Mhz wewnętrzny do 27Mhz zewnętrzny. (oczywiście przy niższych F ta wartość była sporo niższa niż 2Mhz).<br /><br />EDIT: F była sprawdzana na oscylku analogowym oraz na Saleae DIY.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=944">acid3</a> — 27 gru 2014, o 19:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-27T19:07:29+01:00</updated>
<published>2014-12-27T19:07:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110718#p110718</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110718#p110718"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110718#p110718"><![CDATA[
Kondensatory są na pewno ok, tak podstawowych błędów nie popełniam <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak czy inaczej 22pF.<br />Kwarc na pewno dobry. Podmiana z 8MHz na 16MHz skutkuje dwukrotnym podniesieniem częstotliwości na wyjściu, więc działa.<br />Próbowałem też z wewnętrznym oscylatorem i to samo. Nawet wyprowadziłem go na PB4 (CKOUT=0) i zmierzyłem. Jest 8MHz.<br />Co do rejestru CLKPR to nigdy go nie ruszałem. Jakby kolega mógł przybliżyć trochę ten temat to spróbuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 27 gru 2014, o 19:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2014-12-27T15:43:04+01:00</updated>
<published>2014-12-27T15:43:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110690#p110690</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110690#p110690"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110690#p110690"><![CDATA[
CKDIV8 -niby OK,<br />proponuję w takim razie sprawdzić:<br />- wartości kondensatorów przy kwarcu, <br />- podmienić kwarc na inny <br />( ew. porównać częstotliwości na wyjściu &quot;generatorka&quot; po zmianie kwarcu na innego z inną częstotliwością , czy odpowiednio się zmieniła ). <br />Na koniec spróbuj napisać programik zmieniający co jakiś czas rejestr CLKPR – Clock Prescale Register ( ale co najwyżej tylko bity: CLKPS0 i CLKPS1- dzielnik od 1 do 8 )<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 27 gru 2014, o 15:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-26T22:25:38+01:00</updated>
<published>2014-12-26T22:25:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110633#p110633</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110633#p110633"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110633#p110633"><![CDATA[
Skoro niezaprogramowany, czyli wyłączony, to znaczy ustawiłem ten bit (CKDIV8 = 1).<br />Attiny85, EF 0xFF, HF 0xDF, LF 0xFF.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 26 gru 2014, o 22:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[krish]]></name></author>
<updated>2014-12-26T22:15:05+01:00</updated>
<published>2014-12-26T22:15:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110631#p110631</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110631#p110631"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110631#p110631"><![CDATA[
CKDIV8 =niezaprogramowany-czyli ma 0 czy 1 ? najlepiej podaj jaka jest wartość Fuse Byte Low<br /><br />p.s.<br />można także ustawiać w programie rejestr: CLKPR – Clock Prescale Register<br />ale trzeba poczytać jak ( są restrykcje).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2273">krish</a> — 26 gru 2014, o 22:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[splawik00]]></name></author>
<updated>2014-12-26T21:47:50+01:00</updated>
<published>2014-12-26T21:47:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110625#p110625</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110625#p110625"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110625#p110625"><![CDATA[
Pomiar wykonuję różnymi miernikami częstotliwości, każdy pokazuje to samo.<br />Co ciekawe dla Attiny13 i Attiny85 prędkości te wynoszą tak jak wspominałem około tych 120-160kHz. Natomiast Atmega8 przy tym samym kwarcu daje już prawie 1MHz, wiec tyle co teoretycznie wyliczyliśmy. To to by się zgadzało. Ale dlaczego na Attiny nie działa?<br />Z góry uprzedzę, że CKDIV8 w Attiny jest niezaprogramowany!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1911">splawik00</a> — 26 gru 2014, o 21:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xamrex]]></name></author>
<updated>2014-12-26T21:07:55+01:00</updated>
<published>2014-12-26T21:07:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110621#p110621</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110621#p110621"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110621#p110621"><![CDATA[
<div class="quotetitle">splawik00 napisał(a):</div><div class="quotecontent"><br />Jednak przy takim kodzie maksymalna częstotliwość jaką mogę wydusić to coś około 160kHz.<br /></div><br />Jesteś pewny, że dobrze odczytujesz to z oscyloskopu?<br />Mógłbyś wkleić screen?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=74">xamrex</a> — 26 gru 2014, o 21:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[rajmund96]]></name></author>
<updated>2014-12-27T15:32:51+01:00</updated>
<published>2014-12-26T20:43:17+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110617#p110617</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110617#p110617"/>
<title type="html"><![CDATA[Re: Generowanie przebiegu prostokątnego, a częstotliwość tak]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=9867&amp;p=110617#p110617"><![CDATA[
<a href="http://cygnus.tele.pw.edu.pl/olek/doc/syko/syko-w3.pdf"  class="postlink">http://cygnus.tele.pw.edu.pl/olek/doc/syko/syko-w3.pdf</a> proszę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2275">rajmund96</a> — 26 gru 2014, o 20:43</p><hr />
]]></content>
</entry>
</feed>