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