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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-10-24T13:13:49+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8926&amp;mode</id>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2014-10-24T13:13:49+01:00</updated>
<published>2014-10-24T13:13:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100481#p100481</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100481#p100481"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100481#p100481"><![CDATA[
To odsłonię trochę rąbka tajemnicy - programuję falownik o częstotliwości od ok 5 do ok 60Hz na 230V pracujący w układzie mostka.<br />Do generowania sygnału kluczującego wykorzystuję PWM - do tego używam TIMER:0. PB1 iPB2 sterują połówkami klucza, PB0 - PWM. Na PB3 robię przerwanie zewnętrzne - przy przeciążeniu wyłączy się PWM na ok 1s. Na PB4 mierzę napięcie z dzielnika rezystancyjnego i w zależności od jego wartości ustawiana jest częstotliwość, przy czym przy (WYNIK&gt;&gt;2) &gt; 230 ustawiona będzie częstotliwość stała 50Hz (około) - wszystko mierzone oscyloskopem, więc dokładność &quot;PI razy drzwi&quot;<br />A że jest to mój pierwszy program w atmedze (ba wcześniej się procków bałem jak ognia i wszystko robiłem na piechotkę - tranzystorek, scalaczek itp.) pewno powiecie że porywam się z motyką na słońce.<br />Ale to mi już działa.... nawet się ładnie na oscyloskopie prezentuje, choć kod programu wymaga zapewne jeszcze &quot;oczyszczenia&quot; - jest to wersja BARDZO robocza i wstyd mi ją tu wklejać  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" />. Pomyśleć jeszcze muszę o &quot;watchdog&quot; - reset jak pójdzie coś nie tak - zostało mi jeszcze jakieś 40% wolnej pamięci - tak na wszelki wypadek.<br />Dlatego też TIMER:0 nie wykorzystam do generacji opóźnień, mimo, że były by one bardzo precyzyjne, bo w tym momencie osiągnąłem maksimum swoich możliwości, ale dzięki za trop.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 24 paź 2014, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[GanzConrad]]></name></author>
<updated>2014-10-24T10:00:10+01:00</updated>
<published>2014-10-24T10:00:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100462#p100462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100462#p100462"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100462#p100462"><![CDATA[
nie wiem dlaczego nikt w Tym wątku nie wyjaśnił, dlaczego nie warto stosować funkcji opóźniających (mimo zaznaczania Mirka w powyższym filmiku jak ważne są dobre praktyki programistyczne...) i nie przedstawił jak to się robi w normalnym świecie:<br />w Attiny13 masz Timer0, którego możesz ustawić tak, aby uzyskać przerwanie co tyle us lub ms ile Ci potrzeba. <br /><br />CS02 CS01 CS00 Description<br />0 0 0 No clock source (Timer/Counter stopped)<br />0 0 1 clkI/O/(No prescaling)<br />0 1 0 clkI/O/8 (From prescaler)<br />0 1 1 clkI/O/64 (From prescaler)<br />1 0 0 clkI/O/256 (From prescaler)<br />1 0 1 clkI/O/1024 (From prescaler)<br />1 1 0 External clock source on T0 pin. Clock on falling edge.<br />1 1 1 External clock source on T0 pin. Clock on rising edge.o<br /><br />Od biedy możesz skorzystać z przerwania Watchdoga i nie jest to jakaś tajemna wiedza, którą posiądziesz dopiero po tym jak przez rok będziesz się borykał z funkcjami typu _delay.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1071">GanzConrad</a> — 24 paź 2014, o 10:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-10-23T22:50:40+01:00</updated>
<published>2014-10-23T22:50:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100443#p100443</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100443#p100443"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100443#p100443"><![CDATA[
<div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />A dlaczego tak tego #define F_CPU nie lubicie?<br /></div><br />Jakby tu chodziło o jakieś tam &quot;lubienie&quot; to nikt by o tym nie wspominał ... <br /><br /><div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />Czy po prostu nieelegancko wygląda<br /></div><br />to też - ale to mało ważne<br /><br /><div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />Bruździ w czymś?<br /></div><br />O! tu zaczynasz dobrze myśleć - to teraz obejrzyj ten poradnik, od tego momentu jak niżej link:<br /><br /><!-- m --><a class="postlink" href="https://www.youtube.com/watch?v=UhcyBpM57vo#t=2891" >https://www.youtube.com/watch?v=UhcyBpM57vo#t=2891</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 paź 2014, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2014-10-23T22:26:53+01:00</updated>
<published>2014-10-23T22:26:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100440#p100440</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100440#p100440"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100440#p100440"><![CDATA[
A dlaczego tak tego #define F_CPU nie lubicie?<br />Bruździ w czymś? Czy po prostu nieelegancko wygląda  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Rozumiem, aby tego nie wstawiać do programu.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 23 paź 2014, o 22:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-10-23T22:13:49+01:00</updated>
<published>2014-10-23T22:13:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100434#p100434</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100434#p100434"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100434#p100434"><![CDATA[
<div class="quotetitle">doman89 napisał(a):</div><div class="quotecontent"><br />Tfu!<br /></div><br /><br />hehehe teraz widzi kolega co to znaczy polecać Atmel Studio początkującemu ? ... pierwsze co zrobi - poleci na bloga X .... i z tamtąd jak zarazę przyniesie to tfuuu #define F_CPU w kodzie programu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 23 paź 2014, o 22:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-10-23T21:51:45+01:00</updated>
<published>2014-10-23T21:51:45+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100424#p100424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100424#p100424"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100424#p100424"><![CDATA[
<div class="quotetitle">APAP75 napisał(a):</div><div class="quotecontent"><br />oczywiście podać w nagłówku zdefinicję F_CPU<br /></div><br /><br />Mam nadzieję, że kolega nie ma na myśli czynić herezji typu:<br /><br />[syntax=c]#define F_CPU 8000000UL[/syntax]<br /><br />Tfu!<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 23 paź 2014, o 21:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2014-10-23T21:40:33+01:00</updated>
<published>2014-10-23T21:40:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100419#p100419</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100419#p100419"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100419#p100419"><![CDATA[
Dzięki<br /><br />Idąc Twoim tropem znalazłem to:<br /><br /><br /><br />Z tego co wyczytałem, muszę wykonać kilkakrotnie funkcję _delay_us() w pętli, no i oczywiście podać w nagłówku zdefinicję F_CPU.<br /><br />zaczynam przerabiać swój programik  <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=6195">APAP75</a> — 23 paź 2014, o 21:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[doman89]]></name></author>
<updated>2014-10-23T21:33:30+01:00</updated>
<published>2014-10-23T21:33:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100418#p100418</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100418#p100418"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100418#p100418"><![CDATA[
Witam,<br /><br />Ja do kolegi wyżej dodam, że jeżeli chcesz używać delaya ze zmienną to zrób coś takiego:<br /><br />[syntax=c]void delay_ms( int x)<br />{<br /> while(x--) _delay_ms(1);<br />}[/syntax]<br />i teraz używasz tak:<br /><br />[syntax=c]delay_ms( zmienna );[/syntax]<br /><br /><span style="color: #0000FF">z Niebieskim pozdRowieniem,<br />Doman89</span><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 4 minutach ]</span></strong><br /><br />Dodam jeszcze kolega żebyś sobie zainstalował:<br /><br />ATMEL Studio 6.2 żebyś nie korzystał ze starych kompilatorów.<br /><br />albo <br /><br /><br />ECLIPSE jeżeli nie czujesz się na siłach z w/w - duże wsparcie na forum jest szczególnie dla niego.<br /><br />Tak żebyś miał przede wszystkim najnowszy Toolchain<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3271">doman89</a> — 23 paź 2014, o 21:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[gumeni]]></name></author>
<updated>2014-10-23T21:32:37+01:00</updated>
<published>2014-10-23T21:32:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100417#p100417</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100417#p100417"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100417#p100417"><![CDATA[
Zawsze tak jest przy funkcji delay, powinno się przekazywać do niej stałą. Najłatwiej wykorzystać jakiś timer.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=3088">gumeni</a> — 23 paź 2014, o 21:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[bogdanc]]></name></author>
<updated>2014-10-23T21:29:25+01:00</updated>
<published>2014-10-23T21:29:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100415#p100415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100415#p100415"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100415#p100415"><![CDATA[
Do funkcji delay_ms / us jako argument podaje się stała dosłowna liczbową. <br />Nie podaje się argumentu w postaci zmiennej.<br /><br />Czyli powinno byc np: _delay_us(20);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1319">bogdanc</a> — 23 paź 2014, o 21:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2014-10-23T21:23:11+01:00</updated>
<published>2014-10-23T21:23:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100413#p100413</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100413#p100413"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100413#p100413"><![CDATA[
Poprawiłem i obiecuję poprawę na przyszłość - mam nadzieję, że na tym forum dozwolona jest edycja postów....<br />Nadal czekam na odpowiedź.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 23 paź 2014, o 21:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Jaglarz]]></name></author>
<updated>2014-10-23T21:09:36+01:00</updated>
<published>2014-10-23T21:09:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100412#p100412</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100412#p100412"/>
<title type="html"><![CDATA[Re: dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100412#p100412"><![CDATA[
Polecam zastosować się do tego: <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7402.html" >topic7402.html</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=471">Jaglarz</a> — 23 paź 2014, o 21:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2014-10-23T21:22:05+01:00</updated>
<published>2014-10-23T21:05:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100409#p100409</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100409#p100409"/>
<title type="html"><![CDATA[dziwne zachowanie funkcji _delay_us()]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8926&amp;p=100409#p100409"><![CDATA[
Witam<br /><br />Rozpocząłem swoją zabawę z AVR od attiny13a - fajny mały procesorek z 1kB pamięci flash.... i tu zaczynają się schody.<br />Gdy zadeklaruję zmienną bez nadania jej wartości i użyję jej w funkcji _delay_us() program ma ponad 1kB<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />int main(void)<br />{   <br /><br />unsigned char indeks=0;<br />unsigned int czas; <br />while(1)<br />{<br />while (indeks&lt;=179)<br />{<br /><br /><br />_delay_us(czas);<br />indeks++;<br /><br />}<br />indeks=0;<br />}<br />}[/syntax]<br /><br />i nie mieści się do pamięcji procka<br />[syntax=c]Size after:<br />AVR Memory Usage<br />----------------<br />Device: attiny13a<br /><br />Program:    1160 bytes (113.3% Full)<br />(.text + .data + .bootloader)<br /><br />Data:          0 bytes (0.0% Full)<br />(.data + .bss + .noinit)<br /><br /><br /><br />-------- end --------<br /><br /><br />&gt; Process Exit Code: 0<br />&gt; Time Taken: 00:03[/syntax]<br /><br /><br />Wystarczy poprawić jeden wpis:<br />unsigned int czas=0;<br />i oto wynik:<br />[syntax=c]Size after:<br />AVR Memory Usage<br />----------------<br />Device: attiny13a<br /><br />Program:      58 bytes (5.7% Full)<br />(.text + .data + .bootloader)<br /><br />Data:          0 bytes (0.0% Full)<br />(.data + .bss + .noinit)<br /><br /><br /><br />-------- end --------<br /><br /><br />&gt; Process Exit Code: 0<br />&gt; Time Taken: 00:04[/syntax]<br /><br /><br />To przysłowiowy pryszcz, bo zawsze przy deklaracji zmienej mogę ją czymś zainicjować. Schody zaczynają się tu:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />int main(void)<br />{   <br /><br />unsigned char indeks=0;<br />unsigned int czas=0; <br />unsigned int zmienna=123;<br />while(1)<br />{<br />while (indeks&lt;=179)<br />{<br /><br /><br />_delay_us(czas);<br />indeks++;<br />czas=zmienna&gt;&gt;2;<br /><br />}<br />indeks=0;<br />}<br />}[/syntax]<br /><br />i po kompilacji:<br />d[syntax=c]Size after:<br />AVR Memory Usage<br />----------------<br />Device: attiny13a<br /><br />Program:    1164 bytes (113.7% Full)<br />(.text + .data + .bootloader)<br /><br />Data:          0 bytes (0.0% Full)<br />(.data + .bss + .noinit)<br /><br /><br /><br />-------- end --------<br /><br /><br />&gt; Process Exit Code: 0<br />&gt; Time Taken: 00:04[/syntax]<br />Z tego co zauważyłem, każde przypisanie do zmiennej będącej argumentem funkcji _delay_us() wyniku przesumięcia bitowego (dzielenia, mnożenia przez wielokrotność 2) kończy się kodem wynikowym ponad 1kB.<br />Używam WinAVR-20100110. Na innych kompilatorach nie próbowałem. Mam wprawdzie zainstalowany AVR studio 4.0 - ale jakoś nie potrafię za wiele w nim zrobić... świeżynka jestem.<br />Czy spotkaliście się z podobnym problemem? Jak go rozwiązać? Czy istnieje jakaś inna, w miarę precyzyjna, funkcja opóźnienia czasowego, która nie będzie robił podobnych psikusów?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 23 paź 2014, o 21:05</p><hr />
]]></content>
</entry>
</feed>