Rev Author Line No. Line
3469 miho 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> AVRUSB01A </title>
6 <meta name="keywords" content="stavebnice MLAB USB AVR USBasp I2C">
7 <meta name="description" content="Projekt MLAB, Modul pro AVR procesory, převodník USB na I2C, programátor AVR ISP">
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">
10 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
11 <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
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  
51 <p class="Title">
52 USB modul pro AVR
53 </p>
54  
55 <p class=Autor>
56 Milan Horkel
57 </p>
58  
59 <p class="Subtitle">
60 Potřeboval jsem rychle připojit I2C zařízení k Linuxovému počítači. Protože se mi nelíbilo
61 "bastl" provedení USB rozhraní s procesorem ATmega, zkomponoval jsem tento modul. Může
62 sloužit jako ISP programátor pro AVR procesory, jako převodník USB na I2C a na další pokusy
63 se softwarovou realizací USB na procesorech řadu ATmega. Obsahuje také stabilizátor 3,3V.
64 </p>
65  
66 <p class="Subtitle">
67 <img width="630" height="319" src="AVRUSB01A_soubory/image001.jpg" alt="Obrázek modulu AVRUSB01A">
68 </p>
69  
70 <p>
71 <a href="../AVRUSB01A.cs.pdf"><img class="NoBorder"
72 src="../../../../../Web/PIC/FileIco_PDF.ico"
73 alt="Acrobat">&nbsp;PDF verze</a>
74 </p>
75  
76 <h1> Technické parametry</h1>
77  
78 <table>
79 <tr>
80 <th> Parametr </th>
81 <th> Hodnota </th>
82 <th> Poznámka </th>
83 </tr>
84 <tr>
85 <td> Rozhraní </td>
86 <td> USB </td>
87 <td> Low Speed </td>
88 </tr>
89 <tr>
90 <td> Napájení </td>
91 <td> +5V </td>
92 <td> Z USB rozhraní </td>
93 </tr>
94 <tr>
95 <td> Napájení vnitřní </td>
96 <td> +5V / +3.3V </td>
97 <td> Vlastní stabilizátor, max 800mA </td>
98 </tr>
99 <tr>
100 <td> Funkce (dle firmwaru) </td>
101 <td> USBasp<br>
102 i2c-tiny-usb </td>
103 <td> Programátor AVR<br>
104 Převodník USB - I2C </td>
105 </tr>
106 <tr>
107 <td> Rozměry </td>
108 <td> 60&nbsp;x&nbsp;30&nbsp;x&nbsp;18&nbsp;mm </td>
109 <td> Výška nad základnou </td>
110 </tr>
111 </table>
112  
113 <h1> Popis konstrukce </h1>
114  
115 <h2> Úvodem </h2>
116  
117 <p>
118 Pro procesory AVR existuje knihovna (ne jedna, dokonce několik), která realizuje USB Low
119 Speed (1.5Mbit/s) protokol čistě softwarovými prostředky. Jedná se o řešení kompromisní,
120 protože obyčejné vývody procesorů AVR nesplňují elektrické parametry USB specifikace.
121 Nicméně existuje spousta konstrukcí, které toto řešení používají a díky přeci jen laxnějším
122 požadavkům pro Low Speed USB se jedná o řešení funkční.
123 </p>
124  
125 <p>
126 <i>Pozor, novější operační systémy v souladu s USB specifikací zakazují Bulk
127 přenosy pro Low Speed USB zařízení. Takže některé firmwary nemusejí fungovat.</i>
128 </p>
129  
130 <p>
131 Původní řešení ve stavebnici MLAB bylo poněkud neelegantní. Posuďte sami:
132 </p>
133  
134 <table>
135 <tr>
136 <td width="252">
137 <p>
138 <img width="288" height="320" src="AVRUSB01A_soubory/image002.jpg"
139 alt="Nelegantní řešení">
140 </p>
141 </td>
142 <td width="252">
143 <p>
144 <img width="190" height="96" src="AVRUSB01A_soubory/image003.jpg"
145 alt="Nový modul">
146 </p>
147 </td>
148 </tr>
149 </table>
150  
151 <p>
152 Modul tedy slouží pro běh standardních firmwarů, nebo pro tvorbu a testování vlastních.
153 Dále poskytuje stabilizátor napětí 3.3V. Standardní firmwary poskytují tyto například
154 tyto služby:
155 </p>
156  
157 <ul>
158 <li> Programování procesorů AVR (firmware USBasp,
159 <a href="http://www.fischl.de/usbasp">http://www.fischl.de/usbasp</a>) </li>
160 <li> Převodník USB na I2C (firmware i2c-tiny-usb,
161 <a href="http://www.harbaum.org/till/i2c_tiny_usb">http://www.harbaum.org/till/i2c_tiny_usb</a>) </li>
162 <li> a další... </li>
163 </ul>
164  
165 <h2> Zapojení modulu </h2>
166  
167 <p>
168 Zapojení vychází z předdefinovaného přiřazení vývodů USB knihovny <i>usbdrv</i>, různé
169 firmwary mohou mít přiřazení (USB) vývodů odlišné a je třeba je před překladem přenastavit
170 (a&nbsp;případně opravit, pokud autor nemá konfiguraci správně připravenou).
171 </p>
172  
173 <p>
174 První částí zapojení je napájecí zdroj. Umožňuje pomocí propojky J2 použít jak napětí +5V
175 přímo z&nbsp;USB, tak i napětí +3.3V z vestavěného stabilizátoru. Na vstupu je ochranná
176 pojistka, protože ji některá zařízení (v rozporu s USB specifikací) nemají a při případné
177 zkratu by mohlo někde něco uhořet. <i>Pozor, osazujeme jen jednu pojistku
178 (na plošném spoji leží přes sebe).</i>
179 </p>
180  
181 <p>
182 <img border="0" width="988" height="294" src="AVRUSB01A_soubory/image004.png"
183 alt="Schéma, napájecí zdroj">
184 </p>
185  
186 <p>
187 Další částí je procesor ATmega88, který je připojen na USB konektor.
188 </p>
189  
190 <p>
191 <img border="0" width="988" height="454" src="AVRUSB01A_soubory/image005.png"
192 alt="Schéma, procesor">
193 </p>
194  
195 <p>
196 Pro jeho vlastní programování se používá konektor J9 a je nutné zapojit propojku J6, která
197 umožní programování.
198 </p>
199  
200 <p>
201 Po nahrání firmwaru "programátor AVR" je konektor J9 použit pro připojení cílového
202 zařízení, které lze napájet napětím 3.3V z modulu přes spojku J10 a případně spojkou J2
203 nastavit napětí +5V.
204 </p>
205  
206 <p>
207 <img border="0" width="494" height="254" src="AVRUSB01A_soubory/image006.png"
208 alt="Schéma, konektor AVR ISP">
209 <img border="0" width="334" height="254" src="AVRUSB01A_soubory/image007.png"
210 alt="Schéma, konektor napájení">
211 </p>
212  
213 <p>
214 Po nahrání firmwaru "převodník I2C" je možné na konektor J8 připojit I2C sběrnici, případně
215 povolit její napájení +3.3V přes J7 (J2 zapíná +5V z USB). K dispozici jsou dále LED diody
216 D4 a D5 a případně vyvedené rozhraní RS232 (TTL úrovně).
217 </p>
218  
219 <p>
220 <img border="0" width="494" height="254" src="AVRUSB01A_soubory/image008.png"
221 alt="Schéma, I2C konektor">
222 <img border="0" width="334" height="254" src="AVRUSB01A_soubory/image009.png"
223 alt="Schéma, diody LED">
224 <img border="0" width="334" height="148" src="AVRUSB01A_soubory/image010.png"
225 alt="Schéma, konektor RS232">
226 </p>
227  
228 <h2> Seznam součástek </h2>
229  
230 <table class="Soupiska">
231 <tr>
232 <th> Počet </th>
233 <th> Reference </th>
234 <th> Název </th>
235 <th> Pouzdro </th>
236 </tr>
237 <tr>
238 <th colspan="4"> Odpory </th>
239 </tr>
240 <tr>
241 <td> 10 </td>
242 <td> R2, R3, R8, R9, R10, R11, R14, R15, R16, R17 </td>
243 <td> 68 </td>
244 <td> R0805 </td>
245 </tr>
246 <tr>
247 <td> 1 </td>
248 <td> R7 </td>
249 <td> 330 </td>
250 <td> R0805 </td>
251 </tr>
252 <tr>
253 <td> 2 </td>
254 <td> R5, R6 </td>
255 <td> 470 </td>
256 <td> R0805 </td>
257 </tr>
258 <tr>
259 <td> 1 </td>
260 <td> R1 </td>
261 <td> 2k2 </td>
262 <td> R0805 </td>
263 </tr>
264 <tr>
265 <td> 3 </td>
266 <td> R4, R12, R13 </td>
267 <td> 4k7 </td>
268 <td> R0805 </td>
269 </tr>
270 <tr>
271 <th colspan="4"> Keramické kondenzátory </th>
272 </tr>
273 <tr>
274 <td> 2 </td>
275 <td> C4, C5 </td>
276 <td> 22pF </td>
277 <td> C0805 </td>
278 </tr>
279 <tr>
280 <td> 2 </td>
281 <td> C1, C6 </td>
282 <td> 100nF </td>
283 <td> C0805 </td>
284 </tr>
285 <tr>
286 <td> 2 </td>
287 <td> C2, C3 </td>
288 <td> 10uF </td>
289 <td> C0805 </td>
290 </tr>
291 <tr>
292 <th colspan="4"> Diody </th>
293 </tr>
294 <tr>
295 <td> 2 </td>
296 <td> D1, D2 </td>
297 <td> 1N4007SMD </td>
298 <td> MELF </td>
299 </tr>
300 <tr>
301 <th colspan="4"> Zenerovy diody </th>
302 </tr>
303 <tr>
304 <td> 2 </td>
305 <td> D6, D7 </td>
306 <td> BZV55C3.6 </td>
307 <td> MINIMELF </td>
308 </tr>
309 <tr>
310 <th colspan="4"> Svítivé diody </th>
311 </tr>
312 <tr>
313 <td> 2 </td>
314 <td> D3, D4 </td>
315 <td> HCL-1505-4(RED) </td>
316 <td> LED1206REV </td>
317 </tr>
318 <tr>
319 <td> 1 </td>
320 <td> D5 </td>
321 <td> HCL-1503-4(GREEN) </td>
322 <td> LED1206REV </td>
323 </tr>
324 <tr>
325 <th colspan="4"> Pojistky </th>
326 </tr>
327 <tr>
328 <td> 1 </td>
329 <td> F1A </td>
330 <td> SR075-06 </td>
331 <td> R0805 </td>
332 </tr>
333 <tr>
334 <td> 0 </td>
335 <td> F1B </td>
336 <td> 1812L075PR </td>
337 <td> F1812 </td>
338 </tr>
339 <tr>
340 <th colspan="4"> Integrované obvody </th>
341 </tr>
342 <tr>
343 <td> 1 </td>
344 <td> U1 </td>
345 <td> LT1117-3.3 </td>
346 <td> SOT223 </td>
347 </tr>
348 <tr>
349 <td> 1 </td>
350 <td> U2 </td>
351 <td> ATmega88-20AU </td>
352 <td> TQFP32 </td>
353 </tr>
354 <tr>
355 <th colspan="4"> Krystaly </th>
356 </tr>
357 <tr>
358 <td> 1 </td>
359 <td> X1 </td>
360 <td> 12MHz </td>
361 <td> XTAL050 </td>
362 </tr>
363 <tr>
364 <th colspan="4"> Mechanické součástky </th>
365 </tr>
366 <tr>
367 <td> 1 </td>
368 <td> J1 </td>
369 <td> USB_B_01 </td>
370 <td> USB_B_01 </td>
371 </tr>
372 <tr>
373 <td> 4 </td>
374 <td> J2, J5, J7, J10 </td>
375 <td> JUMP2 </td>
376 <td> JUMP2 </td>
377 </tr>
378 <tr>
379 <td> 1 </td>
380 <td> J6 </td>
381 <td> JUMP3 </td>
382 <td> JUMP3 </td>
383 </tr>
384 <tr>
385 <td> 2 </td>
386 <td> J4, J3</td>
387 <td> JUMP2X3 </td>
388 <td> JUMP2X3 </td>
389 </tr>
390 <tr>
391 <td> 1 </td>
392 <td> J8 </td>
393 <td> JUMP2X5 </td>
394 <td> JUMP2X5 </td>
395 </tr>
396 <tr>
397 <td> 1 </td>
398 <td> J9 </td>
399 <td> JUMP2x3 </td>
400 <td> JUMP2x3/B </td>
401 </tr>
402 <tr>
403 <th colspan="4"> Konstrukční součástky </th>
404 </tr>
405 <tr>
406 <td> 4 </td>
407 <td> &nbsp; </td>
408 <td> Šroub M3x12 </td>
409 <td> &nbsp; </td>
410 </tr>
411 <tr>
412 <td> 4 </td>
413 <td> &nbsp; </td>
414 <td> Podložka M3 </td>
415 <td> &nbsp; </td>
416 </tr>
417 <tr>
418 <td> 4 </td>
419 <td> &nbsp; </td>
420 <td> Sloupek M3x5 </td>
421 <td> &nbsp; </td>
422 </tr>
423 <tr>
424 <td> 2 </td>
425 <td> &nbsp; </td>
426 <td> JUMPER </td>
427 <td> &nbsp; </td>
428 </tr>
429 <tr>
430 <td> 1 </td>
431 <td> &nbsp; </td>
432 <td> Plošný spoj </td>
433 <td> &nbsp; </td>
434 </tr>
435 </table>
436  
437 <h2> Zapojení použitých IO </h2>
438  
439 <p>
440 Použitý obvod ATmega88-20 v pouzdru TQFP je možné nahradit procesorem ATmega8, ale je třeba
441 použít správnou variantu firmwaru přeloženou pro použitý procesor. Rychlost procesoru a
442 krystal volíme dle požadavků firmwaru. USB knihovna podporuje jen vybrané kmitočty.
443 </p>
444  
445 <p>
446 Knihovna USB umožňuje připojení USB datových signálů k libovolnému portu procesoru, ale
447 současně potřebuje, aby alespoň jeden signál vyvolával přerušení s dostatečně velkou
448 prioritou. Zde je přerušovacím signálem INT0 na signálu D+ (vývod PD2).
449 </p>
450  
451 <h2> Mechanická konstrukce </h2>
452  
453 <p>
454 Jedná se o standardní modul pro stavebnici MLAB určený k přišroubování k základní desce.
455 </p>
456  
457 <h1> Osazení a oživení </h1>
458  
459 <h2> Osazení </h2>
460  
461 <p>
462 Na straně spojů nezapomeneme osadit drátové propojky (platí pro jednostranný plošný spoj).
463 </p>
464  
465 <p>
466 <img border="0" width="802" height="404" src="AVRUSB01A_soubory/image011.png"
467 alt="Osazovací výkres, strana součástek">
468 </p>
469  
470 <p>
471 Na straně spojů jsou osazeny standardní SMD součástky, jen LED diody se osazují opačně,
472 svítící stranou směrem do desky (je tam otvor velký tak akorát, aby se tam vešlo pouzdro
473 standardní diody v pouzdru 1206).
474 </p>
475  
476 <p>
477 <img border="0" width="802" height="405" src="AVRUSB01A_soubory/image012.png"
478 alt="Osazovací výkres, strana spojů">
479 </p>
480  
481 <h2> Oživení </h2>
482  
483 <p>
484 Oživení spočívá v optické kontrole na zkraty a v elektrické kontrole funkčnosti
485 stabilizátoru +3.3V. Pak stačí externím programátorem nahrát příslušný firmware a ozkoušet
486 jeho funkčnost.
487 </p>
488  
489 <h1> Programové vybavení </h1>
490  
491 <p>
492 Jednotlivé firmwary (nakonfigurované pro tento hardware) jsou součástí tohoto projektu
493 spolu s jejich přeloženými binárními soubory v adresáři SW.
494 </p>
495  
496 <p>
497 Firmwary musejí být nakonfigurovány s těmito parametry:
498 </p>
499  
500 <table>
501 <tr>
502 <th> Parametr </th>
503 <th> Hodnota </th>
504 <th> Poznámka </th>
505 </tr>
506 <tr>
507 <td> USB D+ </td>
508 <td> PD2/INT0 </td>
509 <td> Je současně signálem externího přerušení INT0, obvyklé provedení programátoru USBasp používá port PB1. </td>
510 </tr>
511 <tr>
512 <td> USB D- </td>
513 <td> PD4 </td>
514 <td> Obvyklé provedení programátoru USBasp používá port PB1. </td>
515 </tr>
516 <tr>
517 <td> Přerušení </td>
518 <td> PD2/INT0 </td>
519 <td> Obvyklé provedení programátoru USBasp používá port PD2 spojený s portem PB1. </td>
520 </tr>
521 <tr>
522 <td> Krystal </td>
523 <td> 12.0MHz </td>
524 <td> Obvyklá hodnota frekvence, nutno volit podle toho, jaké frekvence jsou podporované v
525 USB knihovně (například 12.0MHz, 12.8MHz, 15.0MHz, 16.0MHz, 16.5MHz, 18.0MHz
526 20.0MHz). </td>
527 </tr>
528 <tr>
529 <td> Procesor </td>
530 <td> ATmega88 </td>
531 <td> Alternativně ATmega8 (nutný překlad firmwaru pro správně nastavený procesor). </td>
532 </tr>
533 </table>
534  
535 </div>
536  
537 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
538 <!-- ============== PATIČKA ============== -->
539 <div class="Footer">
540 <script type="text/javascript">
541 <!--
542 SetRelativePath("../../../../../");
543 DrawFooter();
544 // -->
545 </script>
546 <noscript>
547 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
548 </noscript>
549 </div>
550 <!-- AUTOINCLUDE END -->
551  
552 </body>
553 </html>