202 |
miho |
1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3c.org/TR/html4/strict.dtd"> |
|
|
2 |
<html> |
|
|
3 |
<head> |
|
|
4 |
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
|
|
5 |
<title> MB01B </title> |
|
|
6 |
<meta name="keywords" content="stavebnice MLAB melodický zvonek"> |
|
|
7 |
<meta name="description" content="Projekt MLAB, Programovatelný melodický zvonek"> |
|
|
8 |
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> |
|
|
9 |
<link rel="StyleSheet" href="../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl"> |
211 |
miho |
10 |
<link rel="shortcut icon" type="image/x-icon" href="../../../../Web/PIC/MLAB.ico"> |
202 |
miho |
11 |
<script type="text/javascript" src="../../../../Web/JS/MLAB_Menu.js"></script> |
|
|
12 |
<!-- AUTOINCLUDE END --> |
|
|
13 |
</head> |
|
|
14 |
|
|
|
15 |
<body lang="cs"> |
|
|
16 |
|
|
|
17 |
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> |
|
|
18 |
<!-- ============== HLAVICKA ============== --> |
|
|
19 |
<div class="Header"> |
|
|
20 |
<script type="text/javascript"> |
|
|
21 |
<!-- |
|
|
22 |
SetRelativePath("../../../../"); |
|
|
23 |
DrawHeader(); |
|
|
24 |
// --> |
|
|
25 |
</script> |
|
|
26 |
<noscript> |
|
|
27 |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
|
|
28 |
</noscript> |
|
|
29 |
</div> |
|
|
30 |
<!-- AUTOINCLUDE END --> |
|
|
31 |
|
|
|
32 |
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> |
|
|
33 |
<!-- ============== MENU ============== --> |
|
|
34 |
<div class="Menu"> |
|
|
35 |
<script type="text/javascript"> |
|
|
36 |
<!-- |
|
|
37 |
SetRelativePath("../../../../"); |
|
|
38 |
DrawMenu(); |
|
|
39 |
// --> |
|
|
40 |
</script> |
|
|
41 |
<noscript> |
|
|
42 |
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> |
|
|
43 |
</noscript> |
|
|
44 |
</div> |
|
|
45 |
<!-- AUTOINCLUDE END --> |
|
|
46 |
|
|
|
47 |
<!-- ============== TEXT ============== --> |
|
|
48 |
<div class="Text"> |
|
|
49 |
<p class="Title"> |
|
|
50 |
Melodický zvonek |
|
|
51 |
</p> |
|
|
52 |
<p class=Autor> |
|
|
53 |
Milan Horkel |
|
|
54 |
</p> |
|
|
55 |
<p class="Subtitle"> |
|
|
56 |
Melodický zvonek MB01 používá pro generování hudebních |
|
|
57 |
tónů procesor PIC16F819 a umožňuje snadné přeprogramování melodií. Zvonek je |
|
|
58 |
možno napájet z baterie, protože v klidu neodebírá prakticky žádný |
|
|
59 |
proud. Na výstup je možné připojit reproduktor. |
|
|
60 |
</p> |
|
|
61 |
<p class="Subtitle"> |
|
|
62 |
<img width=290 height=235 src="Pictures/image001.jpg" |
|
|
63 |
alt="Obrázek melodického zvonku"> |
|
|
64 |
</p> |
|
|
65 |
<p> |
|
|
66 |
<a href="../MB01B.cs.pdf"><img class="NoBorder" |
|
|
67 |
src="../../../../Web/PIC/FileIco_PDF.ico" |
|
|
68 |
alt="Acrobat"> PDF verze</a> |
|
|
69 |
</p> |
|
|
70 |
|
|
|
71 |
<h1> Technické parametry </h1> |
|
|
72 |
|
|
|
73 |
<table> |
|
|
74 |
<tr> |
|
|
75 |
<th> Parametr </th> |
|
|
76 |
<th> Hodnota </th> |
|
|
77 |
<th> Poznámka </th> |
|
|
78 |
</tr> |
|
|
79 |
<tr> |
|
|
80 |
<td> Napájení </td> |
|
|
81 |
<td> 9V </td> |
|
|
82 |
<td> Asi od 4V, maximum 12V </td> |
|
|
83 |
</tr> |
|
|
84 |
<tr> |
|
|
85 |
<td> Spotřeba v klidu </td> |
|
|
86 |
<td> ≈0 </td> |
|
|
87 |
<td> Dáno zbytkovým proudem tranzistorů Q2 a Q3 </td> |
|
|
88 |
</tr> |
|
|
89 |
<tr> |
|
|
90 |
<td> Spotřeba při běhu (potichu) </td> |
|
|
91 |
<td> 20mA / 30mA </td> |
|
|
92 |
<td> Při 9V / 12V </td> |
|
|
93 |
</tr> |
|
|
94 |
<tr> |
|
|
95 |
<td> Spotřeba maximálně (nahlas) </td> |
|
|
96 |
<td> 150mA </td> |
|
|
97 |
<td> Při 12V </td> |
|
|
98 |
</tr> |
|
|
99 |
<tr> |
|
|
100 |
<td> Počet melodií </td> |
|
|
101 |
<td> Max 15 </td> |
|
|
102 |
<td> Všechny možné kombinace 4 tlačítek </td> |
|
|
103 |
</tr> |
|
|
104 |
<tr> |
|
|
105 |
<td> Délka skladeb celkem </td> |
|
|
106 |
<td> 512 </td> |
|
|
107 |
<td> Počítají se noty, mezery a změny parametrů (například tempa) </td> |
|
|
108 |
</tr> |
|
|
109 |
<tr> |
|
|
110 |
<td> Spouštění skladeb </td> |
|
|
111 |
<td> 4 tlačítka </td> |
|
|
112 |
<td> Skladby od páté výše se spouštějí stiskem více tlačítek najednou </td> |
|
|
113 |
</tr> |
|
|
114 |
<tr> |
|
|
115 |
<td> Rozměry </td> |
|
|
116 |
<td> 61x71x20mm </td> |
|
|
117 |
<td> Bez přečnívajícího konektoru a šroubů </td> |
|
|
118 |
</tr> |
|
|
119 |
</table> |
|
|
120 |
|
|
|
121 |
<h1> Popis konstrukce </h1> |
|
|
122 |
|
|
|
123 |
<h2> Slovo úvodem </h2> |
|
|
124 |
|
|
|
125 |
<p> |
|
|
126 |
Cílem návrhu tohoto melodického zvonku bylo navrhnout moderní řešení, |
|
|
127 |
se kterým i méně vybavený amatér může něco dále dělat. Díky pokroku |
|
|
128 |
v technologii výroby integrovaných obvodů se v poslední době |
|
|
129 |
začínají objevovat velmi zajímavé mikrořadiče (jednočipové mikropočítače) |
|
|
130 |
za velmi rozumnou cenu. Zde byl použit jeden z nich, jmenuje se |
|
|
131 |
PIC16F819 a vyrábí jej firma MICROCHIP. |
|
|
132 |
</p> |
|
|
133 |
|
|
|
134 |
<p> |
|
|
135 |
Procesor je poměrně rychlý (5 miliónů instrukcí za sekundu), má malou |
|
|
136 |
spotřebu (cca 2mA za plného běhu) a funguje v širokém rozsahu napájení |
|
|
137 |
(od 2V do 5.5V). Je tedy velmi vhodný pro zařízení napájené z baterie. |
|
|
138 |
Kromě toho má FLASH paměť programu (2048 slov po 14 bitech), kterou je |
|
|
139 |
možné mnohokrát přeprogramovat. Procesor může tuto paměť FLASH sám |
|
|
140 |
přeprogramovat. |
|
|
141 |
</p> |
|
|
142 |
|
|
|
143 |
<p> |
|
|
144 |
Část paměti programu je vyhrazena pro uložení melodií a je tak možné |
|
|
145 |
dodatečně melodie měnit. Není k tomu potřeba žádný speciální |
|
|
146 |
programátor, stačí připojit obyčejné PC. Nové definice skladeb se |
|
|
147 |
přenášejí do melodického zvonku prostřednictvím sériové linky RS232. |
|
|
148 |
Aby nemohlo dojít k nechtěnému smazání programu, je část paměti |
|
|
149 |
FLASH procesoru uzamčena, aby ji procesor nemohl přepsat. |
|
|
150 |
</p> |
|
|
151 |
|
|
|
152 |
<h2> Zapojení melodického zvonku </h2> |
|
|
153 |
|
|
|
154 |
<p> |
|
|
155 |
<img width=486 height=888 src="Pictures/image003.gif" |
|
|
156 |
alt=""> |
|
|
157 |
</p> |
|
|
158 |
|
|
|
159 |
<h3> Procesor a obvody jeho napájení</h3> |
|
|
160 |
|
|
|
161 |
<p> |
|
|
162 |
Srdcem zvonku je procesor U1. Časování je řízeno krystalem X1. Aby bylo |
|
|
163 |
možno procesor naprogramovat přímo v zapojení, je zde programovací |
|
|
164 |
konektor J6, který slouží pro naprogramování programu. |
|
|
165 |
V běžném provozu ani při přeprogramovávání melodií již není třeba. |
|
|
166 |
</p> |
|
|
167 |
|
|
|
168 |
<p> |
|
|
169 |
Zvonek začíná hrát po stisku některého tlačítka (nebo více najednou). |
|
|
170 |
Při stlačení tlačítka se přes diody D3 až D6 přivede zemní potenciál |
|
|
171 |
na vstupy procesoru. Vstupní nožičky procesoru jsou opatřeny ochrannými |
|
|
172 |
diodami (jsou uvnitř procesoru) a přes tyto diody dojde k připojení |
|
|
173 |
zemního potenciálu i signálu GND_PIC. Tím dojde k tomu, že procesor |
|
|
174 |
je napájen (přes odpor R1) a jeho program se rozběhne. Protože procesor |
|
|
175 |
snese maximálně 5.5V, je velikost napájecího napětí mezi vývody GND a VDD |
|
|
176 |
procesoru omezeno Zenerovou diodou D2 na cca 5V. |
|
|
177 |
</p> |
|
|
178 |
|
|
|
179 |
<p> |
|
|
180 |
Po rozběhu programu se nejdříve aktivuje signál POWER_ON# (do stavu L) |
|
|
181 |
a přes Q1 a Q2 se připojí GND_PIC na zem. Po skončení melodie se signál |
|
|
182 |
POWER_ON# deaktivuje (přejde do třetího stavu) a procesor tak sám sobě |
|
|
183 |
vypne napájení. Tím je zajištěna prakticky nulová klidová spotřeba. |
|
|
184 |
</p> |
|
|
185 |
|
|
|
186 |
<p> |
|
|
187 |
Na vývodu RB3 procesoru generuje program výstupní signál (ať už přímo |
|
|
188 |
digitálně nebo pomocí PWM) a na vstupu RB1 očekává sériová data |
|
|
189 |
z počítače při přeprogramovávání melodií. Přestože RS232 signály jsou |
|
|
190 |
v rozsahu +/- 5 až +/-15V, je možné tyto signály připojit přímo |
|
|
191 |
ke vstupu pouze přes omezovací odpor R7. Ochranné diody na vstupu procesoru |
|
|
192 |
ochrání vstupní tranzistory před napětím nad a pod napájecím napětím |
|
|
193 |
procesoru. Odpor R8 zajišťuje definovanou úroveň na vstupu, pokud není |
|
|
194 |
nic připojeno. |
|
|
195 |
</p> |
|
|
196 |
|
|
|
197 |
<p> |
|
|
198 |
Propojka PGM MODE (J5) slouží k vynucenému zapnutí napájení |
|
|
199 |
v době programování nových melodií i v době programování |
|
|
200 |
programu do procesoru přes ISP konektor (J6) . Program před vlastním |
|
|
201 |
programováním paměti FLASH kontroluje, že je tato propojka nasunuta, |
|
|
202 |
a je tak zajištěno, že ani při vybité baterii nemůže prakticky dojít |
|
|
203 |
ke smazání melodie. Ke smazání programu nemůže dojít nikdy, protože tato |
|
|
204 |
část paměti programu je chráněna nastavením ochranných bitů konfiguračního |
|
|
205 |
slova a procesor sám sobě tuto paměť nemůže přepsat. |
|
|
206 |
</p> |
|
|
207 |
|
|
|
208 |
<h3> NF Zesilovač </h3> |
|
|
209 |
|
|
|
210 |
<p> |
|
|
211 |
Jako koncový zesilovač byl použit obvod LM386 v klasickém zapojení. |
|
|
212 |
Jeho napájení je spínáno tranzistorem Q3 jen po dobu hraní melodie. |
|
|
213 |
Tranzistor Q3 je buzen vývodem RA4 procesoru PIC. |
|
|
214 |
</p> |
|
|
215 |
|
|
|
216 |
<h2> Mechanická konstrukce </h2> |
|
|
217 |
|
|
|
218 |
<p> |
|
|
219 |
Melodický zvonek je sestaven na jednostranném plošném spoji se čtyřmi |
|
|
220 |
upevňovacími otvory v rozích. Podél kratší strany jsou 4 tlačítka |
|
|
221 |
pro spouštění melodií. Ke konektoru J3 je možné připojit vnější tlačítka. |
|
|
222 |
Místo odporového trimru P1 je možné připojit (logaritmický) potenciometr |
|
|
223 |
jako regulátor hlasitosti. |
|
|
224 |
</p> |
|
|
225 |
|
|
|
226 |
<h2> Osazení a oživení </h2> |
|
|
227 |
|
|
|
228 |
<h3> Osazení </h3> |
|
|
229 |
|
|
|
230 |
<p> |
|
|
231 |
Při osazování je třeba dodržet polarity diod, tranzistorů a elektrolytických |
|
|
232 |
kondenzátorů. Pokud jsou použity funkční součástky a jsou správně osazeny, |
|
|
233 |
mělo by zařízení fungovat na první pokus. Podmínkou je použití naprogramovaného |
|
|
234 |
procesoru. |
|
|
235 |
</p> |
|
|
236 |
|
|
|
237 |
<h3> Oživení </h3> |
|
|
238 |
|
|
|
239 |
<p> |
|
|
240 |
Nejprve zkontrolujeme polaritu ochranné diody D1 a vizuálně zkontrolujeme |
|
|
241 |
zejména zkraty. Procesor i zesilovač můžeme zasunout do patic. Pokud si |
|
|
242 |
troufáme, můžeme je připájet přímo do desky. |
|
|
243 |
</p> |
|
|
244 |
|
|
|
245 |
<p> |
|
|
246 |
Pokud máme procesor předem naprogramovaný, je oživení snazší, protože by |
|
|
247 |
zvonek měl rovnou začít fungovat. Nejprve připojíme zdroj o napětí cca 5V |
|
|
248 |
s omezením proudu (asi na 100mA). Ujistíme se, že <b>není</b> |
|
|
249 |
nasunuta propojka na J5. V klidu by zvonek neměl odebírat prakticky |
|
|
250 |
žádný proud. Po stisku tlačítka by měl zvonek hrát některou |
|
|
251 |
z předprogramovaných melodií. Pokud hraje, postupně zvyšujeme napájecí |
|
|
252 |
napětí až na cca 10V a přitom kontrolujeme, zda napájecí napětí procesoru |
|
|
253 |
(nejsnáze se měří na Zenerově diodě D2) nepřekročí 5.5V. |
|
|
254 |
</p> |
|
|
255 |
|
|
|
256 |
<p> |
|
|
257 |
Pokud nehraje je třeba zkontrolovat toto: |
|
|
258 |
</p> |
|
|
259 |
|
|
|
260 |
<ul> |
|
|
261 |
<li> napájení na procesoru při stisku tlačítka (dioda D2) – cca 3 až 5V, </li> |
|
|
262 |
<li> zda kmitá oscilátor procesoru – logickou sondou na vývodu CLKO procesoru, </li> |
|
|
263 |
<li> zda fungují tlačítka – napětí na RB4 a RB7 klesá k nule při stisku tlačítka, </li> |
|
|
264 |
<li> zda spínají tranzistory Q1 a Q2 – při nasunuté propojce na J5, </li> |
|
|
265 |
<li> zda procesor generuje zvuk - na RB3 telefonním sluchátkem nebo piezoelementem proti zemi, </li> |
|
|
266 |
<li> zda spíná Q3 napětí pro zesilovač U2. </li> |
|
|
267 |
</ul> |
|
|
268 |
|
|
|
269 |
<p> |
|
|
270 |
Po skončení skladby by se zvonek měl opět vypnout a neměl by odebírat žádný proud. |
|
|
271 |
</p> |
|
|
272 |
|
|
|
273 |
<p> |
|
|
274 |
Pokud procesor nemáme nahraný, osadíme jej do zvonku, <b>nasuneme</b> |
|
|
275 |
propojku na J5 a zkontrolujeme při postupném zvyšování napájecího napětí, |
|
|
276 |
zda na procesoru (D2) je napětí cca 5V. Pokud ano, je možno ke konektoru J6 |
|
|
277 |
připojit programátor a nahrát do procesoru program. Propojku J5 opět vyjmeme. |
|
|
278 |
Zbytek oživování je stejný. |
|
|
279 |
</p> |
|
|
280 |
|
|
|
281 |
<p> |
|
|
282 |
<img width=432 height=346 src="Pictures/image002.jpg" |
|
|
283 |
alt="Osazovák"> |
|
|
284 |
</p> |
|
|
285 |
|
|
|
286 |
<table class="Soupiska"> |
|
|
287 |
<tr> |
|
|
288 |
<th> Reference </th> |
|
|
289 |
<th> Hodnota </th> |
|
|
290 |
<th> Reference </th> |
|
|
291 |
<th> Hodnota </th> |
|
|
292 |
</tr> |
|
|
293 |
<tr> |
|
|
294 |
<th colspan="2"> Odpory </th> |
|
|
295 |
<th colspan="2"> Polovodiče a krystaly </th> |
|
|
296 |
</tr> |
|
|
297 |
<tr> |
|
|
298 |
<td> R15 </td> |
|
|
299 |
<td> 10 </td> |
|
|
300 |
<td> D1 </td> |
|
|
301 |
<td> 1N4005 </td> |
|
|
302 |
</tr> |
|
|
303 |
<tr> |
|
|
304 |
<td> R4,R1 </td> |
|
|
305 |
<td> 680 </td> |
|
|
306 |
<td> D3,D4,D5,D6 </td> |
|
|
307 |
<td> 1N4148 </td> |
|
|
308 |
</tr> |
|
|
309 |
<tr> |
|
|
310 |
<td> R11 </td> |
|
|
311 |
<td> 2k2 </td> |
|
|
312 |
<td> D2 </td> |
|
|
313 |
<td> BZX83V005.1 </td> |
|
|
314 |
</tr> |
|
|
315 |
<tr> |
|
|
316 |
<td> R2,R3,R5,R6,R9,R10,R13,R14 </td> |
|
|
317 |
<td> 10k </td> |
|
|
318 |
<td> Q1 </td> |
|
|
319 |
<td> BC327 </td> |
|
|
320 |
</tr> |
|
|
321 |
<tr> |
|
|
322 |
<td> R7,R12 </td> |
|
|
323 |
<td> 27k </td> |
|
|
324 |
<td> Q2 </td> |
|
|
325 |
<td> BC337 </td> |
|
|
326 |
</tr> |
|
|
327 |
<tr> |
|
|
328 |
<td> R8 </td> |
|
|
329 |
<td> 100k </td> |
|
|
330 |
<td> Q3 </td> |
|
|
331 |
<td> BC640 </td> |
|
|
332 |
</tr> |
|
|
333 |
<tr> |
|
|
334 |
<th colspan="2"> Odporové trimry </th> |
|
|
335 |
<td> U1 </td> |
|
|
336 |
<td> PIC16F819-I/P </td> |
|
|
337 |
</tr> |
|
|
338 |
<tr> |
|
|
339 |
<td> P1 </td> |
|
|
340 |
<td> 10k </td> |
|
|
341 |
<td> U2 </td> |
|
|
342 |
<td> LM386 </td> |
|
|
343 |
</tr> |
|
|
344 |
<tr> |
|
|
345 |
<th colspan="2"> Kondenzátory </th> |
|
|
346 |
<td> X1 </td> |
|
|
347 |
<td> 20MHz </td> |
|
|
348 |
</tr> |
|
|
349 |
<tr> |
|
|
350 |
<td> C4,C5 </td> |
|
|
351 |
<td> 22pF </td> |
|
|
352 |
<th colspan="2"> Mechanické součásti </th> |
|
|
353 |
</tr> |
|
|
354 |
<tr> |
|
|
355 |
<td> C14 </td> |
|
|
356 |
<td> 4n7 </td> |
|
|
357 |
<td> SW1,SW2,SW3,SW4 </td> |
|
|
358 |
<td> P-B1720 </td> |
|
|
359 |
</tr> |
|
|
360 |
<tr> |
|
|
361 |
<td> C3,C6,C7,C8,C9 </td> |
|
|
362 |
<td> 10nF </td> |
|
|
363 |
<td> J1,J2 </td> |
|
|
364 |
<td> JUMP3 </td> |
|
|
365 |
</tr> |
|
|
366 |
<tr> |
|
|
367 |
<td> C15,C16 </td> |
|
|
368 |
<td> 33nF </td> |
|
|
369 |
<td> J3 </td> |
|
|
370 |
<td> JUMP5 </td> |
|
|
371 |
</tr> |
|
|
372 |
<tr> |
|
|
373 |
<td> C1,C2,C10 </td> |
|
|
374 |
<td> 100nF </td> |
|
|
375 |
<td> J5 </td> |
|
|
376 |
<td> JUMP2 </td> |
|
|
377 |
</tr> |
|
|
378 |
<tr> |
|
|
379 |
<td> C13 </td> |
|
|
380 |
<td> 1M/63V </td> |
|
|
381 |
<td> J6 </td> |
|
|
382 |
<td> PIC_ISP </td> |
|
|
383 |
</tr> |
|
|
384 |
<tr> |
|
|
385 |
<td> C12 </td> |
|
|
386 |
<td> 47uF/16V </td> |
|
|
387 |
<td> J4 </td> |
|
|
388 |
<td> DB9M_90 </td> |
|
|
389 |
</tr> |
|
|
390 |
<tr> |
|
|
391 |
<td> C11,C17 </td> |
|
|
392 |
<td> 330uF/16V </td> |
|
|
393 |
<td> </td> |
|
|
394 |
<td> </td> |
|
|
395 |
</tr> |
|
|
396 |
</table> |
|
|
397 |
|
|
|
398 |
<h1> Trocha hudební teorie </h1> |
|
|
399 |
|
|
|
400 |
<p> |
|
|
401 |
Aby hudba zněla libozvučně (příjemně), je třeba, aby používané tóny |
|
|
402 |
ve stupnicích splňovaly podmínku, že jejich frekvence mají (malý) |
|
|
403 |
společný násobek. Například dvojnásobek jednoho tónu aby byl |
|
|
404 |
trojnásobkem jiného tónu. Takových stupnic lze skonstruovat mnoho. |
|
|
405 |
Aby bylo možné na klavír (nebo podobný nástroj, který umí vyrábět |
|
|
406 |
jen určité konkrétní tóny) hrát skladby komponované v různých |
|
|
407 |
stupnicích bez přelaďování nástroje, používá se tzv. temperované ladění. |
|
|
408 |
Temperované ladění není ideální, jedná se o kompromis hřešící na to, |
|
|
409 |
že lidský sluch není dokonalý. |
|
|
410 |
</p> |
|
|
411 |
|
|
|
412 |
<p> |
|
|
413 |
Temperované ladění spočívá v tom, že se oktáva rozdělí na 12 stejných |
|
|
414 |
dílů, které mají geometrický odstup frekvencí tónů. Oktáva zahrnuje frekvence |
|
|
415 |
v rozsahu 1:2 a je v ní celkem 7 tónů a 5 půltónů. |
|
|
416 |
Z toho vyplývá, že poměr sousedních tónů a půltónů je vždy stejný a je |
|
|
417 |
roven 2<sup>1/12</sup>, tedy přibližně 1:1.06 . |
|
|
418 |
</p> |
|
|
419 |
|
|
|
420 |
<p> |
|
|
421 |
Následující tabulka uvádí pro jednotlivé tóny jejich frekvence. |
|
|
422 |
Vychází se z frekvence komorního A, která je 440Hz. Tóny o |
|
|
423 |
oktávu výš mají frekvence dvakrát vyšší, a naopak tóny o oktávu níž mají |
|
|
424 |
frekvence poloviční. |
|
|
425 |
</p> |
|
|
426 |
|
|
|
427 |
<table> |
|
|
428 |
<tr> |
|
|
429 |
<th> ↓ Tón </th> |
|
|
430 |
<th colspan="8" class="Center"> Frekvence [Hz]</th> |
|
|
431 |
</tr> |
|
|
432 |
<tr> |
|
|
433 |
<th> Oktáva →</th> |
|
|
434 |
<th class="Center"> 0 </th> |
|
|
435 |
<th class="Center"> 1 </th> |
|
|
436 |
<th class="Center"> 2 </th> |
|
|
437 |
<th class="Center"> 3 </th> |
|
|
438 |
<th class="Center"> 4 </th> |
|
|
439 |
<th class="Center"> 5 </th> |
|
|
440 |
<th class="Center"> 6 </th> |
|
|
441 |
<th class="Center"> 7 </th> |
|
|
442 |
</tr> |
|
|
443 |
<tr> |
|
|
444 |
<th> C </th> |
|
|
445 |
<td> 32,70 </td> |
|
|
446 |
<td> 65,41 </td> |
|
|
447 |
<td> 130,8 </td> |
|
|
448 |
<td> 261,6 </td> |
|
|
449 |
<td> 523,3 </td> |
|
|
450 |
<td> 1046,5 </td> |
|
|
451 |
<td> 2093,0 </td> |
|
|
452 |
<td> 4186,0 </td> |
|
|
453 |
</tr> |
|
|
454 |
<tr> |
|
|
455 |
<th> Cis </th> |
|
|
456 |
<td> 34,65 </td> |
|
|
457 |
<td> 69,30 </td> |
|
|
458 |
<td> 138,6 </td> |
|
|
459 |
<td> 277,2 </td> |
|
|
460 |
<td> 554,4 </td> |
|
|
461 |
<td> 1108,7 </td> |
|
|
462 |
<td> 2217,5 </td> |
|
|
463 |
<td> 4434,9 </td> |
|
|
464 |
</tr> |
|
|
465 |
<tr> |
|
|
466 |
<th> D </th> |
|
|
467 |
<td> 36,71 </td> |
|
|
468 |
<td> 73,42 </td> |
|
|
469 |
<td> 146,8 </td> |
|
|
470 |
<td> 293,7 </td> |
|
|
471 |
<td> 587,3 </td> |
|
|
472 |
<td> 1174,7 </td> |
|
|
473 |
<td> 2349,3 </td> |
|
|
474 |
<td> 4698,6 </td> |
|
|
475 |
</tr> |
|
|
476 |
<tr> |
|
|
477 |
<th> Dis </th> |
|
|
478 |
<td> 38,89 </td> |
|
|
479 |
<td> 77,78 </td> |
|
|
480 |
<td> 155,6 </td> |
|
|
481 |
<td> 311,1 </td> |
|
|
482 |
<td> 622,3 </td> |
|
|
483 |
<td> 1244,5 </td> |
|
|
484 |
<td> 2489,0 </td> |
|
|
485 |
<td> 4978,0 </td> |
|
|
486 |
</tr> |
|
|
487 |
<tr> |
|
|
488 |
<th> E </th> |
|
|
489 |
<td> 41,20 </td> |
|
|
490 |
<td> 82,41 </td> |
|
|
491 |
<td> 164,8 </td> |
|
|
492 |
<td> 329,6 </td> |
|
|
493 |
<td> 659,3 </td> |
|
|
494 |
<td> 1318,5 </td> |
|
|
495 |
<td> 2637,0 </td> |
|
|
496 |
<td> 5274,0 </td> |
|
|
497 |
</tr> |
|
|
498 |
<tr> |
|
|
499 |
<th> F </th> |
|
|
500 |
<td> 43,65 </td> |
|
|
501 |
<td> 87,31 </td> |
|
|
502 |
<td> 174,6 </td> |
|
|
503 |
<td> 349,2 </td> |
|
|
504 |
<td> 698,5 </td> |
|
|
505 |
<td> 1396,9 </td> |
|
|
506 |
<td> 2793,8 </td> |
|
|
507 |
<td> 5587,7 </td> |
|
|
508 |
</tr> |
|
|
509 |
<tr> |
|
|
510 |
<th> Fis </th> |
|
|
511 |
<td> 46,25 </td> |
|
|
512 |
<td> 92,50 </td> |
|
|
513 |
<td> 185,0 </td> |
|
|
514 |
<td> 370,0 </td> |
|
|
515 |
<td> 740,0 </td> |
|
|
516 |
<td> 1480,0 </td> |
|
|
517 |
<td> 2960,0 </td> |
|
|
518 |
<td> 5919,9 </td> |
|
|
519 |
</tr> |
|
|
520 |
<tr> |
|
|
521 |
<th> G </th> |
|
|
522 |
<td> 49,00 </td> |
|
|
523 |
<td> 98,00 </td> |
|
|
524 |
<td> 196,0 </td> |
|
|
525 |
<td> 392,0 </td> |
|
|
526 |
<td> 784,0 </td> |
|
|
527 |
<td> 1568,0 </td> |
|
|
528 |
<td> 3136,0 </td> |
|
|
529 |
<td> 6271,9 </td> |
|
|
530 |
</tr> |
|
|
531 |
<tr> |
|
|
532 |
<th> Gis </th> |
|
|
533 |
<td> 51,91 </td> |
|
|
534 |
<td> 103,83 </td> |
|
|
535 |
<td> 207,7 </td> |
|
|
536 |
<td> 415,3 </td> |
|
|
537 |
<td> 830,6 </td> |
|
|
538 |
<td> 1661,2 </td> |
|
|
539 |
<td> 3322,4 </td> |
|
|
540 |
<td> 6644,9 </td> |
|
|
541 |
</tr> |
|
|
542 |
<tr> |
|
|
543 |
<th> A </th> |
|
|
544 |
<td> 55 </td> |
|
|
545 |
<td> 110 </td> |
|
|
546 |
<td> 220 </td> |
|
|
547 |
<td> <b>440</b> </td> |
|
|
548 |
<td> 880 </td> |
|
|
549 |
<td> 1760 </td> |
|
|
550 |
<td> 3520 </td> |
|
|
551 |
<td> 7040 </td> |
|
|
552 |
</tr> |
|
|
553 |
<tr> |
|
|
554 |
<th> Ais </th> |
|
|
555 |
<td> 58,27 </td> |
|
|
556 |
<td> 116,54 </td> |
|
|
557 |
<td> 233,1 </td> |
|
|
558 |
<td> 466,2 </td> |
|
|
559 |
<td> 932,3 </td> |
|
|
560 |
<td> 1864,7 </td> |
|
|
561 |
<td> 3729,3 </td> |
|
|
562 |
<td> 7458,6 </td> |
|
|
563 |
</tr> |
|
|
564 |
<tr> |
|
|
565 |
<th> H </th> |
|
|
566 |
<td> 61,74 </td> |
|
|
567 |
<td> 123,47 </td> |
|
|
568 |
<td> 246,9 </td> |
|
|
569 |
<td> 493,9 </td> |
|
|
570 |
<td> 987,8 </td> |
|
|
571 |
<td> 1975,5 </td> |
|
|
572 |
<td> 3951,1 </td> |
|
|
573 |
<td> 7902,1 </td> |
|
|
574 |
</tr> |
|
|
575 |
<tr style='color:gray'> |
|
|
576 |
<th> ( C ) </th> |
|
|
577 |
<td> 65,41 </td> |
|
|
578 |
<td> 130,81 </td> |
|
|
579 |
<td> 261,6 </td> |
|
|
580 |
<td> 523,3 </td> |
|
|
581 |
<td> 1046,5 </td> |
|
|
582 |
<td> 2093,0 </td> |
|
|
583 |
<td> 4186,0 </td> |
|
|
584 |
<td> 8372,0 </td> |
|
|
585 |
</tr> |
|
|
586 |
</table> |
|
|
587 |
|
|
|
588 |
<h1> Programové vybavení </h1> |
|
|
589 |
|
|
|
590 |
<h2> Uživatelský návod </h2> |
|
|
591 |
|
|
|
592 |
<h3> Přehrávání skladeb </h3> |
|
|
593 |
|
|
|
594 |
<p> |
|
|
595 |
Při přehrávání není na J5 propojka. Hlasitost se nastavuje trimrem P1. |
|
|
596 |
</p> |
|
|
597 |
|
|
|
598 |
<p> |
|
|
599 |
Melodický zvonek začne hrát stiskem libovolného tlačítka (tlačítek). |
|
|
600 |
Přestože jsou na desce jen 4 tlačítka, je možné do zvonku naprogramovat |
|
|
601 |
až 15 skladeb. První čtyři jsou spuštěny přímo při stlačení jednoho |
|
|
602 |
ze čtyř tlačítek, pro aktivaci dalších skladeb je nutné stisknout |
|
|
603 |
několik tlačítek najednou dle následující tabulky. |
|
|
604 |
</p> |
|
|
605 |
|
|
|
606 |
<table> |
|
|
607 |
<tr> |
|
|
608 |
<th> Číslo skladby </th> |
|
|
609 |
<th> Kombinace tlačítek </th> |
|
|
610 |
<th> Číslo skladby </th> |
|
|
611 |
<th> Kombinace tlačítek </th> |
|
|
612 |
</tr> |
|
|
613 |
<tr> |
|
|
614 |
<td> 1 </td> |
|
|
615 |
<td> • o o o </td> |
|
|
616 |
<td> 9 </td> |
|
|
617 |
<td> o • o • </td> |
|
|
618 |
</tr> |
|
|
619 |
<tr> |
|
|
620 |
<td> 2 </td> |
|
|
621 |
<td> o • o o </td> |
|
|
622 |
<td> 10 </td> |
|
|
623 |
<td> o o • • </td> |
|
|
624 |
</tr> |
|
|
625 |
<tr> |
|
|
626 |
<td> 3 </td> |
|
|
627 |
<td> o o • o </td> |
|
|
628 |
<td> 11 </td> |
|
|
629 |
<td> • • • o </td> |
|
|
630 |
</tr> |
|
|
631 |
<tr> |
|
|
632 |
<td> 4 </td> |
|
|
633 |
<td> o o o • </td> |
|
|
634 |
<td> 12 </td> |
|
|
635 |
<td> • • o • </td> |
|
|
636 |
</tr> |
|
|
637 |
<tr> |
|
|
638 |
<td> 5 </td> |
|
|
639 |
<td> • • o o </td> |
|
|
640 |
<td> 13 </td> |
|
|
641 |
<td> • o • • </td> |
|
|
642 |
</tr> |
|
|
643 |
<tr> |
|
|
644 |
<td> 6 </td> |
|
|
645 |
<td> • o • o </td> |
|
|
646 |
<td> 14 </td> |
|
|
647 |
<td> o • • • </td> |
|
|
648 |
</tr> |
|
|
649 |
<tr> |
|
|
650 |
<td> 7 </td> |
|
|
651 |
<td> • o o • </td> |
|
|
652 |
<td> 15 </td> |
|
|
653 |
<td> • • • • </td> |
|
|
654 |
</tr> |
|
|
655 |
<tr> |
|
|
656 |
<td> 8 </td> |
|
|
657 |
<td> o • • o </td> |
|
|
658 |
<td colspan="2"> • znamená stisknuto, o znamená v klidu </td> |
|
|
659 |
</tr> |
|
|
660 |
</table> |
|
|
661 |
|
|
|
662 |
<h3> Programování skladeb </h3> |
|
|
663 |
|
|
|
664 |
<p> |
|
|
665 |
Při programování se používá propojka na J5 a definice skladeb se přivádí |
|
|
666 |
z počítače ze sériové linky na konektor J4. Při rozběhu otestuje |
|
|
667 |
program, zda je na J5 propojka a zda je připojen počítač ke konektoru J4. |
|
|
668 |
Pokud ano, přejde do režimu programování. To se projeví zacvrdlikáním. Aby |
|
|
669 |
se program správně spustil při připojení napájení, musí být napájení |
|
|
670 |
odpojené alespoň 10 sekund. Pokud je nasazena propojka na J5 a nedojde |
|
|
671 |
ke správnému zresetování procesoru, může dojít k poškození obsahu |
|
|
672 |
paměti skladeb a skladby bude třeba znovu nahrát. |
|
|
673 |
</p> |
|
|
674 |
|
|
|
675 |
<p> |
|
|
676 |
Postup pro přechod do programovacího režimu: |
|
|
677 |
</p> |
|
|
678 |
|
|
|
679 |
<ul> |
|
|
680 |
<li> Odpojíme baterii a počkáme alespoň 10 sekund </li> |
|
|
681 |
<li> Připojíme kabel RS232 k počítači </li> |
|
|
682 |
<li> Připojíme baterii </li> |
|
|
683 |
<li> Nasadíme propojku J5 </li> |
|
|
684 |
<li> Stiskneme některé tlačítko a mělo by se ozvat zacvrdlikání</li> |
|
|
685 |
</ul> |
|
|
686 |
|
|
|
687 |
<p> |
|
|
688 |
Pro přenos dat do zvonku je možné použít téměř libovolný terminálový program. |
|
|
689 |
Parametry přenosu dat do zvonku jsou 9600Bd, 8bitů, 1stopbit, žádná parita. |
|
|
690 |
Řízení přenosu se nepoužívá. Protože data procesor zapisuje do své paměti |
|
|
691 |
programu, nemůže číst další data, než dokončí zápis předchozích. Proto |
|
|
692 |
je nutné nastavit časovou prodlevu mezi řádky na cca 100ms. |
|
|
693 |
Přenos je jen jednosměrný, zvonek neumí odesílat žádné informace sériovou |
|
|
694 |
linkou směrem k počítači. Má pouze propojené signály RX a TX tak, aby |
|
|
695 |
znaky odesílané do zvonku byly zobrazované na displeji terminálu. |
|
|
696 |
</p> |
|
|
697 |
|
|
|
698 |
<p> |
|
|
699 |
Pro propojení s počítačem se používá nulmodemový kabel (tedy křížený, |
|
|
700 |
spojení RX-TX, TX-RX). |
|
|
701 |
</p> |
|
|
702 |
|
|
|
703 |
<p> |
|
|
704 |
V prostředí Windows 98 je k dispozici program Hyperterminál |
|
|
705 |
(Start/Programy/Příslušenství/Komunikace/Hyperterminál). Pokud není, |
|
|
706 |
znamená to, že nebyl nainstalován, a je možné nainstalovat jej dodatečně |
|
|
707 |
nebo použít nějaký jiný terminálový program. Hyperterminál nás na úvod |
|
|
708 |
vyzve k nastavení základních komunikačních parametrů (9600Bd, 8, |
|
|
709 |
žádná, 1, žádné). Dále je třeba nastavit |
|
|
710 |
(Soubor/Vlastnosti/Nastavení/Nastavení ASCII) |
|
|
711 |
zpoždění řádků 100ms. |
|
|
712 |
</p> |
|
|
713 |
|
|
|
714 |
<p> |
|
|
715 |
V této chvíli bychom měli vidět znaky psané na klávesnici v okně |
|
|
716 |
terminálu. Pokud je zvonek v režimu programování, měl by krátce pípnout |
|
|
717 |
při každém stisku odřádkování. Znamená to, že reaguje na posílaná data. |
|
|
718 |
Nyní již nic nebrání ručnímu ovládání. |
|
|
719 |
</p> |
|
|
720 |
|
|
|
721 |
<p> |
|
|
722 |
Větší množství dat (například celou melodii) je vhodné připravit |
|
|
723 |
do samostatného souboru a ten pak přes schránku vložit do terminálu |
|
|
724 |
(u Hyperterminálu pravé tlačítko, funkce Vložit k hostiteli). Většina |
|
|
725 |
terminálových programů umí i přímo odeslat textový soubor protistraně, ale |
|
|
726 |
Hyperterminál to neumí. |
|
|
727 |
</p> |
|
|
728 |
|
|
|
729 |
<h3> Příkazy a formát dat pro programování skladeb </h3> |
|
|
730 |
|
|
|
731 |
<p> |
|
|
732 |
Procesor vždy nejprve převezme celou řádku a poté se ji snaží zpracovat. |
|
|
733 |
Pokud řádce nerozumí, pípne odlišně. Z řádky se uvažuje jen prvních 40 znaků. |
|
|
734 |
Text za „//“ je komentář. Komentář může být libovolně dlouhý. |
|
|
735 |
</p> |
|
|
736 |
|
|
|
737 |
<p> |
|
|
738 |
Klíčová slova a jejich význam je v následující tabulce. Parametry jsou |
|
|
739 |
malá přirozená čísla v uvedeném rozsahu. Pokud je zadáno číslo větší, |
|
|
740 |
zvonek použije jen odpovídající spodní bity čísla. |
|
|
741 |
</p> |
|
|
742 |
|
|
|
743 |
<table> |
|
|
744 |
<tr> |
|
|
745 |
<th> Klíčová slova a parametry </th> |
|
|
746 |
<th> Meze </th> |
|
|
747 |
<th> Význam </th> |
|
|
748 |
</tr> |
|
|
749 |
<tr> |
|
|
750 |
<td> <code>PLAY <b>n</b></code> </td> |
|
|
751 |
<td> <code><b>n</b>: 1 .. 15</code> </td> |
|
|
752 |
<td> Zahraj skladbu <code><b>n</b></code> </td> |
|
|
753 |
</tr> |
|
|
754 |
<tr> |
|
|
755 |
<td> <code>ERASE</code> </td> |
|
|
756 |
<td> </td> |
|
|
757 |
<td> Smaž všechny skladby </td> |
|
|
758 |
</tr> |
|
|
759 |
<tr> |
|
|
760 |
<td> <code>BEGIN <b>n</b></code> </td> |
|
|
761 |
<td> <code><b>n</b>: 0 .. 7</code> </td> |
|
|
762 |
<td> Začátek definice skladby; číslo udává posunutí skladby o udaný počet |
|
|
763 |
oktáv nahoru </td> |
|
|
764 |
</tr> |
|
|
765 |
<tr> |
|
|
766 |
<td> <code>TEST <b>n</b></code> </td> |
|
|
767 |
<td> <code><b>n</b>: 0 .. 7</code> </td> |
|
|
768 |
<td> Jako <code>BEGIN</code>, ale následující noty nejsou programovány |
|
|
769 |
do paměti, ale přehrávány </td> |
|
|
770 |
</tr> |
|
|
771 |
<tr> |
|
|
772 |
<td> <code>TEMPO <b>n</b></code> </td> |
|
|
773 |
<td> <code><b>n</b>: 1 .. 2047</code> </td> |
|
|
774 |
<td> Délka nejkratší noty v ms; není-li použito, je nastaveno na 100ms; |
|
|
775 |
může se použít vícekrát v jedné skladbě </td> |
|
|
776 |
</tr> |
|
|
777 |
<tr> |
|
|
778 |
<td> <code>PAUSE <b>n</b></code> </td> |
|
|
779 |
<td> <code><b>n</b>: 1 .. 2047</code> </td> |
|
|
780 |
<td> Délka prodlevy mezi notami; není-li použito, je nastaveno na 100ms; |
|
|
781 |
může se použít vícekrát v jedné skladbě </td> |
|
|
782 |
</tr> |
|
|
783 |
<tr> |
|
|
784 |
<td> <code>[<b>a</b>]<b> C</b> [<b>b</b>]</code> </td> |
|
|
785 |
<td> <code><b>a</b>: 0 .. 7<br></code> |
|
|
786 |
<code><b>C</b>: C, Cis, D, Dis, E, F, Fis, <br></code> |
|
|
787 |
<code> G, Gis, A, Ais, H, Space<br></code> |
|
|
788 |
<code><b>b</b>: 1 .. 63</code> </td> |
|
|
789 |
<td> Číslo oktávy (sečítá se s parametrem u <code>BEGIN</code>); není-li |
|
|
790 |
uvedeno, použije se poslední hodnota<br> |
|
|
791 |
Nota <code><b>C</b></code> v oktávě <code><b>a</b></code> o délce |
|
|
792 |
<code><b>b</b></code>; Space je němá nota (mezera)<br> |
|
|
793 |
Délka je v násobcích parametru <code>TEMPO</code>, není-li uvedena, je 1 </td> |
|
|
794 |
</tr> |
|
|
795 |
<tr> |
|
|
796 |
<td> <code>END</code> </td> |
|
|
797 |
<td> </td> |
|
|
798 |
<td> Konec skladby, další noty již budou pouze přehrávány </td> |
|
|
799 |
</tr> |
|
|
800 |
<tr> |
|
|
801 |
<td> / text </td> |
|
|
802 |
<td> </td> |
|
|
803 |
<td> Komentář; vše za znakem / do konce řádky se ignoruje </td> |
|
|
804 |
</tr> |
|
|
805 |
<tr> |
|
|
806 |
<td colspan=3> <i>Znaky <code>[</code> a <code>]</code> znamenají volitelný parametr</i> </td> |
|
|
807 |
</tr> |
|
|
808 |
</table> |
|
|
809 |
|
|
|
810 |
<h2> Program </h2> |
|
|
811 |
|
|
|
812 |
<p> |
|
|
813 |
Program melodického zvonku je napsaný v jazyce C firmy CCS. |
|
|
814 |
Demoverze překladače je možné stáhnout z webu na adresa |
|
|
815 |
<a href="http://www.ccsinfo.com/">http://www.ccsinfo.com</a>. |
|
|
816 |
Demoverze podporuje jen vybrané procesory (obvykle několik typů) |
|
|
817 |
a umožňuje napsat program v omezeném rozsahu (do 2048 slov). |
|
|
818 |
</p> |
|
|
819 |
|
|
|
820 |
<p> |
|
|
821 |
Program je bohatě komentovaný a dostupný, je tedy snadné se s ním seznámit. |
|
|
822 |
Vzhledem k omezeným zdrojům použitého procesoru používá program v hojné |
|
|
823 |
míře globálních proměnných, protože to vede na kód kratší asi o 10%. |
|
|
824 |
Některé programové konstrukce také vypadají na první pohled nelogicky, |
|
|
825 |
ale jsou voleny s ohledem na dosažení minimální délky výsledného |
|
|
826 |
kódu. Je třeba si uvědomit, že použitý překladač jazyka C patří k těm |
|
|
827 |
nejlevnějším, a proto neumí generovat příliš optimalizovaný kód. |
|
|
828 |
</p> |
|
|
829 |
|
|
|
830 |
<h3> Hlavní program a základní procedury </h3> |
|
|
831 |
|
|
|
832 |
<h4>main()</h4> |
|
|
833 |
|
|
|
834 |
<p> |
|
|
835 |
Na začátku se hlavní program rozhoduje podle přítomnosti propojky na J5 |
|
|
836 |
a podle přítomnosti klidového signálu na RS232, zda má přejít do režimu |
|
|
837 |
programování skladeb. Pokud ano, spustí se procedura Download(). |
|
|
838 |
</p> |
|
|
839 |
|
|
|
840 |
<p> |
|
|
841 |
Pokud není v programovacím režimu, zapíná procesor napájení sobě a zesilovači |
|
|
842 |
LM386 a po krátké prodlevě načítá stav tlačítek. Pak volá proceduru <code>Play()</code>, |
|
|
843 |
která na základě čísla skladby v proměnné <code>CisloSkladby</code> |
|
|
844 |
přehraje požadovanou skladbu. |
|
|
845 |
</p> |
|
|
846 |
|
|
|
847 |
<p> |
|
|
848 |
Následuje přechod do vypnutého stavu. |
|
|
849 |
</p> |
|
|
850 |
|
|
|
851 |
<h4>Download()</h4> |
|
|
852 |
|
|
|
853 |
<p> |
|
|
854 |
Tato procedura načítá nejprve celou řádku z RS232. Znaky mezera, čárka |
|
|
855 |
a všechny řídící znaky kromě <code>CR</code> (odřádkování) a <code>BS</code> |
|
|
856 |
(znak zpět) se chápou jako oddělovač (mezera). Znak <code>BS</code> umožňuje |
|
|
857 |
návrat o 1 znak zpět. Znaky za znakem lomeno se ignorují stejně, jako |
|
|
858 |
znaky za maximální délkou řádky. |
|
|
859 |
</p> |
|
|
860 |
|
|
|
861 |
<p> |
|
|
862 |
Po stisku <code>CR</code> se postupně zpracuje celá řádka. Hledají se |
|
|
863 |
v ní klíčová slova (procedura <code>Word()</code>) a číselné parametry |
|
|
864 |
(procedura <code>Number()</code>). Vyskytne-li se chybné slovo, dojde |
|
|
865 |
k nastavení příznaku <code>Error</code> a na konci řádky místo krátkého |
|
|
866 |
pípnutí dojde k chybovému pípnutí. |
|
|
867 |
</p> |
|
|
868 |
|
|
|
869 |
<p> |
|
|
870 |
Klíčová slova, tak jak jsou na řádce, se ihned vykonávají. Tedy noty hrají, |
|
|
871 |
slova <code>TEMPO</code>, <code>PAUSE</code>, <code>PLAY</code>, <code>ERASE</code> |
|
|
872 |
a <code>TEST</code> dělají přímo to, co dělat mají. Tato vlastnost |
|
|
873 |
slouží k testování melodií či jejich úryvků aniž by se musely zapisovat |
|
|
874 |
do paměti FLASH. |
|
|
875 |
</p> |
|
|
876 |
|
|
|
877 |
<p> |
|
|
878 |
Po slovu <code>BEGIN</code> se přejde do režimu záznamu do paměti a od |
|
|
879 |
tohoto okamžiku se vše zaznamenává do paměti. Tento režim končí slovem <code>END</code> |
|
|
880 |
(ale také slovy <code>ERASE</code>, <code>TEST</code> nebo <code>PLAY</code>). |
|
|
881 |
</p> |
|
|
882 |
|
|
|
883 |
<p> |
|
|
884 |
Pokud se během zpracování řádky odehrála alespoň jedna nota, nedojde na konci |
|
|
885 |
řádky k pípnutí (pokud ovšem nebyla někde na řádce chyba). |
|
|
886 |
</p> |
|
|
887 |
|
|
|
888 |
<h4> Play(), PlayData(), Find()</h4> |
|
|
889 |
|
|
|
890 |
<p> |
|
|
891 |
Tyto procedury slouží k přehrání celé skladby, jedné noty a k nalezení |
|
|
892 |
začátku zadaného čísla skladby. |
|
|
893 |
</p> |
|
|
894 |
|
|
|
895 |
<h4> WriteDataInc(), WriteData, ReadData(), Erase() </h4> |
|
|
896 |
|
|
|
897 |
<p> |
|
|
898 |
Tyto procedury slouží k zápisu, čtení a k mazání paměti skladeb. |
|
|
899 |
K zápisu nebo ke smazání může dojít jen pokud je nasazena propojka na J5. |
|
|
900 |
</p> |
|
|
901 |
|
|
|
902 |
<h4> SpecBeep()</h4> |
|
|
903 |
|
|
|
904 |
<p> |
|
|
905 |
Tato procedura slouží k pípnutí dle parametru v proměnných |
|
|
906 |
<code>Beep</code> a <code>Error</code>. |
|
|
907 |
</p> |
|
|
908 |
|
|
|
909 |
<h3> Knihovna pro generování zvuků <code>Sound_t1.c</code> </h3> |
|
|
910 |
|
|
|
911 |
<p> |
|
|
912 |
Tato knihovna používá časovač T1 spolu s jednotkou CCP1 ke generování |
|
|
913 |
přerušení dle požadované půlperiody hraného tónu. V přerušovací rutině |
|
|
914 |
<code>IntCCP1()</code> se pak ovládá výstupní port. |
|
|
915 |
</p> |
|
|
916 |
|
|
|
917 |
<p> |
|
|
918 |
Délka tónu se odměřuje pomocí přetečení časovače T0. Přetečení se zjišťuje |
|
|
919 |
čtením příznaku T0IF, přerušení se zde nepoužívá. |
|
|
920 |
</p> |
|
|
921 |
|
|
|
922 |
<h3> Definice skladeb <code>Data.c</code> </h3> |
|
|
923 |
|
|
|
924 |
<p> |
|
|
925 |
Skladby se ukládají v poslední čtvrtině paměti FLASH a kódují se dle |
|
|
926 |
následující tabulky. |
|
|
927 |
</p> |
|
|
928 |
|
|
|
929 |
<table> |
|
|
930 |
<tr> |
|
|
931 |
<th> Slovo </th> |
|
|
932 |
<th> Kód </th> |
|
|
933 |
<th> Poznámka </th> |
|
|
934 |
</tr> |
|
|
935 |
<tr> |
|
|
936 |
<td> <code>BEGIN n</code> </td> |
|
|
937 |
<td> <code>1 0 0 n n n n n n n n n n n</code> </td> |
|
|
938 |
<td> Začátek skladby a posunutí oktávy not skladby o <code><b>n</b></code> </td> |
|
|
939 |
</tr> |
|
|
940 |
<tr> |
|
|
941 |
<td> <code>TEMPO n</code> </td> |
|
|
942 |
<td> <code>1 0 1 n n n n n n n n n n n</code> </td> |
|
|
943 |
<td> Změna tempa na <code><b>n</b></code> milisekund </td> |
|
|
944 |
</tr> |
|
|
945 |
<tr> |
|
|
946 |
<td> <code>PAUSE n</code> </td> |
|
|
947 |
<td> <code>1 1 0 n n n n n n n n n n n</code> </td> |
|
|
948 |
<td> Změna mezery mezi notami na <code><b>n</b></code> milisekund </td> |
|
|
949 |
</tr> |
|
|
950 |
<tr> |
|
|
951 |
<td> <code>o n d</code> </td> |
|
|
952 |
<td> <code>0 d d d d d d o o o n n n n</code> </td> |
|
|
953 |
<td> Nota <code><b>n</b></code> v oktávě <code><b>o</b></code> délky <code><b>d</b></code> </td> |
|
|
954 |
</tr> |
|
|
955 |
<tr> |
|
|
956 |
<td> <code>END</code> </td> |
|
|
957 |
<td> <code>1 1 1 1 1 1 1 1 1 1 1 1 1 1</code> </td> |
|
|
958 |
<td> Konec skladeb, prázdná paměť </td> |
|
|
959 |
</tr> |
|
|
960 |
</table> |
|
|
961 |
|
|
|
962 |
<p> |
|
|
963 |
Aby se dalo použít stejného souboru s definicí skladby jak pro začlenění |
|
|
964 |
skladby do firmwaru tak i pro programování přes RS232, jsou v souboru |
|
|
965 |
<code>Data.c</code> nadefinována makra, která toto umožňují. Definice |
|
|
966 |
skladby, která má být začleněna do firmwaru musí, používat čárky jako |
|
|
967 |
oddělovače jednotlivých položek a číselné parametry není možné vynechávat. |
|
|
968 |
Příklady skladeb napoví vše. |
|
|
969 |
</p> |
|
|
970 |
|
|
|
971 |
</div> |
|
|
972 |
|
|
|
973 |
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> |
|
|
974 |
<!-- ============== PATIČKA ============== --> |
|
|
975 |
<div class="Footer"> |
|
|
976 |
<script type="text/javascript"> |
|
|
977 |
<!-- |
|
|
978 |
SetRelativePath("../../../../"); |
|
|
979 |
DrawFooter(); |
|
|
980 |
// --> |
|
|
981 |
</script> |
|
|
982 |
<noscript> |
|
|
983 |
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> |
|
|
984 |
</noscript> |
|
|
985 |
</div> |
|
|
986 |
<!-- AUTOINCLUDE END --> |
|
|
987 |
|
|
|
988 |
</body> |
|
|
989 |
</html> |