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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2022-01-20T18:38:29+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=50&amp;t=24113&amp;mode</id>
<entry>
<author><name><![CDATA[mark162]]></name></author>
<updated>2022-01-20T18:38:29+01:00</updated>
<published>2022-01-20T18:38:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234888#p234888</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234888#p234888"/>
<title type="html"><![CDATA[Re: [C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234888#p234888"><![CDATA[
przychodzi mi pomysł zastosowanie  rozwiązania z enkodera kodu Graya<br />[syntax=c]if(bit_is_set( PINC, PC3 )) <br />    {<br />    iii++;<br />    if(aaa) aaa = 0;<br />    }<br />    else<br />    {<br />    aaa++;<br />    if(iii) <br />    {<br />        eee--;<br />        iii=0;<br />    }[/syntax]<br /><br />Nie zdążę go dzisiaj sprawdzić i przerobić na zapis bitowy...<br /><br />Może ktoś ma inny lepszy pomysł na rozwiązanie??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21876">mark162</a> — 20 sty 2022, o 18:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mark162]]></name></author>
<updated>2022-01-20T16:15:55+01:00</updated>
<published>2022-01-20T16:15:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234885#p234885</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234885#p234885"/>
<title type="html"><![CDATA[Re: [C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234885#p234885"><![CDATA[
Pętla while i zmienna iii działa, ale problem dalej pozostaje na oscyloskopie widzę że atmega nie daje tyle okresów co mu wpisze w programie (na 20 zadanych  daje 5-6). <br />Nie mam pomysłu jak by to rozwiązać.<br /><br />[syntax=c]void czekaj(uint8_t eee)<br />{<br />    uint8_t iii = 0;<br />    TCCR2 |= (1&lt;&lt;COM20);<br /><br />    while (eee )<br />    {<br />    loop_until_bit_is_clear( PINC, PC3 );   <br />        eee--;<br />    }<br />    <br />//    while(eee)<br />//    {<br />//    while (bit_is_set( PINC, PC3 ));<br />//        eee--; <br />//    }<br />    <br /><br />    TCCR2 &amp;= ~(1&lt;&lt;COM20);<br />}[/syntax]<br /><br />Próbowałem dołączyć przerwanie ctc do liczenia ale nie wiem dlaczego wykonuje się dużo wolniej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21876">mark162</a> — 20 sty 2022, o 16:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mario2015]]></name></author>
<updated>2022-01-19T18:24:18+01:00</updated>
<published>2022-01-19T18:24:18+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234870#p234870</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234870#p234870"/>
<title type="html"><![CDATA[Re: [C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234870#p234870"><![CDATA[
Pętla<br />[syntax=c]while(iii&gt;eee)[/syntax]<br />nigdy się nie wykona ponieważ po wejściu do funkcji ustawiasz zmienną iii na 0 i z tego tytułu<br />iii nigdy nie będzie większe niż zmienna eee (uint8_t eee - zakres od 0 do 255).<br /><br />W tym przykładzie<br />[syntax=c]while(iii&gt;eee)<br />                {<br />                while(bit_is_clear(PINC,PC3));<br />                while(bit_is_set(PINC,PC3));<br />                iii++;<br />                }[/syntax]<br />masz to samo tzn. zmienna iii nigdy nie będzie większa od eee a zatem warunek znowu nie będzie nigdy spełniony<br />ponieważ zawsze gdy wchodzisz do funkcji to ustawiasz zmienną iii na 0.<br /><br />Żeby pętla się wykonywała to sprubój tak:<br />[syntax=c]void czekaj(uint8_t eee)<br />    {<br />            uint8_t iii = 0; // Uuń tę linijkę<br />     <br />           TCCR2 |= (1&lt;&lt;COM20);<br />     <br />    //      while (eee )<br />    //      {<br />    //              loop_until_bit_is_clear( PINC, PC3 );<br />    //             eee--;<br />    //      }<br />     <br />                    while(eee) //TU ZMIEŃ<br />                    {<br />                    while(bit_is_clear(PINC,PC3));<br />                    while(bit_is_set(PINC,PC3));<br />                    eee--; // I TUTAJ ZMIEŃ<br />                    }<br />          TCCR2 &amp;= ~(1&lt;&lt;COM20);<br />    }[/syntax] <br /><br />wtedy gdy jako argument funkcji eee podasz np: liczbę 100, to ta zmienna będzie dekrementowana aż do zera i<br />pętla wykona się 100 razy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8867">mario2015</a> — 19 sty 2022, o 18:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mark162]]></name></author>
<updated>2022-01-19T16:25:31+01:00</updated>
<published>2022-01-19T16:25:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234869#p234869</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234869#p234869"/>
<title type="html"><![CDATA[Re: [C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234869#p234869"><![CDATA[
wpisy do rejestrów są dobre gdyż atmega daje pożądaną częstotliwość...<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Pętla while(iii&gt;eee) nigdy się nie wykona, bo wartość delaya zawsze będzie większa od zera<br /></div><br />nie bardzo rozumie co masz na myśli mówiąc &quot;delaya&quot; ??<br /><br />a czy taki zapis będzie dobry ??<br />[syntax=c]while(1){<br />...<br />if ( iii&gt; eee ) break;<br />...[/syntax]<br /><br />problem na pewno polega na tym że iii++ nie działa zawsze pokazuje 0.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21876">mark162</a> — 19 sty 2022, o 16:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Makowka]]></name></author>
<updated>2022-01-18T19:15:12+01:00</updated>
<published>2022-01-18T19:15:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234866#p234866</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234866#p234866"/>
<title type="html"><![CDATA[Re: [C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234866#p234866"><![CDATA[
Pętla while(iii&gt;eee) nigdy się nie wykona, bo wartość delaya zawsze będzie większa od zera. To tak na szybko. Nie sprawdzam poprawności wpisów w rejestry, bo nie mam pod ręką noty.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=10748">Makowka</a> — 18 sty 2022, o 19:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mark162]]></name></author>
<updated>2022-01-18T18:04:12+01:00</updated>
<published>2022-01-18T18:04:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234865#p234865</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234865#p234865"/>
<title type="html"><![CDATA[[C++ avr ] liczenie stanów wysokich na TCCR2]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24113&amp;p=234865#p234865"><![CDATA[
Próbuje na różne sposoby wypuscić określoną liczbę stanów wysokich, generowanych sprzętowo na timerze 2 <br /><br />[syntax=c]void czekaj(uint8_t eee)<br />{<br />uint8_t iii = 0;<br /><br />       TCCR2 |= (1&lt;&lt;COM20);<br /><br />//while (iii &gt; eee )<br />//{<br />//loop_until_bit_is_clear( PINC, PC3 );<br />//iii++;<br />//}<br /><br />while(iii&gt;eee)<br />{<br />while(bit_is_clear(PINC,PC3));<br />while(bit_is_set(PINC,PC3));<br />iii++;<br />}<br />      TCCR2 &amp;= ~(1&lt;&lt;COM20);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=21876">mark162</a> — 18 sty 2022, o 18:04</p><hr />
]]></content>
</entry>
</feed>