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