Rev Author Line No. Line
331 miho 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
213 miho 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">
7 <meta name="description" content="Projekt MLAB, programování ATmega8">
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="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
11 <script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
12 <!-- AUTOINCLUDE END -->
13 </head>
14  
15 <body lang="cs">
16  
17 <!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
18 <!-- ============== HLAVICKA ============== -->
19 <div class="Header">
20 <script type="text/javascript">
21 <!--
22 SetRelativePath("../../../../../");
23 DrawHeader();
24 // -->
25 </script>
26 <noscript>
27 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
28 </noscript>
29 </div>
30 <!-- AUTOINCLUDE END -->
31  
32 <!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
33 <!-- ============== MENU ============== -->
34 <div class="Menu">
35 <script type="text/javascript">
36 <!--
37 SetRelativePath("../../../../../");
38 DrawMenu();
39 // -->
40 </script>
41 <noscript>
42 <p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
43 </noscript>
44 </div>
45 <!-- AUTOINCLUDE END -->
46  
47 <!-- ============== TEXT ============== -->
48 <div class="Text">
49 <p class="Title">
50 Programování procesorů ATMEL AVR
51 </p>
52 <p class=Autor>
53 Milan Horkel
54 </p>
55 <p class="Subtitle">
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
58 pro jejich naprogramování.
59 </p>
60 <p>
61 <a href="../Programovani AVR.cs.pdf"><img class="NoBorder"
62 src="../../../../../Web/PIC/FileIco_PDF.ico"
63 alt="Acrobat">&nbsp;PDF verze</a>
64 </p>
65  
66 <h1> Programování procesoru </h1>
67  
68 <p>
69 Aby jednočipový mikrořadič dělal to, co od něho chceme je třeba udělat
70 dvě věci:
71 </p>
72  
73 <ul>
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>
76 </ul>
77  
78 <p>
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
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
83 tyto nástroje:
84 </p>
85  
86 <ul>
87 <li>Integrované prostředí a simulátor procesorů (ATMEL) </li>
88 <li>Překladač jazyka C (GNU) </li>
89 <li>Programátor procesorů (GNU) </li>
90 <li>Programovací kabel (GNU) </li>
91 </ul>
92  
93 <p>
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í.
96 Kromě těchto základních komponent jsou k dispozici i ladící nástroje.
97 </p>
98  
99 <p>
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
102 když pro vážnou práci mohou být vhodné (kvalita kódu, záruky, technická
103 podpora, dokumentace a podobně).
104 </p>
105  
106 <h2> Volné nástroje </h2>
107  
108 <h3> Integrované prostředí – AVR Studio </h3>
109  
110 <p>
111 <a href="http://www.atmel.com/">http://www.atmel.com</a>
112 </p>
113  
114 <p>
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čů
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.
119 </p>
120  
121 <p>
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é
124 instalovat AVR Studio.
125 </p>
126  
127 <p>
128 Balík AVR Studio potřebuje ke své činnosti IE5.0 (raději 6.0, nebo
129 balík XML od MS).
130 </p>
131  
132 <h3> Překladač C/C++ – WinAVR </h3>
133  
134 <p>
135 <a href="http://winavr.sourceforge.net/">http://winavr.sourceforge.net</a>
136 </p>
137  
138 <p>
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
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.
143 </p>
144  
145 <p>
146 Překladač může fungovat sám o sobě nebo se může integrovat s balíkem
147 AVR Studio.
148 </p>
149  
150 <h3> AVRDUDE – programátor AVR procesorů </h3>
151  
152 <p>
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>
155 </p>
156  
157 <p>
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
160 AVRDUDE-GUI, která usnadňuje použití programu.
161 </p>
162  
163 <p>
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
166 pro jednotlivé funkce) tak i parametry jednotlivých procesorů.
167 </p>
168  
169 <h4> Konfigurační slova </h4>
170  
171 <p>
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
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áší
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
178 konfiguračních slov procesoru neprovádí často.
179 </p>
180  
181 <h4> Čtení konfiguračních slov </h4>
182  
183 <p>
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
186 opravíme. Viz příklad, opravy jsou zvýrazněny:
187 </p>
188  
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>
191 </p>
192  
193 <p>
194 Přečtená data jsou ve formátu INTEL HEX (parametr i):
195 </p>
196  
197 <p>
198 <samp>:01000000<b>EF</b>10</samp> -- lfuse (spodní konfigurační slovo)<br>
199 <samp> :00000001FF<br>
200 :01000000<b>D9</b>26</samp> -- hfuse (horní konfigurační slovo)<br>
201 <samp> :00000001FF</samp>
202 </p>
203  
204 <p>
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
207 místo do AVRDUDE-GUI (který chytá jen chybové výstupy).
208 </p>
209  
210 <h4> Programování konfiguračních slov </h4>
211  
212 <p>
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
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:
217 </p>
218  
219 <p>
220 <samp>"avrdude" -p m8 -c picoweb -P lpt1 -U lfuse:w:<b>0x</b>ef:<b>m</b></samp>
221 </p>
222  
223 <p>
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í).
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ý
228 oscilátor).
229 </p>
230  
231 <h3> Paralelní programovací kabel </h3>
232  
233 <p>
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
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:
238 </p>
239  
240 <p>
241 <img width="258" height="326" src="Pictures/Programator.gif"
242 alt="Schema programátoru">
243 </p>
244  
245 <p>
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á
248 žádný klíč.
249 </p>
250  
251 <p>
252 Při použití se zadává v programu AVRDUDE jako PicoWeb kabel.
253 </p>
254  
255 <p>
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
258 kabel doplnit do konfigurace.
259 </p>
260  
261 <h2> Konfigurační slova procesoru </h2>
262  
263 <p>
264 Konfigurační slova procesoru určují (mimo jiné) jaký se použije
265 oscilátor pro procesor. Pokud skutečná konfigurace neodpovídá
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
268 ani přeprogramovat. Pozor tedy při programování konfiguračních slov
269 procesoru.
270 </p>
271  
272 <p>
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).
275 </p>
276  
277 </div>
278  
279 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
280 <!-- ============== PATIČKA ============== -->
281 <div class="Footer">
282 <script type="text/javascript">
283 <!--
284 SetRelativePath("../../../../../");
285 DrawFooter();
286 // -->
287 </script>
288 <noscript>
289 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
290 </noscript>
291 </div>
292 <!-- AUTOINCLUDE END -->
293  
294 </body>
295 </html>