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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-08-16T16:51:11+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2415&amp;mode</id>
<entry>
<author><name><![CDATA[mikandrzej]]></name></author>
<updated>2013-08-16T16:51:11+01:00</updated>
<published>2013-08-16T16:51:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=45922#p45922</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=45922#p45922"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=45922#p45922"><![CDATA[
Polecam do tego celu program guitar pro. Otworzysz midi i bez problemu rozszyfrujesz nuty:)<br /><br />Wysłane z mojego GT-I9500 za pomocą Tapatalk 4<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=431">mikandrzej</a> — 16 sie 2013, o 16:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Badman]]></name></author>
<updated>2013-06-01T13:28:00+01:00</updated>
<published>2013-06-01T13:28:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=38249#p38249</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=38249#p38249"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=38249#p38249"><![CDATA[
Panowie z powodu mojego słabe łącza, proszę o linki z zapisem nutowym najlepiej A, C, D...<br />Dodatkowo jeżeli ktoś ma dobry opis formatu MIDI.<br />Z góry dziękuję.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=916">Badman</a> — 1 cze 2013, o 13:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-28T16:46:41+01:00</updated>
<published>2013-04-28T16:46:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35520#p35520</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35520#p35520"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35520#p35520"><![CDATA[
spoko niema sprawy <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=58">SunRiver</a> — 28 kwi 2013, o 16:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-04-28T16:37:00+01:00</updated>
<published>2013-04-28T16:37:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35517#p35517</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35517#p35517"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35517#p35517"><![CDATA[
zmieniłem buzzer, coś zaczyna wychodzić, dzięki<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 28 kwi 2013, o 16:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-28T15:57:27+01:00</updated>
<published>2013-04-28T15:57:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35515#p35515</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35515#p35515"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35515#p35515"><![CDATA[
skompiluj na 8mhz i tyle <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />jak będzie za wolno piszczał dopasuj opóźnienia ... w main i to wszystko<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 kwi 2013, o 15:57</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-04-28T15:04:02+01:00</updated>
<published>2013-04-28T15:04:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35506#p35506</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35506#p35506"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35506#p35506"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />spróbuj tak <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Kwarc 16Mhz<br />M32 głośnik na PB3<br /></div><br /><br />ten pierwszy, chciałbym bez zewnętrznego na 8Mhz<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 28 kwi 2013, o 15:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-28T15:00:52+01:00</updated>
<published>2013-04-28T15:00:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35503#p35503</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35503#p35503"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35503#p35503"><![CDATA[
A który kod i na jaką megę ??<br />bo na m32 to żaden problem wystarczy zmienić ustawienia kwarcu i to wszystko<br />a potem dobrać opóźnienia<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 kwi 2013, o 15:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-04-28T14:33:33+01:00</updated>
<published>2013-04-28T14:33:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35499#p35499</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35499#p35499"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35499#p35499"><![CDATA[
<div class="quotetitle">wireless napisał(a):</div><div class="quotecontent"><br />masz działające kody w tym temacie , pierwszy udaje syrenę jakąś , a drugi gra melodyjkę Axela F.<br /></div><br />a jak to przerobić na 8MHz wewnętrzny?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 28 kwi 2013, o 14:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-28T12:42:12+01:00</updated>
<published>2013-04-28T12:42:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35487#p35487</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35487#p35487"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35487#p35487"><![CDATA[
<div class="quotetitle">wireless napisał(a):</div><div class="quotecontent"><br />a sprezentowałbyś jakieś gotowce tych syren i piszczków?<br /></div><br /><br />masz działające kody w tym temacie , pierwszy udaje syrenę jakąś , a drugi gra melodyjkę Axela F.<br /><br />miłego używania:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 kwi 2013, o 12:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[wireless]]></name></author>
<updated>2013-04-28T12:36:40+01:00</updated>
<published>2013-04-28T12:36:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35486#p35486</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35486#p35486"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35486#p35486"><![CDATA[
<div class="quotetitle">SunRiver napisał(a):</div><div class="quotecontent"><br />powyższy kod bardzie pasuje do generowania dźwięków syren i takich tam piszczyków<br /></div><br />a sprezentowałbyś jakieś gotowce tych syren i piszczków?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=380">wireless</a> — 28 kwi 2013, o 12:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-28T09:37:16+01:00</updated>
<published>2013-04-28T09:37:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35474#p35474</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35474#p35474"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35474#p35474"><![CDATA[
nio oczywiście i to z poziomu atmegi nawet obsługę robiłem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> <br />niebawem również zaprezentuję projekcik na forum prostego syntezatora opartego na kilku SIDACH<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 28 kwi 2013, o 09:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Badman]]></name></author>
<updated>2013-04-28T09:01:19+01:00</updated>
<published>2013-04-28T09:01:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35469#p35469</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35469#p35469"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35469#p35469"><![CDATA[
Pobrałem, usłyszałem i widziałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Tak na marginesie neta mam z komóry z transferem download max. 6,5 KB/s <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Faktycznie z tego co pamiętam, na tyle ile pozwala moja pamięć muzyka (ostatni raz słyszałem około 1993 roku) do gierek na Commodore 64 brzmiała lepiej. Pewnie na byle jakim przetworniku cyfrowo-analogowym brzmiała by lepiej niż na PWM.<br />Zastanawiam się w jaki sposób można nagrywać dźwięk z wyjścia AVR'a bezpośrednio do karty muzycznej komputera, pewnie należałoby zastosować filtr który nie pozwoli przekroczyć jakiegoś tam napięcia ?<br />BTW. SID'a w C64 też programowałeś ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=916">Badman</a> — 28 kwi 2013, o 09:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-04-27T19:11:57+01:00</updated>
<published>2013-04-27T19:11:57+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35445#p35445</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35445#p35445"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35445#p35445"><![CDATA[
1. dlatego by uzyskać zblizoną do multitimbralu ciągłość dźwięku <br />2. dokładnie 3 kanały użyłem , ale nie ważne bo oryginalny sid brzmi dużo lepiej<br />niemniej jednak niebawem przedstawię nowszy kod .<br /><br /><br />co słychać tu np :<br /><br /><!-- m --><a class="postlink" href="https://www.dropbox.com/s/0norwwrajwdyflz/CAM00028.mp4" >https://www.dropbox.com/s/0norwwrajwdyflz/CAM00028.mp4</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 27 kwi 2013, o 19:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Badman]]></name></author>
<updated>2013-04-27T19:05:35+01:00</updated>
<published>2013-04-27T19:05:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35444#p35444</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35444#p35444"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=35444#p35444"><![CDATA[
SunRiver staram się zrozumieć kod i mam kilka pytań:<br />1. Dlaczego przepełnienie co 32150 Hz ?<br />2. Po co dzielone jest INT_PER_SEC przez częstotliwości z tabelki (np. INT_PER_SEC/F_A_4) ?<br /><br />Piszesz, że napisałeś emuacje SID'a. Rozumie, że także na PWM ? Czy zaimplementowałeś 2 kanały ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=916">Badman</a> — 27 kwi 2013, o 19:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-24T15:13:16+01:00</updated>
<published>2013-02-24T15:13:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29120#p29120</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29120#p29120"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29120#p29120"><![CDATA[
ja nie przerabiam melodyjek .... po prostu znam częstotliwości nut - przyzwyczajenie z C64 i Amigi<br /><br /><br />a tu masz tabelkę :<br /><br /><a href="http://forum.atnel.pl/_obrazki/o/58_53e17ab9881d7f1a921d00eebe06a7b8.png"  class="postlink"><img src="http://forum.atnel.pl/_obrazki/o/thumb/58_53e17ab9881d7f1a921d00eebe06a7b8.png" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 24 lut 2013, o 15:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2013-02-24T14:16:51+01:00</updated>
<published>2013-02-24T14:16:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29117#p29117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29117#p29117"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29117#p29117"><![CDATA[
Działa fajnie.<br />A mam pytanie jakim programem przerobić inną melodyjkę na częstotliwość i długość trwania? Abym mógł to wpisać?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 24 lut 2013, o 14:16</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-23T15:07:08+01:00</updated>
<published>2013-02-23T15:07:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29010#p29010</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29010#p29010"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=29010#p29010"><![CDATA[
powyższy kod bardzie pasuje do generowania dźwięków syren i takich tam  piszczyków <br />ale zawsze mam asa w rękawie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />generowanie dźwięków nawet polifonicznych nie stanowi duzego kłopotu na avr <br />sam kiedyś popełniłem na medze emulator słynnego SIDA<br /><br />spróbujmy tak :<br /><br />[syntax=c]<br />// kwarc   8MHz<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/delay.h&gt;<br /><br />// wartosc przepełnienia timera0 <br />#define INT_PER_SEC 31250<br /><br />// Częstotliwość (w Hz) odpowiadająca nutom<br />#define F_FSH_4 370<br />#define F_A_4 440<br />#define F_B_4 494<br />#define F_E_4 330<br />#define F_CSH_5 554<br />#define F_D_5 587<br />#define F_FSH_5 740<br />#define F_CSH_4 277<br />#define F_GSH_4 415<br /><br /><br />#define REST -1              // specialne wyjście <br />#define FSH_4 INT_PER_SEC/F_FSH_4<br />#define A_4 INT_PER_SEC/F_A_4<br />#define B_4 INT_PER_SEC/F_B_4<br />#define E_4 INT_PER_SEC/F_E_4<br />#define CSH_5 INT_PER_SEC/F_CSH_5<br />#define D_5 INT_PER_SEC/F_D_5<br />#define FSH_5 INT_PER_SEC/F_FSH_5<br />#define CSH_4 INT_PER_SEC/F_CSH_4<br />#define GSH_4 INT_PER_SEC/F_GSH_4<br /><br />#define SEMIQUAVER_TIME 60  // ms<br />#define BREATH_TIME 20      // ms<br /><br />volatile uint32_t intrs = 0;<br />volatile int32_t curNote = REST;<br /><br />// Przepełnienie Timer0<br />ISR(TIMER0_OVF_vect)<br />{<br />    if (curNote == REST)<br />        intrs = 0;<br />    else<br />    {<br />        intrs++;<br />        if (intrs &gt;= curNote)<br />        {<br />            PORTD ^= _BV(PD4);<br />            intrs = 0;<br />        }<br />    }<br />}<br /><br /><br />void play(int32_t note, uint32_t len)<br />{<br />    int i;<br />    curNote = note;<br />    for (i = 0; i&lt; len; i++)<br />        _delay_ms(SEMIQUAVER_TIME);<br />    curNote = REST;<br />    _delay_ms(BREATH_TIME);<br />}<br /><br />int main(void)<br />{<br />    /* Ustawiamy dzielnik. Timer0 zlicza do 256.<br />     * 8Mhz / 1 (CS0=1) = 8000000 incrementacja/sec. przepełnienie co 256, czyli 31250<br />     * przepełnienie  przerwanie/sec */<br /><br />    TCCR0 |= _BV(CS00);<br /><br />    // prerwanie od przepełnienia licznika<br />    TIMSK0 |= _BV(TOIE0);<br /><br />    // PD4 jako wyjście<br />    DDRD = _BV(PD4);<br /><br />    TCNT0 = 0;<br />    intrs = 0;<br /><br />    curNote = REST;<br /><br />    // włączamy przerwania<br />    sei();<br /><br />    while (1)<br />    {<br />        // Axel F --- bo jakos tak prosta melodyjka że mykam ja z pamieci <br />        // jak sie nie podoba to sobie zmieńcie na inną <br /><br />        play(FSH_4, 2);<br />        play(REST, 2);<br />        play(A_4, 3);<br />        play(FSH_4, 2);<br />        play(FSH_4, 1);<br />        play(B_4, 2);<br />        play(FSH_4, 2);<br />        play(E_4, 2);<br />        play(FSH_4, 2);<br />        play(REST, 2);<br />        play(CSH_5, 3);<br />        play(FSH_4, 2);<br />        play(FSH_4, 1);<br />        play(D_5, 2);<br />        play(CSH_5, 2);<br />        play(A_4, 2);<br />        play(FSH_4, 2);<br />        play(CSH_5, 2);<br />        play(FSH_5, 2);<br />        play(FSH_4, 1);<br />        play(E_4, 2);<br />        play(E_4, 1);<br />        play(CSH_4, 2);<br />        play(GSH_4, 2);<br />        play(FSH_4, 6);<br />        play(REST, 12);<br />    }<br />}<br /><br />[/syntax]<br /><br />tak na szybko z pamieci kod powinien działac , ale nie sprawdzałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 37 minutach ]</span></strong><br /><br />Macie wersję dla M32 8Mhz <br /><br />kompilowane pod Eclipse Hatsune  Toolchain  ATMEL 3.4.xxx<br /><br />[syntax=c]<br /><br />/*<br /> * main.c<br /> *<br /> *  Created on: 23-02-2013<br /> *      Author: SunRiver<br /> *   Toolchain: Atmel GNU 3.4.0_663<br /> *    Compiler: avr-gcc 4.6.2<br /> */<br /><br />// kwarc   8MHz<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />// wartosc przepełnienia timera0<br />#define INT_PER_SEC 31250<br /><br />// Częstotliwość (w Hz) odpowiadająca nutom<br />#define F_FSH_4 370<br />#define F_A_4 440<br />#define F_B_4 494<br />#define F_E_4 330<br />#define F_CSH_5 554<br />#define F_D_5 587<br />#define F_FSH_5 740<br />#define F_CSH_4 277<br />#define F_GSH_4 415<br /><br /><br />#define REST -1              // specialne wyjście<br />#define FSH_4 INT_PER_SEC/F_FSH_4<br />#define A_4 INT_PER_SEC/F_A_4<br />#define B_4 INT_PER_SEC/F_B_4<br />#define E_4 INT_PER_SEC/F_E_4<br />#define CSH_5 INT_PER_SEC/F_CSH_5<br />#define D_5 INT_PER_SEC/F_D_5<br />#define FSH_5 INT_PER_SEC/F_FSH_5<br />#define CSH_4 INT_PER_SEC/F_CSH_4<br />#define GSH_4 INT_PER_SEC/F_GSH_4<br /><br />#define SEMIQUAVER_TIME 60  // ms<br />#define BREATH_TIME 20      // ms<br /><br />volatile uint32_t intrs = 0;<br />volatile int32_t curNote = REST;<br /><br />// Przepełnienie Timer0<br />ISR(TIMER0_OVF_vect)<br />{<br />    if (curNote == REST)<br />        intrs = 0;<br />    else<br />    {<br />        intrs++;<br />        if (intrs &gt;= curNote)<br />        {<br />            PORTD ^= _BV(PD4);<br />            intrs = 0;<br />        }<br />    }<br />}<br /><br /><br />void play(int32_t note, uint32_t len)<br />{<br />    int i;<br />    curNote = note;<br />    for (i = 0; i&lt; len; i++)<br />        _delay_ms(SEMIQUAVER_TIME);<br />    curNote = REST;<br />    _delay_ms(BREATH_TIME);<br />}<br /><br />int main(void)<br />{<br />    /* Ustawiamy dzielnik. Timer0 zlicza do 256.<br />     * 8Mhz / 1 (CS0=1) = 8000000 incrementacja/sec. przepełnienie co 256, czyli 31250<br />     * przepełnienie  przerwanie/sec */<br /><br />    TCCR0 |= _BV(CS00);<br /><br />    // prerwanie od przepełnienia licznika<br />    TIMSK |= _BV(TOIE0);<br /><br />    // PD4 jako wyjście<br />    DDRD = _BV(PD4);<br /><br />    TCNT0 = 0;<br />    intrs = 0;<br /><br />    curNote = REST;<br /><br />    // włączamy przerwania<br />    sei();<br /><br />    while (1)<br />    {<br />        // Axel F --- bo jakos tak prosta melodyjka że mykam ja z pamieci<br />        // jak sie nie podoba to sobie zmieńcie na inną<br /><br />        play(FSH_4, 2);<br />        play(REST, 2);<br />        play(A_4, 3);<br />        play(FSH_4, 2);<br />        play(FSH_4, 1);<br />        play(B_4, 2);<br />        play(FSH_4, 2);<br />        play(E_4, 2);<br />        play(FSH_4, 2);<br />        play(REST, 2);<br />        play(CSH_5, 3);<br />        play(FSH_4, 2);<br />        play(FSH_4, 1);<br />        play(D_5, 2);<br />        play(CSH_5, 2);<br />        play(A_4, 2);<br />        play(FSH_4, 2);<br />        play(CSH_5, 2);<br />        play(FSH_5, 2);<br />        play(FSH_4, 1);<br />        play(E_4, 2);<br />        play(E_4, 1);<br />        play(CSH_4, 2);<br />        play(GSH_4, 2);<br />        play(FSH_4, 6);<br />        play(REST, 12);<br />    }<br />}<br /><br /><br /><br /><br />[/syntax]<br /><br /><br />A tu ładnie słychać ....<br /><br /><!-- m --><a class="postlink" href="https://www.dropbox.com/s/lnq997wi9ljn2zh/SS102996.AVI" >https://www.dropbox.com/s/lnq997wi9ljn2zh/SS102996.AVI</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 23 lut 2013, o 15:07</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2013-02-22T22:50:41+01:00</updated>
<published>2013-02-22T22:50:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28974#p28974</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28974#p28974"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28974#p28974"><![CDATA[
Mam taki kłopot z tym w pliku piszczek.h w tej tablicy wpisałem pod rząd od początku z 50razy liczbę 110 ale dźwięk się nic nie zmienił. To działa inaczej niż myślałem, nie wiem jak <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 39 minutach ]</span></strong><br /><br />I mam takie pytanie:<br />Próbuje przeanalizować ten kod programu jak on ma działać. Czyli wyrzucając te niepotrzebne pętle for, to wystarczy że do rejestru wpiszę odpowiednią częstotliwość nuty jaka chcę zagrać i to będzie to? Czy dobrze to zrozumiałem?<br />Proszę o pomoc <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=288">Janadamis</a> — 22 lut 2013, o 22:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-22T22:21:43+01:00</updated>
<published>2013-02-22T22:21:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28972#p28972</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28972#p28972"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28972#p28972"><![CDATA[
miłej zabawy ci życzę <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" />  <br />dokładnie tak  jak myślisz każda wartość to częstotliwość dźwięku odpowiadająca mniej więcej nutkom:)<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 22 lut 2013, o 22:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2013-02-22T22:18:23+01:00</updated>
<published>2013-02-22T22:18:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28970#p28970</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28970#p28970"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28970#p28970"><![CDATA[
Dzięki działa. Fajna nutka <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Czyli w tej tablicy sine są tam częstotliwości nut?<br />Wystarczy że tam wpisze częstotliwość nuty i to będzie ten dźwięk? Czy tak?<br />Już zabieram się za sprawdzanie. <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 22 lut 2013, o 22:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2013-02-22T22:00:58+01:00</updated>
<published>2013-02-22T22:00:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28967#p28967</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28967#p28967"/>
<title type="html"><![CDATA[Re: Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28967#p28967"><![CDATA[
spróbuj tak <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Kwarc 16Mhz <br />M32 głośnik na PB3<br /><br />tak na szybko <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br /> <br />[syntax=c]<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br /><br />#include &quot;piszczek.h&quot;<br /><br />/*<br />TIMER0 w trybie FastPWM Mode.<br />*/<br /><br />void InitPWM()<br />{<br />   <br />   TCCR0|=(1&lt;&lt;WGM00)|(1&lt;&lt;WGM01)|(1&lt;&lt;COM01)|(1&lt;&lt;CS00);<br /><br />   //Ustawiam OC0 jako wyjście. PB3 na ATmega16 / ATmega32<br />   // tu podłączamy głośniczek <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />   DDRB|=(1&lt;&lt;PB3);  <br />}<br /><br />void main()<br />{<br />   uint8_t i;<br /><br />   InitPWM();<br /><br />   while(1)<br />   {<br /><br />      uint8_t delay,n;<br /><br />      for(delay=1;delay&lt;=50;delay++)<br />      {<br />         for(n=0;n&lt;(51-delay);n++)<br />         {<br />            for(i=0;i&lt;=254;i++)<br />            {<br />               OCR0=pgm_read_byte_near(sine+i);<br />               _delay_loop_2(delay);<br /><br />            }<br />         }<br />      }<br />      for(delay=50;delay&gt;=2;delay--)<br />      {<br />         for(n=0;n&lt;(51-delay);n++)<br />         {<br />            for(i=0;i&lt;=254;i++)<br />            {<br />               OCR0=pgm_read_byte_near(sine+i);<br />               _delay_loop_2(delay);<br />            }<br />         }<br />      }<br /><br />   }<br />}<br /><br />[/syntax]<br /><br /><br />a tu plik z naszym dźwiękiem ....<br /><br />piszczek.h<br /><br />[syntax=c]<br /><br />#include &lt;avr/pgmspace.h&gt;<br /><br />prog_uint8_t sine[256]={<br />                     127,<br />                     130,<br />                     133,<br />                     136,<br />                     139,<br />                     143,<br />                     146,<br />                     149,<br />                     152,<br />                     155,<br />                     158,<br />                     161,<br />                     164,<br />                     167,<br />                     170,<br />                     173,<br />                     176,<br />                     178,<br />                     181,<br />                     184,<br />                     187,<br />                     189,<br />                     192,<br />                     195,<br />                     197,<br />                     200,<br />                     203,<br />                     205,<br />                     207,<br />                     210,<br />                     212,<br />                     214,<br />                     217,<br />                     219,<br />                     221,<br />                     223,<br />                     225,<br />                     227,<br />                     229,<br />                     231,<br />                     232,<br />                     234,<br />                     236,<br />                     237,<br />                     239,<br />                     240,<br />                     242,<br />                     243,<br />                     244,<br />                     245,<br />                     246,<br />                     248,<br />                     248,<br />                     249,<br />                     250,<br />                     251,<br />                     251,<br />                     252,<br />                     253,<br />                     253,<br />                     253,<br />                     254,<br />                     254,<br />                     254,<br />                     254,<br />                     254,<br />                     254,<br />                     254,<br />                     253,<br />                     253,<br />                     253,<br />                     252,<br />                     252,<br />                     251,<br />                     250,<br />                     250,<br />                     249,<br />                     248,<br />                     247,<br />                     246,<br />                     245,<br />                     243,<br />                     242,<br />                     241,<br />                     239,<br />                     238,<br />                     236,<br />                     235,<br />                     233,<br />                     231,<br />                     229,<br />                     227,<br />                     225,<br />                     224,<br />                     221,<br />                     219,<br />                     217,<br />                     215,<br />                     213,<br />                     210,<br />                     208,<br />                     206,<br />                     203,<br />                     201,<br />                     198,<br />                     195,<br />                     193,<br />                     190,<br />                     187,<br />                     185,<br />                     182,<br />                     179,<br />                     176,<br />                     173,<br />                     170,<br />                     167,<br />                     164,<br />                     161,<br />                     158,<br />                     155,<br />                     152,<br />                     149,<br />                     146,<br />                     143,<br />                     140,<br />                     137,<br />                     134,<br />                     131,<br />                     128,<br />                     125,<br />                     121,<br />                     118,<br />                     115,<br />                     112,<br />                     109,<br />                     106,<br />                     103,<br />                     100,<br />                     97,<br />                     94,<br />                     91,<br />                     88,<br />                     85,<br />                     82,<br />                     79,<br />                     76,<br />                     73,<br />                     71,<br />                     68,<br />                     65,<br />                     62,<br />                     60,<br />                     57,<br />                     55,<br />                     52,<br />                     50,<br />                     47,<br />                     45,<br />                     42,<br />                     40,<br />                     38,<br />                     36,<br />                     34,<br />                     31,<br />                     29,<br />                     27,<br />                     26,<br />                     24,<br />                     22,<br />                     20,<br />                     19,<br />                     17,<br />                     15,<br />                     14,<br />                     13,<br />                     11,<br />                     10,<br />                     9,<br />                     8,<br />                     7,<br />                     6,<br />                     5,<br />                     4,<br />                     3,<br />                     3,<br />                     2,<br />                     2,<br />                     1,<br />                     1,<br />                     0,<br />                     0,<br />                     0,<br />                     0,<br />                     0,<br />                     0,<br />                     0,<br />                     1,<br />                     1,<br />                     1,<br />                     2,<br />                     2,<br />                     3,<br />                     4,<br />                     4,<br />                     5,<br />                     6,<br />                     7,<br />                     8,<br />                     9,<br />                     10,<br />                     12,<br />                     13,<br />                     14,<br />                     16,<br />                     17,<br />                     19,<br />                     21,<br />                     22,<br />                     24,<br />                     26,<br />                     28,<br />                     30,<br />                     32,<br />                     34,<br />                     36,<br />                     39,<br />                     41,<br />                     43,<br />                     45,<br />                     48,<br />                     50,<br />                     53,<br />                     55,<br />                     58,<br />                     61,<br />                     63,<br />                     66,<br />                     69,<br />                     72,<br />                     74,<br />                     77,<br />                     80,<br />                     83,<br />                     86,<br />                     89,<br />                     92,<br />                     95,<br />                     98,<br />                     101,<br />                     104,<br />                     107,<br />                     110,<br />                     113,<br />                     116,<br />                     119,<br />                     122,<br />};<br /><br /><br />[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 22 lut 2013, o 22:00</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Janadamis]]></name></author>
<updated>2013-02-22T21:42:04+01:00</updated>
<published>2013-02-22T21:42:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28964#p28964</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28964#p28964"/>
<title type="html"><![CDATA[Generowanie dźwięku]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2415&amp;p=28964#p28964"><![CDATA[
Witam<br />Zafascynowało mnie generowanie muzyki przez AVR. Dlatego chciałem pójść o krok dalej i sam tworzyć muzykę.<br />Znalazłem taką stronę na której jest podane jaka ma być częstotliwość aby było słychać odpowiednia nutę:<br /><!-- m --><a class="postlink" href="http://obrazki.elektroda.net/58_1256150128.gif" >http://obrazki.elektroda.net/58_1256150128.gif</a><!-- m --><br />Postanowiłem to zrealizować na PWM programowym na timerze2.<br />Oto co naskrobałem:<br />[syntax=c]<br />/*<br /> * main.c<br /> *<br /> *  Created on: 2012-04-08<br /> *      Author: Janadamis<br /> */<br /><br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;Keyboard/keyboard.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br /><br />// definicje zmiennych do sterowania 6 kanałami programowych PWM<br />// zmienne typu uint8_t, rozdzielczość 8-bitowa<br />volatile uint8_t pwm1, pwm2, pwm3;<br /><br />// główna funkcja programu main()<br />int main (void)<br />{<br /><br />lcd_on();//Włączenie podświetlenia lcd<br />lcd_init();//inicjalizacja lcd<br />lcd_str(&quot;AVR WAV Player.&quot;);<br />initkeyboard();//inicjalizacja klawiatury od PC<br /><br />//***** PROGRAMOWY PWM - 3 KANAŁÓW *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20)|(1&lt;&lt;CS22);// preskaler = 128<br />OCR2 = 100;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br />sei();// odblokowanie globalne przerwań<br /><br />pwm1=90;<br />pwm2=70;<br />pwm3=50;<br /><br />while(1)<br />{<br /><br />if(key_board=='a')<br />{<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />lcd_locate(1,0);<br />lcd_str(&quot;OKA&quot;);<br />OCR2 = 142;<br />}<br /><br />if(key_board=='B')<br />{<br />DDRC |= (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />lcd_locate(1,0);<br />lcd_str(&quot;OKB&quot;);<br />OCR2 = 71;<br />}<br /><br />if(key_board==0)<br />{<br />DDRC &amp;= ~ (1&lt;&lt;PC0)|(1&lt;&lt;PC1)|(1&lt;&lt;PC2);<br />lcd_locate(1,0);<br />lcd_str(&quot;OKC&quot;);<br />}<br /><br />        }//while<br />}//main<br /><br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br />// bezpośrednie sterowanie wyjściami kanałów PWM<br />if(cnt&gt;=pwm1) PORTC &amp;= ~(1&lt;&lt;PC0); else PORTC |= (1&lt;&lt;PC0);<br />if(cnt&gt;=pwm2) PORTC &amp;= ~(1&lt;&lt;PC1); else PORTC |= (1&lt;&lt;PC1);<br />if(cnt&gt;=pwm3) PORTC &amp;= ~(1&lt;&lt;PC2); else PORTC |= (1&lt;&lt;PC2);<br />cnt++;// zwiększanie licznika o 1<br />}<br />[/syntax]<br />Jednak efekt jest całkowicie inny niż zakładałem.<br />Po podłączeniu głośnika poprzez wzmacniacz do uC. To z głośnika wydobywa się dźwięk ale to takie jakby pierdzenie.<br />Możliwe że coś źle zrozumiałem w tym generowaniu dźwięku dlatego proszę o pomoc.<br />I czy to się podobnie generuje jak muzykę że dajemy próbki na PWM a innym timerem częstotliwość samplowania? Czy jak??<br />Ja zrobiłem program na podstawie informacji z internetu że wysyłamy sygnał prostokątny z częstotliwością odpowiadającą nucie.<br />Proszę o pomoc<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=288">Janadamis</a> — 22 lut 2013, o 21:42</p><hr />
]]></content>
</entry>
</feed>