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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-10-22T23:29:56+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=13321&amp;mode</id>
<entry>
<author><name><![CDATA[manop1]]></name></author>
<updated>2015-10-22T23:29:56+01:00</updated>
<published>2015-10-22T23:29:56+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143172#p143172</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143172#p143172"/>
<title type="html"><![CDATA[Re: AT168pa i przetwornik piezo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143172#p143172"><![CDATA[
Ok dzięki, z tym inline to cenna uwaga, zapomniałem o nim, a było w książce było.<br /><br />Po prostu mnie dziwiło, że włączając przerwania przez SEI nawet jak nic nie wykonuję w przerwaniu, tak bardzo zmniejsza się ta częstotliwość. Teraz kolejne moje pytanie, mam timer1 w trybie CTC, czy eleganckie jest w działaniu programu zmienianie OCR1A czyli do ilu ma liczyć aby wywołać przerwanie czy też lepiej jakąś zmienną i pętelką choćby w przerwaniu? Bo działać działa, ale nie wiem czy tak można <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> dzięki.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3455">manop1</a> — 22 paź 2015, o 23:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-10-22T08:34:02+01:00</updated>
<published>2015-10-22T08:34:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143111#p143111</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143111#p143111"/>
<title type="html"><![CDATA[Re: AT168pa i przetwornik piezo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143111#p143111"><![CDATA[
<div class="quotetitle">manop1 napisał(a):</div><div class="quotecontent"><br />A zawsze wydawało mi się, że preprocesor przed kompilacją zamienia kod na najprostszy więc <strong>pozbywa się wywołania przez procedurę</strong><br /></div><br />Hehe, kod najprostszy w sensie zrozumiały dla procesora czyli na konkretne rozkazy asmeblera, co do pozbywania się skoków przy wywołaniu procedury to oczywiście zrobi to jak oznaczysz procedurę jako &quot;inline&quot; chociaż i w tym przypadku kompilator może odmówić wmiksowania procedury w kod...<br /><br />Odnoście Twojego głównego pytania, to chyba zrozumiałe jest, że po włączeniu przerwań pętla główna drastycznie zwolni - w końcu tak działają przerwania czyli przerywają pracę głównego programu, aby wykonać inny fragment (który staje się priorytetowy po każdym wywołaniu tych przerwań). Nie wiem jakie chcesz uzyskać efekt końcowy dla piezo (kilka konkretnych tonów, forma syreny, czy może ustawiana &quot;dowolna&quot; częstotliwość z podanego zakresu), ale wydaje mi się, że najlepszym dla Ciebie rozwiązaniem będzie główną część grającą umieścić w przerwaniach, a z pętli zadawać tylko parametry. Wywołanie przerwania ustaw na wartość zbliżoną (minimum) do maksymalnej częstotliwości jaką chcesz uzyskać x 2 czyli w Twoim przypadku 16kHz x 2 = 32kHz.<br />I czekamy na pierwsze próbki programu... <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 22 paź 2015, o 08:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[manop1]]></name></author>
<updated>2015-10-22T01:35:24+01:00</updated>
<published>2015-10-22T01:35:24+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143108#p143108</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143108#p143108"/>
<title type="html"><![CDATA[AT168pa i przetwornik piezo]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13321&amp;p=143108#p143108"><![CDATA[
Witam, mam pytanie bo się męczę już trochę czasu i zniechęcam. Jak najlepiej obsłużyć przetwornik piezo żeby mieć na nim zakres kilku herców do tych 16kHz. <br /><br />ATmega168pa + 16MHz kwarc, kondensatory wszystkie ok.<br /><br />Przetwornik piezo podpięty pod PD5, druga strona do GND.<br /><br />Gdy po prostu do pętli while wrzucę:<br /><br />[syntax=c]While(1)<br />{<br />PORTD ^= (1 &lt;&lt; PD5);<br />}[/syntax]<br /><br />Otrzymuję na przetworniku 1.6 MHz, jak tylko załączę przerwania &quot;SEI();&quot; na przetworniku mam tylko 76kHz.<br /><br />Kolejna sprawa jeżeli chcę przez procedurkę sterować tym wyjściem robię tak: <br /><br />[syntax=c]void sterowanie(void)<br />{<br />PORTD ^= (1 &lt;&lt; PD5);<br />}[/syntax]<br /><br />i zamiast bezpośrednio sterować portem wywołuję tę procedurę, mam jeszcze mniejsze częstotliwości. Po co to piszę, gubię się w tym jakie operacje ile cykli zajmują, może ja coś robię źle? A zawsze wydawało mi się, że preprocesor przed kompilacją zamienia kod na najprostszy więc pozbywa się wywołania przez procedurę co za tym idzie nie ma to znaczenia w jaki sposób steruję portem. <br /><br />Może mi ktoś coś mądrego podpowie. Nie jest to żadne zadanie na szybko do szkoły tylko hobbystyczne dłubaniny amatora, który się chce czegoś nauczyć. A już się trochę zniechęca. Dziękuję za jakąkolwiek mądrą radę. Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3455">manop1</a> — 22 paź 2015, o 01:35</p><hr />
]]></content>
</entry>
</feed>