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