Rev 213 Rev 331
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3c.org/TR/html4/strict.dtd"> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html> 2 <html>
3 <head> 3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> Programování AVR </title> 5 <title> Programování AVR </title>
6 <meta name="keywords" content="stavebnice MLAB programování procesoru ATMEL ATmega8"> 6 <meta name="keywords" content="stavebnice MLAB programování procesoru ATMEL ATmega8">
7 <meta name="description" content="Projekt MLAB, programování ATmega8"> 7 <meta name="description" content="Projekt MLAB, programování ATmega8">
8 <!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE --> 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"> 9 <link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
10 <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico"> 10 <link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
11 <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script> 11 <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
12 <!-- AUTOINCLUDE END --> 12 <!-- AUTOINCLUDE END -->
13 </head> 13 </head>
14   14  
15 <body lang="cs"> 15 <body lang="cs">
16   16  
17 <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE --> 17 <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
18 <!-- ============== HLAVICKA ============== --> 18 <!-- ============== HLAVICKA ============== -->
19 <div class="Header"> 19 <div class="Header">
20 <script type="text/javascript"> 20 <script type="text/javascript">
21 <!-- 21 <!--
22 SetRelativePath("../../../../../"); 22 SetRelativePath("../../../../../");
23 DrawHeader(); 23 DrawHeader();
24 // --> 24 // -->
25 </script> 25 </script>
26 <noscript> 26 <noscript>
27 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> 27 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
28 </noscript> 28 </noscript>
29 </div> 29 </div>
30 <!-- AUTOINCLUDE END --> 30 <!-- AUTOINCLUDE END -->
31   31  
32 <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE --> 32 <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
33 <!-- ============== MENU ============== --> 33 <!-- ============== MENU ============== -->
34 <div class="Menu"> 34 <div class="Menu">
35 <script type="text/javascript"> 35 <script type="text/javascript">
36 <!-- 36 <!--
37 SetRelativePath("../../../../../"); 37 SetRelativePath("../../../../../");
38 DrawMenu(); 38 DrawMenu();
39 // --> 39 // -->
40 </script> 40 </script>
41 <noscript> 41 <noscript>
42 <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p> 42 <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
43 </noscript> 43 </noscript>
44 </div> 44 </div>
45 <!-- AUTOINCLUDE END --> 45 <!-- AUTOINCLUDE END -->
46   46  
47 <!-- ============== TEXT ============== --> 47 <!-- ============== TEXT ============== -->
48 <div class="Text"> 48 <div class="Text">
49 <p class="Title"> 49 <p class="Title">
50 Programování procesorů ATMEL AVR 50 Programování procesorů ATMEL AVR
51 </p> 51 </p>
52 <p class=Autor> 52 <p class=Autor>
53 Milan Horkel 53 Milan Horkel
54 </p> 54 </p>
55 <p class="Subtitle"> 55 <p class="Subtitle">
56 Procesor bez programu je jako motor bez paliva. Tento text uvádí 56 Procesor bez programu je jako motor bez paliva. Tento text uvádí
57 přehled potřebných nástrojů pro napsání programu pro procesory AVR a 57 přehled potřebných nástrojů pro napsání programu pro procesory AVR a
58 pro jejich naprogramování. 58 pro jejich naprogramování.
59 </p> 59 </p>
60 <p> 60 <p>
61 <a href="../Programovani AVR.cs.pdf"><img class="NoBorder" 61 <a href="../Programovani AVR.cs.pdf"><img class="NoBorder"
62 src="../../../../../Web/PIC/FileIco_PDF.ico" 62 src="../../../../../Web/PIC/FileIco_PDF.ico"
63 alt="Acrobat">&nbsp;PDF verze</a> 63 alt="Acrobat">&nbsp;PDF verze</a>
64 </p> 64 </p>
65   65  
66 <h1> Programování procesoru </h1> 66 <h1> Programování procesoru </h1>
67   67  
68 <p> 68 <p>
69 Aby jednočipový mikrořadič dělal to, co od něho chceme je třeba udělat 69 Aby jednočipový mikrořadič dělal to, co od něho chceme je třeba udělat
70 dvě věci: 70 dvě věci:
71 </p> 71 </p>
72   72  
73 <ul> 73 <ul>
74 <li>Napsat program pro procesor a přeložit jej do strojového kódu </li> 74 <li>Napsat program pro procesor a přeložit jej do strojového kódu </li>
75 <li>Výsledný strojový kód naprogramovat do cílového procesoru </li> 75 <li>Výsledný strojový kód naprogramovat do cílového procesoru </li>
76 </ul> 76 </ul>
77   77  
78 <p> 78 <p>
79 Velkou výhodou procesorů ATMEL AVR je skutečnost, že obě výše zmíněné 79 Velkou výhodou procesorů ATMEL AVR je skutečnost, že obě výše zmíněné
80 činnosti můžeme zajistit pomocí free nástrojů a experimentovat tak 80 činnosti můžeme zajistit pomocí free nástrojů a experimentovat tak
81 můžeme bez dalších nákladů na vývojové nástroje. Část prostředků 81 můžeme bez dalších nákladů na vývojové nástroje. Část prostředků
82 pochází přímo od firmy ATMEL a část od GNU komunity. Jsou k dispozici 82 pochází přímo od firmy ATMEL a část od GNU komunity. Jsou k dispozici
83 tyto nástroje: 83 tyto nástroje:
84 </p> 84 </p>
85   85  
86 <ul> 86 <ul>
87 <li>Integrované prostředí a simulátor procesorů (ATMEL) </li> 87 <li>Integrované prostředí a simulátor procesorů (ATMEL) </li>
88 <li>Překladač jazyka C (GNU) </li> 88 <li>Překladač jazyka C (GNU) </li>
89 <li>Programátor procesorů (GNU) </li> 89 <li>Programátor procesorů (GNU) </li>
90 <li>Programovací kabel (GNU) </li> 90 <li>Programovací kabel (GNU) </li>
91 </ul> 91 </ul>
92   92  
93 <p> 93 <p>
94 Příslušné nástroje jsou pro Windows 98 až Windows XP, GNU nástroje 94 Příslušné nástroje jsou pro Windows 98 až Windows XP, GNU nástroje
95 samozřejmě i pro LINUX. Nástroje jsou přátelské a bez problémů funkční. 95 samozřejmě i pro LINUX. Nástroje jsou přátelské a bez problémů funkční.
96 Kromě těchto základních komponent jsou k dispozici i ladící nástroje. 96 Kromě těchto základních komponent jsou k dispozici i ladící nástroje.
97 </p> 97 </p>
98   98  
99 <p> 99 <p>
100 Kromě volných nástrojů existuje samozřejmě i spousta vysoce kvalitních 100 Kromě volných nástrojů existuje samozřejmě i spousta vysoce kvalitních
101 komerčních nástrojů renovovaných firem. Těmi se zde nebudeme zabývat i 101 komerčních nástrojů renovovaných firem. Těmi se zde nebudeme zabývat i
102 když pro vážnou práci mohou být vhodné (kvalita kódu, záruky, technická 102 když pro vážnou práci mohou být vhodné (kvalita kódu, záruky, technická
103 podpora, dokumentace a podobně). 103 podpora, dokumentace a podobně).
104 </p> 104 </p>
105   105  
106 <h2> Volné nástroje </h2> 106 <h2> Volné nástroje </h2>
107   107  
108 <h3> Integrované prostředí – AVR Studio </h3> 108 <h3> Integrované prostředí – AVR Studio </h3>
109   109  
110 <p> 110 <p>
111 <a href="http://www.atmel.com/">http://www.atmel.com</a> 111 <a href="http://www.atmel.com/">http://www.atmel.com</a>
112 </p> 112 </p>
113   113  
114 <p> 114 <p>
115 Jedná se o integrované vývojové prostředí pro vývoj programů pro 115 Jedná se o integrované vývojové prostředí pro vývoj programů pro
116 procesory ATMEL AVR (assembler, linker) s možností integrace překladačů 116 procesory ATMEL AVR (assembler, linker) s možností integrace překladačů
117 jazyka C/C++. Prostředí obsahuje rovněž simulátor procesorů AVR a přímo 117 jazyka C/C++. Prostředí obsahuje rovněž simulátor procesorů AVR a přímo
118 podporuje základní druhy ladících nástrojů ATMEL. 118 podporuje základní druhy ladících nástrojů ATMEL.
119 </p> 119 </p>
120   120  
121 <p> 121 <p>
122 Do AVR studia lze přímo integrovat GNU překladač jazyka C/C++ pro AVR 122 Do AVR studia lze přímo integrovat GNU překladač jazyka C/C++ pro AVR
123 procesory. Je vhodné nejprve nainstalovat WinAVR a teprve poté 123 procesory. Je vhodné nejprve nainstalovat WinAVR a teprve poté
124 instalovat AVR Studio. 124 instalovat AVR Studio.
125 </p> 125 </p>
126   126  
127 <p> 127 <p>
128 Balík AVR Studio potřebuje ke své činnosti IE5.0 (raději 6.0, nebo 128 Balík AVR Studio potřebuje ke své činnosti IE5.0 (raději 6.0, nebo
129 balík XML od MS). 129 balík XML od MS).
130 </p> 130 </p>
131   131  
132 <h3> Překladač C/C++ – WinAVR </h3> 132 <h3> Překladač C/C++ – WinAVR </h3>
133   133  
134 <p> 134 <p>
135 <a href="http://winavr.sourceforge.net/">http://winavr.sourceforge.net</a> 135 <a href="http://winavr.sourceforge.net/">http://winavr.sourceforge.net</a>
136 </p> 136 </p>
137   137  
138 <p> 138 <p>
139 Toto je připravený balík GNU nástrojů pro AVR procesory připravený pro 139 Toto je připravený balík GNU nástrojů pro AVR procesory připravený pro
140 instalaci do Windows (používá knihovny CIGWIN). Při instalaci balíku na 140 instalaci do Windows (používá knihovny CIGWIN). Při instalaci balíku na
141 WindowsNT/2000/XP je třeba instalaci provádět pod účtem administrátora 141 WindowsNT/2000/XP je třeba instalaci provádět pod účtem administrátora
142 jinak se nenastaví cesta do BIN adresáře tohoto balíku. 142 jinak se nenastaví cesta do BIN adresáře tohoto balíku.
143 </p> 143 </p>
144   144  
145 <p> 145 <p>
146 Překladač může fungovat sám o sobě nebo se může integrovat s balíkem 146 Překladač může fungovat sám o sobě nebo se může integrovat s balíkem
147 AVR Studio. 147 AVR Studio.
148 </p> 148 </p>
149   149  
150 <h3> AVRDUDE – programátor AVR procesorů </h3> 150 <h3> AVRDUDE – programátor AVR procesorů </h3>
151   151  
152 <p> 152 <p>
153 <a href="http://savannah.nongnu.org/projects/avrdude">http://savannah.nongnu.org/projects/avrdude</a><br> 153 <a href="http://savannah.nongnu.org/projects/avrdude">http://savannah.nongnu.org/projects/avrdude</a><br>
154 <a href="http://sourceforge.net/projects/avrdude-gui">http://sourceforge.net/projects/avrdude-gui</a> 154 <a href="http://sourceforge.net/projects/avrdude-gui">http://sourceforge.net/projects/avrdude-gui</a>
155 </p> 155 </p>
156   156  
157 <p> 157 <p>
158 Program AVRDUDE je jeden z volných programátorů procesorů AVR a je 158 Program AVRDUDE je jeden z volných programátorů procesorů AVR a je
159 součástí balíku WinAVR. K programu je připravena grafická nadstavba 159 součástí balíku WinAVR. K programu je připravena grafická nadstavba
160 AVRDUDE-GUI, která usnadňuje použití programu. 160 AVRDUDE-GUI, která usnadňuje použití programu.
161 </p> 161 </p>
162   162  
163 <p> 163 <p>
164 Program má svůj konfigurační soubor, ve kterém jsou nadefinovány jednak 164 Program má svůj konfigurační soubor, ve kterém jsou nadefinovány jednak
165 parametry mnoha programovacích kabelů (včetně čísel vývodů LPT portu 165 parametry mnoha programovacích kabelů (včetně čísel vývodů LPT portu
166 pro jednotlivé funkce) tak i parametry jednotlivých procesorů. 166 pro jednotlivé funkce) tak i parametry jednotlivých procesorů.
167 </p> 167 </p>
168   168  
169 <h4> Konfigurační slova </h4> 169 <h4> Konfigurační slova </h4>
170   170  
171 <p> 171 <p>
172 Současná verze má drobný problém při programování a čtení 172 Současná verze má drobný problém při programování a čtení
173 konfiguračních slov procesoru z grafické nadstavby (grafická nadstavba 173 konfiguračních slov procesoru z grafické nadstavby (grafická nadstavba
174 není ještě dodělaná a dle slov autora možná vznikne nová verze 174 není ještě dodělaná a dle slov autora možná vznikne nová verze
175 programu, která bude rovnou plně grafická). Při čtení slov se nepřenáší 175 programu, která bude rovnou plně grafická). Při čtení slov se nepřenáší
176 přečtená data do grafického programu a při zápisu se zadané hexa 176 přečtená data do grafického programu a při zápisu se zadané hexa
177 parametry chybně chápou jako jména souborů. Naštěstí se zápis do 177 parametry chybně chápou jako jména souborů. Naštěstí se zápis do
178 konfiguračních slov procesoru neprovádí často. 178 konfiguračních slov procesoru neprovádí často.
179 </p> 179 </p>
180   180  
181 <h4> Čtení konfiguračních slov </h4> 181 <h4> Čtení konfiguračních slov </h4>
182   182  
183 <p> 183 <p>
184 Konfigurační slova nelze číst z grafické nadstavby ale grafickou 184 Konfigurační slova nelze číst z grafické nadstavby ale grafickou
185 nadstavbu můžeme použít pro sestavení příkazové řádky, kterou pak jen 185 nadstavbu můžeme použít pro sestavení příkazové řádky, kterou pak jen
186 opravíme. Viz příklad, opravy jsou zvýrazněny: 186 opravíme. Viz příklad, opravy jsou zvýrazněny:
187 </p> 187 </p>
188   188  
189 <p> 189 <p>
190 <samp>"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:r:con:<b>i</b> -U hfuse:r:con:<b>i</b></samp> 190 <samp>"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:r:con:<b>i</b> -U hfuse:r:con:<b>i</b></samp>
191 </p> 191 </p>
192   192  
193 <p> 193 <p>
194 Přečtená data jsou ve formátu INTEL HEX (parametr i): 194 Přečtená data jsou ve formátu INTEL HEX (parametr i):
195 </p> 195 </p>
196   196  
197 <p> 197 <p>
198 <samp>:01000000<b>EF</b>10</samp> -- lfuse (spodní konfigurační slovo)<br> 198 <samp>:01000000<b>EF</b>10</samp> -- lfuse (spodní konfigurační slovo)<br>
199 <samp> :00000001FF<br> 199 <samp> :00000001FF<br>
200 :01000000<b>D9</b>26</samp> -- hfuse (horní konfigurační slovo)<br> 200 :01000000<b>D9</b>26</samp> -- hfuse (horní konfigurační slovo)<br>
201 <samp> :00000001FF</samp> 201 <samp> :00000001FF</samp>
202 </p> 202 </p>
203   203  
204 <p> 204 <p>
205 Příčinou je to, že program AVRDUDE vypisuje všechno do standardního 205 Příčinou je to, že program AVRDUDE vypisuje všechno do standardního
206 chybového výstupu a tak výpisy na zařízení CON pak padají do kanálu 206 chybového výstupu a tak výpisy na zařízení CON pak padají do kanálu
207 místo do AVRDUDE-GUI (který chytá jen chybové výstupy). 207 místo do AVRDUDE-GUI (který chytá jen chybové výstupy).
208 </p> 208 </p>
209   209  
210 <h4> Programování konfiguračních slov </h4> 210 <h4> Programování konfiguračních slov </h4>
211   211  
212 <p> 212 <p>
213 Pro přeprogramování konfiguračního slova vyžaduje AVRDUDE dodatečný 213 Pro přeprogramování konfiguračního slova vyžaduje AVRDUDE dodatečný
214 parametr „-u“. Je to z bezpečnostních důvodů aby nedošlo k 214 parametr „-u“. Je to z bezpečnostních důvodů aby nedošlo k
215 přeprogramování omylem. Pro zápis není třeba příkazovou řádku spouštět 215 přeprogramování omylem. Pro zápis není třeba příkazovou řádku spouštět
216 z konsole, stačí ji jen opravit dle příkladu: 216 z konsole, stačí ji jen opravit dle příkladu:
217 </p> 217 </p>
218   218  
219 <p> 219 <p>
220 <samp>"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:w:<b>0x</b>ef:<b>m</b></samp> 220 <samp>"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:w:<b>0x</b>ef:<b>m</b></samp>
221 </p> 221 </p>
222   222  
223 <p> 223 <p>
224 Doplněný parametr zajistí, že místo jména souboru je parametr chápán 224 Doplněný parametr zajistí, že místo jména souboru je parametr chápán
225 přímo jako hodnota (nutno doplnit 0x protože je hodnota hexadecimální). 225 přímo jako hodnota (nutno doplnit 0x protože je hodnota hexadecimální).
226 Výše uvedená řádka naprogramuje do procesoru ATmega8 pomocí kabelu typu 226 Výše uvedená řádka naprogramuje do procesoru ATmega8 pomocí kabelu typu
227 picoweb přes LPT1 spodní konfigurační slovo na hodnotu 0xEF (krystalový 227 picoweb přes LPT1 spodní konfigurační slovo na hodnotu 0xEF (krystalový
228 oscilátor). 228 oscilátor).
229 </p> 229 </p>
230   230  
231 <h3> Paralelní programovací kabel </h3> 231 <h3> Paralelní programovací kabel </h3>
232   232  
233 <p> 233 <p>
234 Nejjednodušší programátor procesorů AVR sestává z kabelu, který se 234 Nejjednodušší programátor procesorů AVR sestává z kabelu, který se
235 zapojuje do LPT portu počítače na jednom konci a do programovacího 235 zapojuje do LPT portu počítače na jednom konci a do programovacího
236 konektoru u procesoru na konci druhém. Kromě drátů neobsahuje žádnou 236 konektoru u procesoru na konci druhém. Kromě drátů neobsahuje žádnou
237 další elektroniku. Jedním z možných kabelů je tento: 237 další elektroniku. Jedním z možných kabelů je tento:
238 </p> 238 </p>
239   239  
240 <p> 240 <p>
241 <img width="258" height="326" src="Pictures/Programator.gif" 241 <img width="258" height="326" src="Pictures/Programator.gif"
242 alt="Schema programátoru"> 242 alt="Schema programátoru">
243 </p> 243 </p>
244   244  
245 <p> 245 <p>
246 Propojovací dráty je vhodné udělat přiměřené délky cca 1/2 metru. 246 Propojovací dráty je vhodné udělat přiměřené délky cca 1/2 metru.
247 Nezapomeňte výrazně označit vývod 1 ISP konektoru protože konektor nemá 247 Nezapomeňte výrazně označit vývod 1 ISP konektoru protože konektor nemá
248 žádný klíč. 248 žádný klíč.
249 </p> 249 </p>
250   250  
251 <p> 251 <p>
252 Při použití se zadává v programu AVRDUDE jako PicoWeb kabel. 252 Při použití se zadává v programu AVRDUDE jako PicoWeb kabel.
253 </p> 253 </p>
254   254  
255 <p> 255 <p>
256 Pokud máte nějaký jiný kabel/programátor je možné kouknout se do 256 Pokud máte nějaký jiný kabel/programátor je možné kouknout se do
257 konfiguračního souboru programu AVRDUDE a vybrat vhodný kabel nebo svůj 257 konfiguračního souboru programu AVRDUDE a vybrat vhodný kabel nebo svůj
258 kabel doplnit do konfigurace. 258 kabel doplnit do konfigurace.
259 </p> 259 </p>
260   260  
261 <h2> Konfigurační slova procesoru </h2> 261 <h2> Konfigurační slova procesoru </h2>
262   262  
263 <p> 263 <p>
264 Konfigurační slova procesoru určují (mimo jiné) jaký se použije 264 Konfigurační slova procesoru určují (mimo jiné) jaký se použije
265 oscilátor pro procesor. Pokud skutečná konfigurace neodpovídá 265 oscilátor pro procesor. Pokud skutečná konfigurace neodpovídá
266 naprogramovanému slovu (například je nastaven externí krystalový 266 naprogramovanému slovu (například je nastaven externí krystalový
267 oscilátor ale krystal není připojen) procesor se nerozběhne a nepůjde 267 oscilátor ale krystal není připojen) procesor se nerozběhne a nepůjde
268 ani přeprogramovat. Pozor tedy při programování konfiguračních slov 268 ani přeprogramovat. Pozor tedy při programování konfiguračních slov
269 procesoru. 269 procesoru.
270 </p> 270 </p>
271   271  
272 <p> 272 <p>
273 Jednotlivé procesory mají různá konfigurační slova a různý počet 273 Jednotlivé procesory mají různá konfigurační slova a různý počet
274 konfiguračních slov (například spodní a horní označená lfuse a hfuse). 274 konfiguračních slov (například spodní a horní označená lfuse a hfuse).
275 </p> 275 </p>
276   276  
277 </div> 277 </div>
278   278  
279 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE --> 279 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
280 <!-- ============== PATIČKA ============== --> 280 <!-- ============== PATIČKA ============== -->
281 <div class="Footer"> 281 <div class="Footer">
282 <script type="text/javascript"> 282 <script type="text/javascript">
283 <!-- 283 <!--
284 SetRelativePath("../../../../../"); 284 SetRelativePath("../../../../../");
285 DrawFooter(); 285 DrawFooter();
286 // --> 286 // -->
287 </script> 287 </script>
288 <noscript> 288 <noscript>
289 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p> 289 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
290 </noscript> 290 </noscript>
291 </div> 291 </div>
292 <!-- AUTOINCLUDE END --> 292 <!-- AUTOINCLUDE END -->
293   293  
294 </body> 294 </body>
295 </html> 295 </html>