No changes between revisions
/Modules/AVR/AVRUSB01A/SW/fw_usbasp/Makefile
175,6 → 175,6
 
endef
 
all:
ALL:
@$(foreach III,$(ALL_TARGETS),$(call EXEC,$(III)))
@make cleantmp
/Modules/AVR/AVRUSB01A/DOC/FW_USBasp.cs.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/Modules/AVR/AVRUSB01A/DOC/HTML/FW_USBasp_soubory/image001.jpg
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/Modules/AVR/AVRUSB01A/DOC/HTML/AVRUSB01A.cs.html
File deleted
/Modules/AVR/AVRUSB01A/DOC/HTML/FW_USBasp.cs.html
File deleted
/Modules/AVR/AVRUSB01A/DOC/HTML/AVRUSB01A.cs.htm
0,0 → 1,553
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> AVRUSB01A </title>
<meta name="keywords" content="stavebnice MLAB USB AVR USBasp I2C">
<meta name="description" content="Projekt MLAB, Modul pro AVR procesory, převodník USB na I2C, programátor AVR ISP">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
 
<body lang="cs">
 
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
<!-- ============== TEXT ============== -->
<div class="Text">
 
<p class="Title">
USB modul pro AVR
</p>
 
<p class=Autor>
Milan Horkel
</p>
 
<p class="Subtitle">
Potřeboval jsem rychle připojit I2C zařízení k Linuxovému počítači. Protože se mi nelíbilo
"bastl" provedení USB rozhraní s procesorem ATmega, zkomponoval jsem tento modul. Může
sloužit jako ISP programátor pro AVR procesory, jako převodník USB na I2C a na další pokusy
se softwarovou realizací USB na procesorech řadu ATmega. Obsahuje také stabilizátor 3,3V.
</p>
<p class="Subtitle">
<img width="630" height="319" src="AVRUSB01A_soubory/image001.jpg" alt="Obrázek modulu AVRUSB01A">
</p>
 
<p>
<a href="../AVRUSB01A.cs.pdf"><img class="NoBorder"
src="../../../../../Web/PIC/FileIco_PDF.ico"
alt="Acrobat">&nbsp;PDF verze</a>
</p>
<h1> Technické parametry</h1>
 
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Rozhraní </td>
<td> USB </td>
<td> Low Speed </td>
</tr>
<tr>
<td> Napájení </td>
<td> +5V </td>
<td> Z USB rozhraní </td>
</tr>
<tr>
<td> Napájení vnitřní </td>
<td> +5V / +3.3V </td>
<td> Vlastní stabilizátor, max 800mA </td>
</tr>
<tr>
<td> Funkce (dle firmwaru) </td>
<td> USBasp<br>
i2c-tiny-usb </td>
<td> Programátor AVR<br>
Převodník USB - I2C </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 60&nbsp;x&nbsp;30&nbsp;x&nbsp;18&nbsp;mm </td>
<td> Výška nad základnou </td>
</tr>
</table>
 
<h1> Popis konstrukce </h1>
 
<h2> Úvodem </h2>
 
<p>
Pro procesory AVR existuje knihovna (ne jedna, dokonce několik), která realizuje USB Low
Speed (1.5Mbit/s) protokol čistě softwarovými prostředky. Jedná se o řešení kompromisní,
protože obyčejné vývody procesorů AVR nesplňují elektrické parametry USB specifikace.
Nicméně existuje spousta konstrukcí, které toto řešení používají a díky přeci jen laxnějším
požadavkům pro Low Speed USB se jedná o řešení funkční.
</p>
 
<p>
<i>Pozor, novější operační systémy v souladu s USB specifikací zakazují Bulk
přenosy pro Low Speed USB zařízení. Takže některé firmwary nemusejí fungovat.</i>
</p>
 
<p>
Původní řešení ve stavebnici MLAB bylo poněkud neelegantní. Posuďte sami:
</p>
 
<table>
<tr>
<td width="252">
<p>
<img width="288" height="320" src="AVRUSB01A_soubory/image002.jpg"
alt="Nelegantní řešení">
</p>
</td>
<td width="252">
<p>
<img width="190" height="96" src="AVRUSB01A_soubory/image003.jpg"
alt="Nový modul">
</p>
</td>
</tr>
</table>
 
<p>
Modul tedy slouží pro běh standardních firmwarů, nebo pro tvorbu a testování vlastních.
Dále poskytuje stabilizátor napětí 3.3V. Standardní firmwary poskytují tyto například
tyto služby:
</p>
 
<ul>
<li> Programování procesorů AVR (firmware USBasp,
<a href="http://www.fischl.de/usbasp">http://www.fischl.de/usbasp</a>) </li>
<li> Převodník USB na I2C (firmware i2c-tiny-usb,
<a href="http://www.harbaum.org/till/i2c_tiny_usb">http://www.harbaum.org/till/i2c_tiny_usb</a>) </li>
<li> a další... </li>
</ul>
 
<h2> Zapojení modulu </h2>
 
<p>
Zapojení vychází z předdefinovaného přiřazení vývodů USB knihovny <i>usbdrv</i>, různé
firmwary mohou mít přiřazení (USB) vývodů odlišné a je třeba je před překladem přenastavit
(a&nbsp;případně opravit, pokud autor nemá konfiguraci správně připravenou).
</p>
 
<p>
První částí zapojení je napájecí zdroj. Umožňuje pomocí propojky J2 použít jak napětí +5V
přímo z&nbsp;USB, tak i napětí +3.3V z vestavěného stabilizátoru. Na vstupu je ochranná
pojistka, protože ji některá zařízení (v rozporu s USB specifikací) nemají a při případné
zkratu by mohlo někde něco uhořet. <i>Pozor, osazujeme jen jednu pojistku
(na plošném spoji leží přes sebe).</i>
</p>
 
<p>
<img border="0" width="988" height="294" src="AVRUSB01A_soubory/image004.png"
alt="Schéma, napájecí zdroj">
</p>
 
<p>
Další částí je procesor ATmega88, který je připojen na USB konektor.
</p>
 
<p>
<img border="0" width="988" height="454" src="AVRUSB01A_soubory/image005.png"
alt="Schéma, procesor">
</p>
 
<p>
Pro jeho vlastní programování se používá konektor J9 a je nutné zapojit propojku J6, která
umožní programování.
</p>
 
<p>
Po nahrání firmwaru "programátor AVR" je konektor J9 použit pro připojení cílového
zařízení, které lze napájet napětím 3.3V z modulu přes spojku J10 a případně spojkou J2
nastavit napětí +5V.
</p>
 
<p>
<img border="0" width="494" height="254" src="AVRUSB01A_soubory/image006.png"
alt="Schéma, konektor AVR ISP">
<img border="0" width="334" height="254" src="AVRUSB01A_soubory/image007.png"
alt="Schéma, konektor napájení">
</p>
 
<p>
Po nahrání firmwaru "převodník I2C" je možné na konektor J8 připojit I2C sběrnici, případně
povolit její napájení +3.3V přes J7 (J2 zapíná +5V z USB). K dispozici jsou dále LED diody
D4 a D5 a případně vyvedené rozhraní RS232 (TTL úrovně).
</p>
 
<p>
<img border="0" width="494" height="254" src="AVRUSB01A_soubory/image008.png"
alt="Schéma, I2C konektor">
<img border="0" width="334" height="254" src="AVRUSB01A_soubory/image009.png"
alt="Schéma, diody LED">
<img border="0" width="334" height="148" src="AVRUSB01A_soubory/image010.png"
alt="Schéma, konektor RS232">
</p>
 
<h2> Seznam součástek </h2>
 
<table class="Soupiska">
<tr>
<th> Počet </th>
<th> Reference </th>
<th> Název </th>
<th> Pouzdro </th>
</tr>
<tr>
<th colspan="4"> Odpory </th>
</tr>
<tr>
<td> 10 </td>
<td> R2, R3, R8, R9, R10, R11, R14, R15, R16, R17 </td>
<td> 68 </td>
<td> R0805 </td>
</tr>
<tr>
<td> 1 </td>
<td> R7 </td>
<td> 330 </td>
<td> R0805 </td>
</tr>
<tr>
<td> 2 </td>
<td> R5, R6 </td>
<td> 470 </td>
<td> R0805 </td>
</tr>
<tr>
<td> 1 </td>
<td> R1 </td>
<td> 2k2 </td>
<td> R0805 </td>
</tr>
<tr>
<td> 3 </td>
<td> R4, R12, R13 </td>
<td> 4k7 </td>
<td> R0805 </td>
</tr>
<tr>
<th colspan="4"> Keramické kondenzátory </th>
</tr>
<tr>
<td> 2 </td>
<td> C4, C5 </td>
<td> 22pF </td>
<td> C0805 </td>
</tr>
<tr>
<td> 2 </td>
<td> C1, C6 </td>
<td> 100nF </td>
<td> C0805 </td>
</tr>
<tr>
<td> 2 </td>
<td> C2, C3 </td>
<td> 10uF </td>
<td> C0805 </td>
</tr>
<tr>
<th colspan="4"> Diody </th>
</tr>
<tr>
<td> 2 </td>
<td> D1, D2 </td>
<td> 1N4007SMD </td>
<td> MELF </td>
</tr>
<tr>
<th colspan="4"> Zenerovy diody </th>
</tr>
<tr>
<td> 2 </td>
<td> D6, D7 </td>
<td> BZV55C3.6 </td>
<td> MINIMELF </td>
</tr>
<tr>
<th colspan="4"> Svítivé diody </th>
</tr>
<tr>
<td> 2 </td>
<td> D3, D4 </td>
<td> HCL-1505-4(RED) </td>
<td> LED1206REV </td>
</tr>
<tr>
<td> 1 </td>
<td> D5 </td>
<td> HCL-1503-4(GREEN) </td>
<td> LED1206REV </td>
</tr>
<tr>
<th colspan="4"> Pojistky </th>
</tr>
<tr>
<td> 1 </td>
<td> F1A </td>
<td> SR075-06 </td>
<td> R0805 </td>
</tr>
<tr>
<td> 0 </td>
<td> F1B </td>
<td> 1812L075PR </td>
<td> F1812 </td>
</tr>
<tr>
<th colspan="4"> Integrované obvody </th>
</tr>
<tr>
<td> 1 </td>
<td> U1 </td>
<td> LT1117-3.3 </td>
<td> SOT223 </td>
</tr>
<tr>
<td> 1 </td>
<td> U2 </td>
<td> ATmega88-20AU </td>
<td> TQFP32 </td>
</tr>
<tr>
<th colspan="4"> Krystaly </th>
</tr>
<tr>
<td> 1 </td>
<td> X1 </td>
<td> 12MHz </td>
<td> XTAL050 </td>
</tr>
<tr>
<th colspan="4"> Mechanické součástky </th>
</tr>
<tr>
<td> 1 </td>
<td> J1 </td>
<td> USB_B_01 </td>
<td> USB_B_01 </td>
</tr>
<tr>
<td> 4 </td>
<td> J2, J5, J7, J10 </td>
<td> JUMP2 </td>
<td> JUMP2 </td>
</tr>
<tr>
<td> 1 </td>
<td> J6 </td>
<td> JUMP3 </td>
<td> JUMP3 </td>
</tr>
<tr>
<td> 2 </td>
<td> J4, J3</td>
<td> JUMP2X3 </td>
<td> JUMP2X3 </td>
</tr>
<tr>
<td> 1 </td>
<td> J8 </td>
<td> JUMP2X5 </td>
<td> JUMP2X5 </td>
</tr>
<tr>
<td> 1 </td>
<td> J9 </td>
<td> JUMP2x3 </td>
<td> JUMP2x3/B </td>
</tr>
<tr>
<th colspan="4"> Konstrukční součástky </th>
</tr>
<tr>
<td> 4 </td>
<td> &nbsp; </td>
<td> Šroub M3x12 </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> 4 </td>
<td> &nbsp; </td>
<td> Podložka M3 </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> 4 </td>
<td> &nbsp; </td>
<td> Sloupek M3x5 </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> 2 </td>
<td> &nbsp; </td>
<td> JUMPER </td>
<td> &nbsp; </td>
</tr>
<tr>
<td> 1 </td>
<td> &nbsp; </td>
<td> Plošný spoj </td>
<td> &nbsp; </td>
</tr>
</table>
 
<h2> Zapojení použitých IO </h2>
 
<p>
Použitý obvod ATmega88-20 v pouzdru TQFP je možné nahradit procesorem ATmega8, ale je třeba
použít správnou variantu firmwaru přeloženou pro použitý procesor. Rychlost procesoru a
krystal volíme dle požadavků firmwaru. USB knihovna podporuje jen vybrané kmitočty.
</p>
 
<p>
Knihovna USB umožňuje připojení USB datových signálů k libovolnému portu procesoru, ale
současně potřebuje, aby alespoň jeden signál vyvolával přerušení s dostatečně velkou
prioritou. Zde je přerušovacím signálem INT0 na signálu D+ (vývod PD2).
</p>
 
<h2> Mechanická konstrukce </h2>
 
<p>
Jedná se o standardní modul pro stavebnici MLAB určený k přišroubování k základní desce.
</p>
 
<h1> Osazení a oživení </h1>
 
<h2> Osazení </h2>
 
<p>
Na straně spojů nezapomeneme osadit drátové propojky (platí pro jednostranný plošný spoj).
</p>
 
<p>
<img border="0" width="802" height="404" src="AVRUSB01A_soubory/image011.png"
alt="Osazovací výkres, strana součástek">
</p>
 
<p>
Na straně spojů jsou osazeny standardní SMD součástky, jen LED diody se osazují opačně,
svítící stranou směrem do desky (je tam otvor velký tak akorát, aby se tam vešlo pouzdro
standardní diody v pouzdru 1206).
</p>
 
<p>
<img border="0" width="802" height="405" src="AVRUSB01A_soubory/image012.png"
alt="Osazovací výkres, strana spojů">
</p>
 
<h2> Oživení </h2>
 
<p>
Oživení spočívá v optické kontrole na zkraty a v elektrické kontrole funkčnosti
stabilizátoru +3.3V. Pak stačí externím programátorem nahrát příslušný firmware a ozkoušet
jeho funkčnost.
</p>
 
<h1> Programové vybavení </h1>
 
<p>
Jednotlivé firmwary (nakonfigurované pro tento hardware) jsou součástí tohoto projektu
spolu s jejich přeloženými binárními soubory v adresáři SW.
</p>
 
<p>
Firmwary musejí být nakonfigurovány s těmito parametry:
</p>
 
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> USB D+ </td>
<td> PD2/INT0 </td>
<td> Je současně signálem externího přerušení INT0, obvyklé provedení programátoru USBasp používá port PB1. </td>
</tr>
<tr>
<td> USB D- </td>
<td> PD4 </td>
<td> Obvyklé provedení programátoru USBasp používá port PB1. </td>
</tr>
<tr>
<td> Přerušení </td>
<td> PD2/INT0 </td>
<td> Obvyklé provedení programátoru USBasp používá port PD2 spojený s portem PB1. </td>
</tr>
<tr>
<td> Krystal </td>
<td> 12.0MHz </td>
<td> Obvyklá hodnota frekvence, nutno volit podle toho, jaké frekvence jsou podporované v
USB knihovně (například 12.0MHz, 12.8MHz, 15.0MHz, 16.0MHz, 16.5MHz, 18.0MHz
20.0MHz). </td>
</tr>
<tr>
<td> Procesor </td>
<td> ATmega88 </td>
<td> Alternativně ATmega8 (nutný překlad firmwaru pro správně nastavený procesor). </td>
</tr>
</table>
</div>
 
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
 
</body>
</html>
/Modules/AVR/AVRUSB01A/DOC/SRC/FW_USBasp.cs.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/Modules/Clock/CLK1PLL01A/pdf/cdce913.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Deleted: svn:mime-type
-application/octet-stream
\ No newline at end of property
/Modules/Clock/CLK1PLL01A/pdf/scas849e.pdf
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+application/octet-stream
\ No newline at end of property
/Web/CSS/MLAB.css
172,16 → 172,6
padding: 0.5ex; /* vnitřní okraj */
}
 
code {
font-family: "Courier New"; /* neproporcionální písmo */
background: lightgrey; /* zvýraznění barvou pozadí */
display: table; /* je to blok široký dle obsahu */
_display: block; /* IE6 blok ale široký přes celou stránku */
white-space: pre; /* dodrž formátování */
margin-left: 2em; /* odsazení bloku*/
padding: 0.5ex; /* vnitřní okraj */
}
 
.Samp { /* k odlišení příkladů HTML objektů */
margin-left: 2em; /* odsazení bloku jako u samp*/
}
786,7 → 776,7
margin: 3px 0 0 20px;
}
 
xxcode
code
{
white-space: pre;
}