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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-10-30T07:59:35+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=21489&amp;mode</id>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-10-30T07:59:35+01:00</updated>
<published>2018-10-30T07:59:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213154#p213154</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213154#p213154"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213154#p213154"><![CDATA[
Dodam jeszcze, że korzystając z generatora kodu dla STM (BuceMX) inicjalizacja każdego peryferium jest w osobnej funkcji. I kod wynikowy jest dużo bardziej czytelny niż upchnięcie wszystkiego w funkcji main.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 30 paź 2018, o 07:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Nondzu]]></name></author>
<updated>2018-10-29T19:41:21+01:00</updated>
<published>2018-10-29T19:41:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213145#p213145</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213145#p213145"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213145#p213145"><![CDATA[
<div class="quotetitle">micky napisał(a):</div><div class="quotecontent"><br />Dokładnie tak jak mówi kolega. Ja też tak wolę, kod jest dla mnie czytelniejszy.<br /></div><br /><br />super sprawa jesli inicjalizujemy kilka np 5-10-15 peryferii mikrokontrolera to takie uplatanie w funkcje ma sens bo kod jest o niebo czytelniejszy moim zdaniem. Mozna np postarac sie, jesli jest taka potrzeba, napisac funkcje z parametrami do ustawien timerow, gdzie dalej podczas dzialania programu potrzebna jest zmiana ustawien timera lub tym podobne. Tak tez moim zdaniem przy optymalizacji kodu trzeba miec na uwadze czy ten jeden czy kilka/kilkanascie skokow podczas inicjalizacji da nam cokolwiek, to dzieje sie tak blyskawicznie ze raczej przy projektach innych niz automotive lub przemyslowych nie bedzie to miec kompletnie znaczenia, a jak juz kolega wyzej pisal, kod wiele przyjemniejszy dla oczu.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1672">Nondzu</a> — 29 paź 2018, o 19:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2018-10-29T11:13:06+01:00</updated>
<published>2018-10-29T11:13:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213127#p213127</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213127#p213127"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213127#p213127"><![CDATA[
Dokładnie tak jak mówi kolega. Ja też tak wolę, kod jest dla mnie czytelniejszy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 29 paź 2018, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2018-10-29T09:44:01+01:00</updated>
<published>2018-10-29T09:44:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213123#p213123</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213123#p213123"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213123#p213123"><![CDATA[
<div class="quotetitle">xentis napisał(a):</div><div class="quotecontent"><br />Tak wogule to zastanawia mnie zasadność ubierania takich rzeczy jak inicjalizacja timera w ciało funkcji (...) Natomiast inicjalizacja jest zestawem instrukcji wykonującym się raz jedyny w czasie życia programu więc po co go obciążać instrukcjami skoków i odkładaniem danych na stosie?<br /></div> Wdaje mi się, że chodzi o czytelność kodu. A funkcję zawsze można ustawić jako inline - wtedy zawartość funkcji jest wstawiona w miejscu wywołania, więc nie ma skoków i dodatkowych elementów na stosie (no chyba, że się mylę?)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 29 paź 2018, o 09:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tymonek584]]></name></author>
<updated>2018-10-29T00:32:14+01:00</updated>
<published>2018-10-29T00:32:14+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213122#p213122</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213122#p213122"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213122#p213122"><![CDATA[
Niniejszym pozwolę sobie zasadzić największego face-palma świata. Po wprowadzeniu zmian zaproponowanych przez Daro69 i zubika wszystko działa OK, dziękuję bardzo. Ech, czemuż to ja taki nieuważny jestem...<br />A co do wyodrębniania inicjalizacji timerów jako funkcji? Kopiowałem ją z programu, który napisałem pewnie jakoś ze 4 lata temu, a w ciągu tych 4 lat przez 3 nie ruszyłem mikroklocków w ogóle - zajmowałem się innymi rzeczami. Dopiero kilka dni temu wróciłem, bo mam nowe pomysły na ich wykorzystanie w połączeniu z Raspberry Pi. W każdym razie w tamtym programie miałem tę funkcję w oddzielnym pliku, który zajmował się timerami, zarówno tym sprzętowym, jak i opartymi na nim programowymi, także stąd był pomysł ubrania w funkcję.<br />Jeszcze raz dziękuję a pomoc, jak zwykle błąd banalny a siedzi się i się szuka nie wiadomo gdzie...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5907">tymonek584</a> — 29 paź 2018, o 00:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2018-10-28T21:08:19+01:00</updated>
<published>2018-10-28T21:08:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213114#p213114</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213114#p213114"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213114#p213114"><![CDATA[
Tak wogule to zastanawia mnie zasadność ubierania takich rzeczy jak inicjalizacja timera w ciało funkcji.<br />Funkcja jest to przydatny twór w momencie gdy jakiś fragment kodu jest wykonywany wiele razy w całym programie więc by go nie powielać zasadne jest wyodrębnienie go jako funkcję i później tylko wywoływanie. Natomiast inicjalizacja jest zestawem instrukcji wykonującym się raz jedyny w czasie życia programu więc po co go obciążać instrukcjami skoków i odkładaniem danych na stosie?<br />Inaczej sprawa się ma gdy robimy sobie bibliotekę wówczas innej metody nie ma by z czeluści biblioteki zainicjować jakieś peryferia...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 28 paź 2018, o 21:08</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2018-10-28T20:26:27+01:00</updated>
<published>2018-10-28T20:26:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213107#p213107</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213107#p213107"/>
<title type="html"><![CDATA[Re: Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213107#p213107"><![CDATA[
no dobra,<br />przerwanie gdzie jest tam jest, ale jest.<br />cialo funkcji 'timers_init' jest gdzie jest ale jest.<br />a gdzie jest wywołanie tej funkcji?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 28 paź 2018, o 20:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[tymonek584]]></name></author>
<updated>2018-10-28T20:20:49+01:00</updated>
<published>2018-10-28T20:20:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213105#p213105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213105#p213105"/>
<title type="html"><![CDATA[Ustawienie timera0 ATtiny2313 w CTC]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=21489&amp;p=213105#p213105"><![CDATA[
Cześć wszystkim,<br />do tej pory jedynym prockiem, jakim się bawiłem była ATmega8. Tam nie mam problemów z ustawieniem timera2 w tryb CTC. Per analogia spróbowałem w ATtiny2313, ale ni diabła nie chce mi zacząć działać. Kod wygląda tak:<br /><br />[syntax=c]#include&lt;avr/io.h&gt;<br />#include&lt;avr/interrupt.h&gt;<br />#include&lt;util/delay.h&gt;<br /><br />#define WLED (1&lt;&lt;PD6)<br />#define WLED_ON (PORTD |= WLED)<br />#define WLED_OFF (PORTD &amp;= ~WLED)<br />#define WLED_TOG (PORTD ^= WLED)<br /><br />volatile uint8_t TimerLED = 200;<br /><br />void timers_init(void)<br />{<br />TCCR0A |= (1&lt;&lt;WGM01); // Timer0 CTC<br />//#if F_CPU &lt; 16000000<br />TCCR0B |= (1&lt;&lt;CS01)|(1&lt;&lt;CS00); // prescaler = 64<br />OCR0A = F_CPU/64/1000-1;<br />TIMSK = (1&lt;&lt;OCIE0A); // compare match interrupt allowed<br />}<br /><br />ISR(TIMER0_COMPA_vect)<br />{<br />uint16_t x;<br />x = TimerLED;<br />if (x) TimerLED = --x;<br />}<br /><br />int main(void)<br />{<br /><br />DDRD |= WLED;<br />WLED_OFF;<br /><br />sei();<br /><br />while(1)<br />{<br />if (!TimerLED) WLED_TOG;<br />}<br />}[/syntax]<br /><br />Program powinien tykać co ok 1 ms, i za każdym tyknięciem zrzucać do 0 TimerLED, gdzie przy 0 powinna dioda zmienić stan. Jednak dioda jest cały czas zgaszona. Czy problem leży w ustawieniach bitów timera0, czy zrobiłem jakiś inny, głupi, błąd, którego nie mogę znaleźć?<br /><br />Z góry dziękuję na pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=5907">tymonek584</a> — 28 paź 2018, o 20:20</p><hr />
]]></content>
</entry>
</feed>