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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-05-27T20:53:06+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7206&amp;mode</id>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-05-27T20:53:06+01:00</updated>
<published>2014-05-27T20:53:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82574#p82574</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82574#p82574"/>
<title type="html"><![CDATA[Re: Timer na ATtiny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82574#p82574"><![CDATA[
Zmiana rejestru CLKPSR (i CLKMSR, WDTCSR) jest możliwa tylko po wcześniejszym wpisaniu magicznej wartości 0xD8 do rejestru CCP:<br />[syntax=c]CCP = 0xD8; //umożliwienie zmian na 4 cykle zegarowe (wyłącza przerwania na ten czas)<br />CLKPSR = 0; //zmiana preskalera głównego zegara[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 27 maja 2014, o 20:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-05-27T09:45:35+01:00</updated>
<published>2014-05-27T09:45:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82514#p82514</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82514#p82514"/>
<title type="html"><![CDATA[Timer na ATtiny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7206&amp;p=82514#p82514"><![CDATA[
Witam, wczytuję się w pdf Attiny10 i próbuje ustawić nośną 36 kHz, nie wiem czy dobrze to rozumiem - w nocie na stronie 74 w ustawieniach rejestrów pisze ze dla trybu CTC ustawiamy bity WGM0 tak:<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Mode      WGM03:0     Mode of Operation    TOP     Update ofOCR0x at   TOV0 Flag Set on<br /><br />4 0100 CTC (Clear Timer on Compare) OCR0A Immediate MAX<br /></div><br /><br />Rozumiem ze muszę ustawić bit WGM03 (?), zrobiłem tak - potem prescaler 1 i jest nośną - niby jest bo jakieś losowe wartości, a tylko czasem gdy zbilizę pilot i odbiornik to pokazuje dokładną wartość. Nie jestem pewien czy prawidłowo ustawiłem ten Timer. Według obliczen, przy 1MHz, presclerze 1 i OCR0A = 12 osiągamy zadaną częstotliwość ale z błędem ponad 6 procentowym - rozumiem ze to tez może zakłócić transmisję.<br /><br />Tu tu sie zaczyna drugi problem - aby zmniejszyc błąd chciałem przestawić rejestry na taktowanie 8 Mhz - ale nie wiadomo dlaczego dioda kontrolna (co sekunde) zaswieca sie i gasnie w tak zółwim tempie... i oczywoscie transmisja IR wogole nie działa - mimo ustawienia timera pod 8 MHz. Na stronie 21 jest podane ze domyslnie oscylator jest ustawiony na 8 MHz<br />ale tez domyslnie właczony jest dzielnik tego taktowania czyli koncem konców przy starcie domyslnie jest 1 Mhz, prawda?<br /><br />Chciałem ustawić 8 Mhz wiec wyczysciłem cały rejestr CLKPSR co według noty dałoby pełną częstotliwosc bez podziału, a tu taki zonk ze jest jeszcze wolniej. zmieniałem tez czestowtliwosc w ustawieniach projektu za kazdym razem.<br /><br />Poniżej wklejam mój cały kod z main.c<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#define LED (1&lt;&lt;PB2);<br /><br />void one1( void );<br />void zero( void );<br />void send( uint8_t togg, uint8_t adres, uint8_t dane);<br />uint16_t flaga_press, rc5_frame;<br /><br />int main( void ){<br /><br />DDRB |= LED;//kierunek wyjciowy dioda pomocnicza<br />DDRB |= (1&lt;&lt;PB0);//kierunek wyjciowy dioda IR<br />//PORTB |= (1&lt;&lt;PB0);//pull up dla IR<br /><br />CLKPSR = 0; //(0&lt;&lt;CLKPS0) | (0&lt;&lt;CLKPS1); // wy,łczenie podziały CPU zeby  było 8 Mhz - domyslnie podział przez 8 = 1MHz<br /><br />TCCR0B |= (1&lt;&lt;WGM02);//CTC<br />TCCR0B |= (1&lt;&lt;CS00);// preskaler 1<br />OCR0A = 110;//36*2 kHz - nosna<br /><br />//sei();<br /><br />while(1){<br /><br />PORTB ^= LED;<br /><br />send(0,0,9);<br />_delay_ms(1000);<br />}<br />}<br /><br />void one1( void ){<br /><br />_delay_us(889);<br /><br />TCCR0A |= (1&lt;&lt;COM0A0);<br /><br />_delay_us(889);<br /><br />TCCR0A &amp;= ~(1&lt;&lt;COM0A0);<br />}<br /><br />void zero( void ){<br /><br />TCCR0A |= (1&lt;&lt;COM0A0); //przyłaczenietimera do pinu OCR2 z diodą IR<br /><br />_delay_us(889);<br /><br />TCCR0A &amp;= ~(1&lt;&lt;COM0A0);<br /><br />_delay_us(889);<br />}<br /><br />void send(uint8_t togg, uint8_t adres, uint8_t dane){ // ta fukcja działa ale gdyu zresetuje odbiornik<br /><br />uint8_t i = 15;<br /><br />rc5_frame |= (1&lt;&lt;15) | (1&lt;&lt;14) | (togg&lt;&lt;13) | (adres&lt;&lt;8) | (dane&lt;&lt;2);<br /><br />do{<br />if(rc5_frame &amp; (1&lt;&lt;i)) one1();<br />else zero();<br />i--;<br />}while(i&gt;1);<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 27 maja 2014, o 09:45</p><hr />
]]></content>
</entry>
</feed>