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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-09-08T18:41:31+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=22&amp;t=12861&amp;mode</id>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2015-09-08T18:41:31+01:00</updated>
<published>2015-09-08T18:41:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139340#p139340</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139340#p139340"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139340#p139340"><![CDATA[
jak na buzzer jest ok <br /><br />spróbuj może tak  <br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic2415.html" >topic2415.html</a><!-- l --><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic2415.html#p29010" >topic2415.html#p29010</a><!-- l --><br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic1587.html#p15836" >topic1587.html#p15836</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 8 wrz 2015, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rzeczek]]></name></author>
<updated>2015-09-08T18:31:44+01:00</updated>
<published>2015-09-08T18:31:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139339#p139339</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139339#p139339"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139339#p139339"><![CDATA[
Ale dźwięk mógłby być przyjemniejszy. Gdy podłączę słuchawki przez opornik dźwięk jest podobny. Daniel880 ma dużo ładniejsze brzmienie, nie wiem z czego to wynika.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7234">Rzeczek</a> — 8 wrz 2015, o 18:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-09-08T18:25:16+01:00</updated>
<published>2015-09-08T18:25:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139338#p139338</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139338#p139338"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139338#p139338"><![CDATA[
Nooo, jeszcze chwila, a wibrato dorobisz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />  Jest coraz lepiej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 8 wrz 2015, o 18:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rzeczek]]></name></author>
<updated>2015-09-08T18:14:08+01:00</updated>
<published>2015-09-08T18:14:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139337#p139337</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139337#p139337"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139337#p139337"><![CDATA[
Dodałem półnuty, ćwierćnuty, ósemki, pauzy oraz kropki przedłużające czas trwania nut.<br />Brakuje znaku, który usuwałby akcent pomiędzy nutami (przydało by się na początku utworu po pauzach dla ósemek). Timer 100kHz.<br />Utwór Jingle Bells.<br /><br />Cały program<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//Definicja portu brzęczyka<br />#define BUZZER (1&lt;&lt;PC0)<br />#define BUZZER_DDR  DDRC<br />#define BUZZER_PORT PORTC<br /><br />//Definicje stanów brzęczyka<br />#define BUZZER_ON BUZZER_PORT |= BUZZER;<br />#define BUZZER_OFF BUZZER_PORT &amp;= ~BUZZER;<br />#define BUZZER_TOG BUZZER_PORT ^= BUZZER;<br /><br />//Częstotliwość timera - ustawiana w inicjalizacji Timera<br />uint32_t timer_hz = 0;<br /><br />//Licznik dla nuty<br />volatile uint16_t nuta_counter;// Liczy wywołania timera<br />volatile uint16_t nuta = 0;// Wartość licznika dla nuty<br />volatile uint8_t nuta_flag;// Flaga zmiany stanu nóżki dla nuty<br />volatile uint8_t nuta_czas;// Czas trwania nuty<br /><br />//Licznik sekundy<br />volatile uint32_t sekunda_counter;// Liczy wywołania timera<br />volatile uint32_t sekunda;// Wartość licznika dla sekundy<br />volatile uint8_t sekunda_flag;// Flaga tyknięcia timera co 1 sekundę<br /><br />//Deklaracje funkcji<br />void inicjalizacjaTimera1CTC();// Inizjalizuje timer<br />void zmienHzNaLicznik();// Przelicza częstotliwość na licznik<br />// timer_hz * 10 / nuty_hz&#91;i&#93; + 0.5<br />void kolejnaNuta();// Wpisuje do bufora kolejną nutę<br />uint8_t rozpoznajNute(uint16_t utwor_indeks);//Przekłada nutę na wartość z tablicy<br /><br />enum<br />{<br />osemka = 1,<br />cwiercnuta = 2,<br />polnuta = 4,<br />calanuta = 8<br />};<br /><br />//Oktawa razkreślna<br />//Dźwięk częstotliwość*10<br />#define c1 2616<br />#define d1 2937<br />#define e1 3296<br />#define f1 3492<br />#define g1 3919<br />#define a1 4400<br />#define h1 4939<br /><br />//Oktawa dwukreślna<br />//Dźwięk częstotliwość*10<br />#define c2 5232<br />#define d25873<br />#define e26593<br />#define f26985<br />#define g27840<br />#define a28800<br />#define h29878<br /><br />//Dodatki<br />#define hbemol4662 // Obniżone h1<br /><br />// ----------- Wpisz częstotliwości nut * 10 -------------<br />//Reprezentacja nut Hz*10<br />const uint8_t nuty_liczba = 14;<br />uint16_t nuty_hz&#91;&#93; = {c1, d1, e1, f1, g1, a1, hbemol, c2, d2, e2, f2, g2, a2, h2};<br /><br />// -------------------- Wpisz utwór ----------------------<br />// Wyszły w pole kurki trzy<br />//char utwor&#91;&#93; = &quot;1c1c1g1g1a1a1g1g1f1f1e1e1d1d1c1c 1g1g1f1f1e1e1d1d 1g1g1f1f1e1e1d1d 1c1c1g1g1a1a1g1g1f1f1e1e1d1d1c1c&quot;;<br /><br />//<br />//.. - przedłuża czas trwania nuty o połowę<br />//1p 2p 4p 8p - pauzy<br />//1c 2c 4c 8c - cała nuta, półnuta, ćwierćnuta, ósemka<br /><br />// -------------------- Jingle Bells --------------------<br />char utwor&#91;&#93; = &quot;8c8c 4c4a4g4f 2c..8c8c 4c4a4g4f 2d..8p8d 4e4h4a4g&quot;<br />   &quot;2e..8p8e 4C4C4h4g 2a..8c8c 4c4a4g4f 2c..8c8c 4c4a4g4f 2d..8p8d&quot;<br />   &quot;4e4h4a4g 4C4C4C..8C 4D4C4h4g 2f2C 4a4a2a 4a4a2a&quot;<br />   &quot;4a4C4f..8g 2a..4p 4h4h4h..8h 4h4a4a8a8a 4a4g4g4a 2g2C 4a4a2a&quot;<br />   &quot;4a4a2a 4a4C4f..8g 2a..4p 4h4h4h..8h 4h4a4a8a8a 4C4C4h4g 2f..&quot;;<br /><br />//Obsługa pauz<br />uint8_t graj = 0;<br /><br />// ---- Wpisz symbole nut i ich odpowiednik z tablicy ----<br />uint8_t rozpoznajNute(uint16_t utwor_indeks)<br />{<br />//Rozpoznaj czas trwania nuty<br />static uint8_t ostatnia_nuta_czas;<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case '1': nuta_czas = calanuta; break;<br />case '2': nuta_czas = polnuta; break;<br />case '4': nuta_czas = cwiercnuta; break;<br />case '8': nuta_czas = osemka; break;<br />case '.': nuta_czas = ostatnia_nuta_czas/2; graj = 1; break;<br /><br />default: return 1;// Wystąpił biały znak<br />}<br />ostatnia_nuta_czas = nuta_czas;<br /><br />utwor_indeks++;<br /><br />//Rozpoznaj nute<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case 'c': nuta = nuty_hz&#91;0&#93;; graj = 1; break;<br />case 'd': nuta = nuty_hz&#91;1&#93;; graj = 1; break;<br />case 'e': nuta = nuty_hz&#91;2&#93;; graj = 1; break;<br />case 'f': nuta = nuty_hz&#91;3&#93;; graj = 1; break;<br />case 'g': nuta = nuty_hz&#91;4&#93;; graj = 1; break;<br />case 'a': nuta = nuty_hz&#91;5&#93;; graj = 1; break;<br />case 'h': nuta = nuty_hz&#91;6&#93;; graj = 1; break;<br /><br />case 'C': nuta = nuty_hz&#91;7&#93;; graj = 1; break;<br />case 'D': nuta = nuty_hz&#91;8&#93;; graj = 1; break;<br />case 'E': nuta = nuty_hz&#91;9&#93;; graj = 1; break;<br />case 'F': nuta = nuty_hz&#91;10&#93;; graj = 1; break;<br />case 'G': nuta = nuty_hz&#91;11&#93;; graj = 1; break;<br />case 'A': nuta = nuty_hz&#91;12&#93;; graj = 1; break;<br />case 'H': nuta = nuty_hz&#91;13&#93;; graj = 1; break;<br /><br />case '.': return 2; //Obsłużone wcześniej<br /><br />case 'p': nuta = 60000; graj = 0; break;<br /><br />default: return 1;// Wystąpił biały znak<br />}<br /><br />return 0;<br />}<br /><br />int main( void ) {<br />// Ustawienie pinu buzzera jako wyjście<br />BUZZER_DDR |= BUZZER;<br /><br />inicjalizacjaTimera1CTC();<br /><br />// Ustal licznik dla sekundy<br />sekunda = timer_hz;<br /><br />//Przypisz sekundzie czas trwania ósemki<br />sekunda /= calanuta;<br /><br />//Graj wolniej<br />//sekunda *= 2;<br /><br />// Przelicz czestotliwosc nut na wartosc licznika TOG<br />zmienHzNaLicznik();<br /><br />// Pobierz pierwszą nutę<br />kolejnaNuta();<br /><br />// Wpisz początkowe wartości sekundy i nuty<br />nuta_counter = nuta;<br />sekunda_counter = sekunda;<br />graj = 1;<br /><br />// Włączenie przerwań<br />sei();<br /><br /><br />while(1)<br />{<br /><br />if(nuta_flag &amp; graj)<br />{<br />BUZZER_TOG;<br />nuta_flag = 0;<br />}<br /><br />if(sekunda_flag)<br />{<br />if(!--nuta_czas) kolejnaNuta();<br />sekunda_flag = 0;<br />}<br />}<br />}<br /><br /><br />void zmienHzNaLicznik()<br />{<br />float przeliczenie = 0;<br /><br />for(int i = 0; i &lt; nuty_liczba; i++)<br />{<br />//Nuty reprezentowane w Hz*10<br />przeliczenie = timer_hz * 10;<br />przeliczenie /= nuty_hz&#91;i&#93;;<br />przeliczenie += 0.5;<br /><br />nuty_hz&#91;i&#93; = (uint16_t) przeliczenie;<br />}<br />}<br /><br />void kolejnaNuta()<br />{<br />static uint16_t utwor_indeks = 0;<br />uint8_t bialy_znak = 0;<br />if(utwor&#91;utwor_indeks&#93;== '\0')<br />{<br />utwor_indeks = 0;<br />graj = 0;<br />nuta_czas = calanuta;<br />}<br />else<br />{<br />graj = 1;<br />do<br />{<br />//Wybierz częstotliwość kolejnej nuty<br />bialy_znak = rozpoznajNute(utwor_indeks);<br />//Kolejna nuta<br />if(bialy_znak==1) utwor_indeks++; //wystąpił biały znak<br />else utwor_indeks += 2;<br /><br />// Akcent kolejnej nuty<br />// - takie same nuty nie zlewają się w jedną<br />if(bialy_znak != 2) nuta_counter = nuta; //Jeżeli nie jest to przedłużenie nuty<br /><br />}while(bialy_znak==1);//Jeżeli biały znak, weź kolejną nutę<br />}<br /><br />}<br /><br />void inicjalizacjaTimera1CTC()<br />{<br />// Tryb Compare Match<br />TCCR1B |= (1&lt;&lt;WGM12);<br /><br />// Preskaler<br />//TCCR1B |= (1&lt;&lt;CS10); // preskaler = 1<br />TCCR1B |= (1&lt;&lt;CS11); // preskaler = 8<br />//TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS11);// preskaler = 64<br />//TCCR1B |= (1&lt;&lt;CS12); // preskaler = 256<br />//TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12); // preskaler = 1024<br /><br />// Dodatkowy podział częstotliwości<br />//16MHz/8/100kHz=20<br />OCR1A = 20 - 1 ; // * Timer liczy od 0 dlatego -1<br /><br /><br />// Obliczona częstotliwość timera dla nut<br />timer_hz = 100000;<br /><br />// Zezwolenie na przerwanie CompareMatch<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />}<br /><br /><br /><br />// Przerwanie Compare Match Timera1<br />ISR( TIMER1_COMPA_vect )<br />{<br />if(!--nuta_counter)<br />{<br />nuta_counter = nuta;<br />nuta_flag = 1;<br />}<br />if(!--sekunda_counter)<br />{<br />sekunda_counter = sekunda;<br />sekunda_flag = 1;<br />}<br />}[/syntax]<br />Definicje czasu trwania nut<br />[syntax=c]enum<br />{<br />osemka = 1,<br />cwiercnuta = 2,<br />polnuta = 4,<br />calanuta = 8<br />};[/syntax]<br />Definicje nut<br />[syntax=c]//Oktawa razkreślna<br />//Dźwięk częstotliwość*10<br />#define c1 2616<br />#define d1 2937<br />#define e1 3296<br />#define f1 3492<br />#define g1 3919<br />#define a1 4400<br />#define h1 4939<br /><br />//Oktawa dwukreślna<br />//Dźwięk częstotliwość*10<br />#define c2 5232<br />#define d25873<br />#define e26593<br />#define f26985<br />#define g27840<br />#define a28800<br />#define h29878<br /><br />//Dodatki<br />#define hbemol4662 // Obniżone h1[/syntax]<br />Dodanie nut do tablicy - zależnie od utworu, tutaj używamy obniżonego h1 w miejsce h1<br />[syntax=c]// ----------- Wpisz częstotliwości nut * 10 -------------<br />//Reprezentacja nut Hz*10<br />const uint8_t nuty_liczba = 14;<br />uint16_t nuty_hz&#91;&#93; = {c1, d1, e1, f1, g1, a1, hbemol, c2, d2, e2, f2, g2, a2, h2};[/syntax]<br />Jingle Bells<br /><a href="https://obrazkiforum.atnel.pl/7234/958db433fc256397e6a28dd69e3316b6.gif"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/7234/958db433fc256397e6a28dd69e3316b6.gif" alt="Obrazek" /></a><br />[syntax=c]// -------------------- Wpisz utwór ----------------------<br />//.. - przedłuża czas trwania nuty o połowę<br />//1p 2p 4p 8p - pauzy<br />//1c 2c 4c 8c - cała nuta, półnuta, ćwierćnuta, ósemka<br /><br />// -------------------- Jingle Bells --------------------<br />char utwor&#91;&#93; = &quot;8c8c 4c4a4g4f 2c..8c8c 4c4a4g4f 2d..8p8d 4e4h4a4g&quot;<br />   &quot;2e..8p8e 4C4C4h4g 2a..8c8c 4c4a4g4f 2c..8c8c 4c4a4g4f 2d..8p8d&quot;<br />   &quot;4e4h4a4g 4C4C4C..8C 4D4C4h4g 2f2C 4a4a2a 4a4a2a&quot;<br />   &quot;4a4C4f..8g 2a..4p 4h4h4h..8h 4h4a4a8a8a 4a4g4g4a 2g2C 4a4a2a&quot;<br />   &quot;4a4a2a 4a4C4f..8g 2a..4p 4h4h4h..8h 4h4a4a8a8a 4C4C4h4g 2f..&quot;;[/syntax]<br />Rozpoznawanie czasu trwania nut, nut oraz znaków specjalnych<br />[syntax=c]// ---- Wpisz symbole nut i ich odpowiednik z tablicy ----<br />uint8_t rozpoznajNute(uint16_t utwor_indeks)<br />{<br />//Rozpoznaj czas trwania nuty<br />static uint8_t ostatnia_nuta_czas;<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case '1': nuta_czas = calanuta; break;<br />case '2': nuta_czas = polnuta; break;<br />case '4': nuta_czas = cwiercnuta; break;<br />case '8': nuta_czas = osemka; break;<br />case '.': nuta_czas = ostatnia_nuta_czas/2; graj = 1; break;<br /><br />default: return 1;// Wystąpił biały znak<br />}<br />ostatnia_nuta_czas = nuta_czas;<br /><br />utwor_indeks++;<br /><br />//Rozpoznaj nute<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case 'c': nuta = nuty_hz&#91;0&#93;; graj = 1; break;<br />case 'd': nuta = nuty_hz&#91;1&#93;; graj = 1; break;<br />case 'e': nuta = nuty_hz&#91;2&#93;; graj = 1; break;<br />case 'f': nuta = nuty_hz&#91;3&#93;; graj = 1; break;<br />case 'g': nuta = nuty_hz&#91;4&#93;; graj = 1; break;<br />case 'a': nuta = nuty_hz&#91;5&#93;; graj = 1; break;<br />case 'h': nuta = nuty_hz&#91;6&#93;; graj = 1; break;<br /><br />case 'C': nuta = nuty_hz&#91;7&#93;; graj = 1; break;<br />case 'D': nuta = nuty_hz&#91;8&#93;; graj = 1; break;<br />case 'E': nuta = nuty_hz&#91;9&#93;; graj = 1; break;<br />case 'F': nuta = nuty_hz&#91;10&#93;; graj = 1; break;<br />case 'G': nuta = nuty_hz&#91;11&#93;; graj = 1; break;<br />case 'A': nuta = nuty_hz&#91;12&#93;; graj = 1; break;<br />case 'H': nuta = nuty_hz&#91;13&#93;; graj = 1; break;<br /><br />case '.': return 2; //Obsłużone wcześniej, przedłuż dźwięk poprzedniej nuty o połowę<br /><br />case 'p': nuta = 60000; graj = 0; break; //Pauza<br /><br />default: return 1;// Wystąpił biały znak<br />}<br /><br />return 0;<br />}[/syntax]<br />Inicjalizacja Timera<br />[syntax=c]void inicjalizacjaTimera1CTC()<br />{<br />// Tryb Compare Match<br />TCCR1B |= (1&lt;&lt;WGM12);<br /><br />// Preskaler<br />//TCCR1B |= (1&lt;&lt;CS10); // preskaler = 1<br />TCCR1B |= (1&lt;&lt;CS11); // preskaler = 8<br />//TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS11);// preskaler = 64<br />//TCCR1B |= (1&lt;&lt;CS12); // preskaler = 256<br />//TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12); // preskaler = 1024<br /><br />// Dodatkowy podział częstotliwości<br />//16MHz/8/100kHz=20<br />OCR1A = 20 - 1 ; // * Timer liczy od 0 dlatego -1<br /><br /><br />// Obliczona częstotliwość timera dla nut<br />timer_hz = 100000;<br /><br />// Zezwolenie na przerwanie CompareMatch<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />}[/syntax]<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7234">Rzeczek</a> — 8 wrz 2015, o 18:14</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-09-07T22:05:01+01:00</updated>
<published>2015-09-07T22:05:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139314#p139314</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139314#p139314"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139314#p139314"><![CDATA[
A to pewnie przez to zaokrąglenie są te odchyłki. Nie zmienia to faktu, że i tak projekcik fajny <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak między nami uwierzcie, słyszenie w melodii (wszystko jedno &quot;co&quot; lub &quot;kto&quot; odtwarza) każdej odchyłki czasami może doprowadzić do obłędu. Chciałbym czasem móc wyłączyć sobie tą tolerancję w dowolnym momencie, a tu nawet po kilku piwach nie jest to do końca możliwe  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> <br />Wszystko przez to, że dawno, dawno temu podczas układania melodyjek jeszcze na Amidze trzeba było wykorzystać to co się ma czyli sample z innych modów gdzie każdy dźwięk praktycznie na innym stroju i musiałem wytężać słuch aby to jakoś później brzmiało w kupie  <img src="https://forum.atnel.pl/images/smilies/icon_lol.gif" alt=":lol:" title="Śmieje się" /> <br />Poniżej przykład takiego tworu  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> <br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1922">SylwekK</a> — 7 wrz 2015, o 22:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rzeczek]]></name></author>
<updated>2015-09-07T21:17:30+01:00</updated>
<published>2015-09-07T21:17:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139305#p139305</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139305#p139305"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139305#p139305"><![CDATA[
By każda nuta trwała sekundę należy usunąć tą linijkę.<br />[syntax=c]//Graj szybciej<br />sekunda /= 2;[/syntax]<br />Jak ktoś ma ochotę może poszerzyć interpretację nut na dwa znaki np: 1c, 2c, 4c, 8c - tu cała nuta, półnuta, ćwierćnuta, ósemka.<br />Komuś może być mało częstotliwości i wtedy musiałby poszerzyć na trzy znaki np: 1c1.<br /><br />W funkcji inicjalizacji timera należy dobrać odpowiedni preskaler i wpisać częstotliwość do zmiennej timer_hz, dodałem kod i informację w pierwszym poście.<br /><br />Tabela częstotliwości zaczerpnięta jest z wikipedii. Ewentualne odchyłki wynikają z zaokrąglenia do liczby całkowitej przy przeliczeniu na licznik w funkcji<br />[syntax=c]void zmienHzNaLicznik()<br />{<br />float przeliczenie = 0;<br /><br />for(int i = 0; i &lt; nuty_liczba; i++)<br />{<br />//Nuty reprezentowane w Hz*10<br />przeliczenie = timer_hz * 10;<br />przeliczenie /= nuty_hz&#91;i&#93;;<br />przeliczenie += 0.5;<br /><br />nuty_hz&#91;i&#93; = (uint16_t) przeliczenie;<br />}<br />}[/syntax]<br />Zaokrąglenie dla timera 10kHz.<br />Przed i po dodaniu 0,5<br />38,2262996938,72629969<br />34,0483486634,54834866<br />30,3398058330,83980583<br />28,6368843129,13688431<br />25,5167134526,01671345<br />22,7272727323,22727273<br />20,2470135720,74701357<br />19,1131498519,61314985<br />Wartość przycinana do liczby całkowitej<br /><br />Zaokrąglenie dla timera 100kHz<br />382,2629969382,7629969<br />340,4834866340,9834866<br />303,3980583303,8980583<br />286,3688431286,8688431<br />255,1671345255,6671345<br />227,2727273227,7727273<br />202,4701357202,9701357<br />191,1314985191,6314985<br />Widać więc, że wyższa częstotliwość timera oddaje częstotliwość nuty o rząd wielkości lepiej.<br /><br />Ograniczenie wpisanej wartości wynika tylko z typu uint16_t dla tablicy i rzutowania w funkcji zmieniającej Hz na licznik.<br /><br />Dziękuje za słowa uznania od Mistrza i reszty <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=7234">Rzeczek</a> — 7 wrz 2015, o 21:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[elsat1]]></name></author>
<updated>2015-09-07T18:02:26+01:00</updated>
<published>2015-09-07T18:02:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139279#p139279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139279#p139279"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139279#p139279"><![CDATA[
Fajna zabawa, która uczy i wciąga. Próbowałem &quot;Kurki trzy&quot; na AT32 / 11059200 Hz. Bardziej mi to hrypi, niż u autora. Czy to przyczyna buzera, czy kwarcu (autor ma kwarc 16 MHz).<br />Mam pytanie, jak wydłużyć czas jednej nutki (w trakcie melodii). Sumowanie nutek  np: cccaa,  ma piknięcia pomiędzy każdą nutką ?  Jak zrobić pauzę ? .  Myślę,  że dobrze by było ogarnąć każdą nutę (programowo w zadanym czasie). Nie jestem muzykiem, nut też nie kumam.<br />A przy okazji tematu spytam, jak używać komend głosowych za pomocą zewnętrznych układów (nagrywać i odczytywać komunikaty głosowe z pamięci). Ale to pewnie inny temat.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=151">elsat1</a> — 7 wrz 2015, o 18:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daniel880]]></name></author>
<updated>2015-09-07T11:04:55+01:00</updated>
<published>2015-09-07T11:04:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139245#p139245</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139245#p139245"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139245#p139245"><![CDATA[
Też kiedyś bawiłem się grając melodyjki:) Wstawiam filmik. Gdyby ktoś bardzo chciał kodu spróbuje poszukać, ale uprzedzam, że nie jest taki piękny i poukładany jak autora tematu;)<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2328">Daniel880</a> — 7 wrz 2015, o 11:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-09-07T10:50:25+01:00</updated>
<published>2015-09-07T10:50:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139244#p139244</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139244#p139244"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139244#p139244"><![CDATA[
Nie no, tu tragedii nie ma i układ daje radę tym bardziej, że gra na niskich częstotliwościach i stosunkowo lekko się odchyłki toleruje (gorzej by było z wysokimi częstotliwościami), ale. np. w nocniku mojej dzidzi z chińską pozytywką musiałem wyjąć baterię, bo to dopiero piszczadło rujnowało moją psychikę, a i dziecko niepotrzebnie złych nawyków by nabrało <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> — 7 wrz 2015, o 10:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-07T09:35:57+01:00</updated>
<published>2015-09-07T09:35:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139241#p139241</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139241#p139241"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139241#p139241"><![CDATA[
<div class="quotetitle">SylwekK napisał(a):</div><div class="quotecontent"><br />Przydała by się jeszcze tylko mała kalibracja tabeli częstotliwości, bo troszkę fałszuje<br /></div><br />eeeeh jak ja wam zazdroszczę, że macie słuch muzyczny .... bo mi to słoń na ucho nadepnął niestety. Inaczej też bym śmigał sobie takie różne muzyczne projekciki że tak powiem <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=54">mirekk36</a> — 7 wrz 2015, o 09:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SylwekK]]></name></author>
<updated>2015-09-07T09:26:58+01:00</updated>
<published>2015-09-07T09:26:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139240#p139240</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139240#p139240"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139240#p139240"><![CDATA[
Lubię grające projekty, robiłem kiedyś w bascomie na tiny13 grajek melodyjek tylko nie było takiego dekodera jak u Ciebie - za mało miejsca miałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":-)" title="Szczęśliwy" />  Przydała by się jeszcze tylko mała kalibracja tabeli częstotliwości, bo troszkę fałszuje <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> — 7 wrz 2015, o 09:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-09-06T12:13:12+01:00</updated>
<published>2015-09-06T12:13:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139196#p139196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139196#p139196"/>
<title type="html"><![CDATA[Re: Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139196#p139196"><![CDATA[
A dlaczego taki fajny projekcik nie jest w dziale DIY ? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... spokojnie zasługuje na to aby tam go umieścić <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Podpowiem ci tylko, że jak się tworzy C-String (tablicę) to nie trzeba umieszczać dodatkowo znaku zera na końcu <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000">char tablica[] = &quot;aaggccdd\0&quot;;  // - źle</span><br /></div><br /><br />to jest kompletnie niepotrzebne, poczytaj jak działa cudzysłów w tym wypadku i że kompilator sam uzupełnia taki string zerem na końcu czyli wystarczy tak:<br /><br />[syntax=c]char tablica&#91;&#93; = &quot;aaggccdd&quot;;[/syntax]<br /><br />i dzięki temu nie marnujesz jednego bajtu (bo w twoim przypadku wyżej na końcu stringa będziesz miał dwa zera tak naprawdę.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: kilkunastu sekundach ]</span></strong><br /><br />Przy okazji udało mi się przenieść wątek do działu DIY <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=54">mirekk36</a> — 6 wrz 2015, o 12:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rzeczek]]></name></author>
<updated>2015-09-07T21:22:51+01:00</updated>
<published>2015-09-06T11:09:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139195#p139195</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139195#p139195"/>
<title type="html"><![CDATA[Brzęczyk buzzer wyszły w pole kurki trzy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=12861&amp;p=139195#p139195"><![CDATA[
Może ktoś się ubawi pisząc swoje utworki na brzęczyk <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Wpisujemy utworek w stringa, ewentualnie dodajemy nowe nuty i gra.<br /><br />Cały program<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//Definicja portu brzęczyka<br />#define BUZZER (1&lt;&lt;PC0)<br />#define BUZZER_DDR  DDRC<br />#define BUZZER_PORT PORTC<br /><br />//Definicje stanów brzęczyka<br />#define BUZZER_ON BUZZER_PORT |= BUZZER;<br />#define BUZZER_OFF BUZZER_PORT &amp;= ~BUZZER;<br />#define BUZZER_TOG BUZZER_PORT ^= BUZZER;<br /><br />//Częstotliwość timera - ustawiana w inicjalizacji Timera<br />uint32_t timer_hz = 0;<br /><br />//Licznik dla nuty<br />volatile uint16_t nuta_counter;// Liczy wywołania timera<br />volatile uint16_t nuta = 0;// Wartość licznika dla nuty<br />volatile uint8_t nuta_flag;// Flaga zmiany stanu nóżki dla nuty<br /><br />//Licznik sekundy<br />volatile uint32_t sekunda_counter;// Liczy wywołania timera<br />volatile uint32_t sekunda;// Wartość licznika dla sekundy<br />volatile uint8_t sekunda_flag;// Flaga tyknięcia timera co 1 sekundę<br /><br />//Deklaracje funkcji<br />void inicjalizacjaTimera1CTC();// Inizjalizuje timer<br />void zmienHzNaLicznik();// Przelicza częstotliwość na licznik<br />// timer_hz * 10 / nuty_hz&#91;i&#93; + 0.5<br />void kolejnaNuta();// Wpisuje do bufora kolejną nutę<br />uint8_t rozpoznajNute(uint16_t utwor_indeks);//Przekłada nutę na wartość z tablicy<br /><br />/*<br />Oktawa razkreślna<br />Dźwięk częstotliwość<br />c1 261,6<br />d1 293,7<br />e1 329,6<br />f1 349,2<br />g1 391,9<br />a1 440,0<br />h1 493,9<br />c² 523,2<br /> */<br /><br />// ----------- Wpisz częstotliwości nut * 10 -------------<br />//Reprezentacja nut Hz*10<br />const uint8_t nuty_liczba = 8;<br />uint16_t nuty_hz&#91;&#93; = {2616, 2937, 3296, 3492, 3919, 4400, 4939, 5232};<br /><br />// -------------------- Wpisz utwór ----------------------<br />//Utwór - na końcu musi być znak końca &quot;\0&quot;<br />// Wyszły w pole kurki trzy<br />char utwor&#91;&#93; = &quot;ccggaaggffeeddcc ggffeedd ggffeedd ccggaaggffeeddcc\0&quot;;<br />uint8_t graj = 0;<br /><br />// ---- Wpisz symbole nut i ich odpowiednik z tablicy ----<br />uint8_t rozpoznajNute(uint16_t utwor_indeks)<br />{<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case 'c': nuta = nuty_hz&#91;0&#93;; return 0;<br />case 'd': nuta = nuty_hz&#91;1&#93;; return 0;<br />case 'e': nuta = nuty_hz&#91;2&#93;; return 0;<br />case 'f': nuta = nuty_hz&#91;3&#93;; return 0;<br />case 'g': nuta = nuty_hz&#91;4&#93;; return 0;<br />case 'a': nuta = nuty_hz&#91;5&#93;; return 0;<br />case 'h': nuta = nuty_hz&#91;6&#93;; return 0;<br />case 'C': nuta = nuty_hz&#91;7&#93;; return 0;<br /><br />default: return 1;// Wystąpił biały znak<br />}<br />}<br /><br />int main( void ) {<br />// Ustawienie pinu buzzera jako wyjście<br />BUZZER_DDR |= BUZZER;<br /><br />inicjalizacjaTimera1CTC();<br /><br />// Ustal licznik dla sekundy<br />sekunda = timer_hz;<br /><br />//Graj szybciej<br />sekunda /= 2;<br /><br />// Przelicz czestotliwosc nut na wartosc licznika TOG<br />zmienHzNaLicznik();<br /><br />// Pobierz pierwszą nutę<br />kolejnaNuta();<br /><br />// Wpisz początkowe wartości sekundy i nuty<br />nuta_counter = nuta;<br />sekunda_counter = sekunda;<br />graj = 1;<br /><br />// Włączenie przerwań<br />sei();<br /><br /><br />while(1)<br />{<br /><br />if(nuta_flag &amp; graj)<br />{<br />BUZZER_TOG;<br />nuta_flag = 0;<br />}<br /><br />if(sekunda_flag)<br />{<br />kolejnaNuta();<br />sekunda_flag = 0;<br />}<br />}<br />}<br /><br /><br />void zmienHzNaLicznik()<br />{<br />float przeliczenie = 0;<br /><br />for(int i = 0; i &lt; nuty_liczba; i++)<br />{<br />//Nuty reprezentowane w Hz*10<br />przeliczenie = timer_hz * 10;<br />przeliczenie /= nuty_hz&#91;i&#93;;<br />przeliczenie += 0.5;<br /><br />nuty_hz&#91;i&#93; = (uint16_t) przeliczenie;<br />}<br />}<br /><br />void kolejnaNuta()<br />{<br />static uint16_t utwor_indeks = 0;<br />uint8_t bialy_znak = 0;<br />if(utwor&#91;utwor_indeks&#93;== '\0')<br />{<br />utwor_indeks = 0;<br />graj = 0;<br />}<br />else<br />{<br />graj = 1;<br />do<br />{<br />//Wybierz częstotliwość kolejnej nuty<br />bialy_znak = rozpoznajNute(utwor_indeks);<br /><br />// Akcent kolejnej nuty<br />// - takie same nuty nie zlewają się w jedną<br />nuta_counter = nuta;<br /><br />//Kolejna nuta<br />utwor_indeks++;<br />}while(bialy_znak);//Jeżeli biały znak, weź kolejną nutę<br />}<br /><br />}<br /><br />void inicjalizacjaTimera1CTC()<br />{<br />// Tryb Compare Match<br />TCCR1B |= (1&lt;&lt;WGM12);<br /><br />// Preskaler<br />//TCCR1B |= (1&lt;&lt;CS10); // preskaler = 1<br />//TCCR1B |= (1&lt;&lt;CS11); // preskaler = 8<br />TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS11);// preskaler = 64<br />//TCCR1B |= (1&lt;&lt;CS12); // preskaler = 256<br />//TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12); // preskaler = 1024<br /><br />// Dodatkowy podział częstotliwości<br />OCR1A = 25 - 1 ; // * Timer liczy od 0 dlatego -1<br /><br />// Obliczona częstotliwość timera dla nut<br />        // 16MHz / 64 / 25 = 10kHz<br />timer_hz = 10000;<br /><br />// Zezwolenie na przerwanie CompareMatch<br />TIMSK |= (1&lt;&lt;OCIE1A);<br />}<br /><br />// Przerwanie Compare Match Timera1<br />ISR( TIMER1_COMPA_vect )<br />{<br />if(!--nuta_counter)<br />{<br />nuta_counter = nuta;<br />nuta_flag = 1;<br />}<br />if(!--sekunda_counter)<br />{<br />sekunda_counter = sekunda;<br />sekunda_flag = 1;<br />}<br />}[/syntax]<br />Częstotliwości nut * 10<br />[syntax=c]const uint8_t nuty_liczba = 8;<br />uint16_t nuty_hz&#91;&#93; = {2616, 2937, 3296, 3492, 3919, 4400, 4939, 5232};[/syntax]<br />Utwór - wyszły w pole kurki trzy<br />[syntax=c]char utwor&#91;&#93; = &quot;ccggaaggffeeddcc ggffeedd ggffeedd ccggaaggffeeddcc\0&quot;;[/syntax]<br />Powiązanie nut i częstotliwości<br />[syntax=c]uint8_t rozpoznajNute(uint16_t utwor_indeks)<br />{<br />switch (utwor&#91;utwor_indeks&#93;)<br />{<br />case 'c': nuta = nuty_hz&#91;0&#93;; return 0;<br />case 'd': nuta = nuty_hz&#91;1&#93;; return 0;<br />case 'e': nuta = nuty_hz&#91;2&#93;; return 0;<br />case 'f': nuta = nuty_hz&#91;3&#93;; return 0;<br />case 'g': nuta = nuty_hz&#91;4&#93;; return 0;<br />case 'a': nuta = nuty_hz&#91;5&#93;; return 0;<br />case 'h': nuta = nuty_hz&#91;6&#93;; return 0;<br />case 'C': nuta = nuty_hz&#91;7&#93;; return 0;<br /><br />default: return 1;// Wystąpił biały znak<br />}<br />}[/syntax]<br />Ustawienia Timera - należy dobrać do kwarcu - ma być 10kHz. (może będzie ładniej grało przy wyższych częstotliwościach)<br />[syntax=c]void inicjalizacjaTimera1CTC()<br />{<br />        // Tryb Compare Match<br />        TCCR1B |= (1&lt;&lt;WGM12);<br /> <br />        // Preskaler<br />        //TCCR1B |= (1&lt;&lt;CS10);                          // preskaler = 1<br />        //TCCR1B |= (1&lt;&lt;CS11);                          // preskaler = 8<br />        TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS11);  // preskaler = 64<br />        //TCCR1B |= (1&lt;&lt;CS12);                          // preskaler = 256<br />        //TCCR1B |= (1&lt;&lt;CS10)|(1&lt;&lt;CS12);        // preskaler = 1024<br /> <br />        // Dodatkowy podział częstotliwości<br />        OCR1A = 25 - 1 ; // * Timer liczy od 0 dlatego -1<br /> <br />        // Obliczona częstotliwość timera dla nut<br />        // 16MHz / 64 / 25 = 10kHz<br />        timer_hz = 10000;<br /> <br />        // Zezwolenie na przerwanie CompareMatch<br />        TIMSK |= (1&lt;&lt;OCIE1A);<br />}[/syntax]<br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=7234">Rzeczek</a> — 6 wrz 2015, o 11:09</p><hr />
]]></content>
</entry>
</feed>