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">
225 miho 2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> PICICD01A </title>
6 <meta name="keywords" content="stavebnice MLAB in circuit debugger icd debugger MICROCHIP PIC">
7 <meta name="description" content="Projekt MLAB, ICD Debugger pro proceosry PIC">
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 <span lang="en">In Circuit Debugger</span> pro procesory PIC
51 </p>
52 <p class=Autor>
53 Milan Horkel
54 </p>
55 <p class="Subtitle">
56 Modul PICICD je jednoduchý programátor a ICD pro procesory PIC firmy
57 MICROCHIP. Modul je kompatibilní s MPLAB™ ICD firmy MICROCHIP a je jej
58 také možno použít s překladačem PCW firmy CCS. Umožňuje programování
59 zapájených procesorů PIC, krokování programů, nastavování BreakPointu a
60 čtení a zápis z a do vnitřních pamětí laděného procesoru PIC.
61 </p>
62 <p class="Subtitle">
63 <img width="393" height="307" src="Pictures/image001.jpg"
64 alt="Pohled na debugger">
65 </p>
66 <p>
67 <a href="../PICICD01A.cs.pdf"><img class="NoBorder"
68 src="../../../../../Web/PIC/FileIco_PDF.ico"
69 alt="Acrobat">&nbsp;PDF verze</a>
70 </p>
71  
72 <h1> Technické údaje </h1>
73  
74 <table>
75 <tr>
76 <th> Parametr </th>
77 <th> Hodnota </th>
78 <th> Poznámka </th>
79 </tr>
80 <tr>
81 <td> Napájení </td>
82 <td> 2.0 až 5.5V </td>
83 <td> Napájí se z cílového systému </td>
84 </tr>
85 <tr>
86 <td> Spotřeba </td>
87 <td> Max. cca50mA </td>
88 <td> </td>
89 </tr>
90 <tr>
91 <td> Interface </td>
92 <td> RS232 (9600Bd až 115200Bd) </td>
93 <td> Kabel 1:1 samice DB9 </td>
94 </tr>
95 <tr>
96 <td> Kompatibilita </td>
97 <td> MPLAB™ ICD </td>
98 <td> MPLAB 5.x (řada PIC16F)<br>
99 CCS PCW 3.x (řada PIC16F a PIC18F) </td>
100 </tr>
101 <tr>
102 <td> Rozměry </td>
103 <td> 65x50x20mm </td>
104 <td> Výška nad nosnou deskou </td>
105 </tr>
106 </table>
107  
108 <h1> Popis konstrukce </h1>
109  
110 <h2> Úvodem </h2>
111  
112 <p>
113 Konstrukce modulu přímo vychází z MPLAB™ ICD firmy MICROCHIP tak, jak
114 je popsán v dokumentu DS51184 a s dodatkem v dokumentu ETN#21. Podle
115 informací nalezených na WWW má původní konstrukce potíže s generováním
116 programovacího napětí, proto byla tato část poněkud modifikována tak,
117 aby bylo zajištěno správné programovací napětí v plném rozmezí
118 dovolených napájecích napětí.
119 </p>
120  
121 <h2> Zapojení modulu </h2>
122  
123 <p>
124 Modul ICD je napájen z cílového systému (prostřednictvím ISP
125 konektoru). Napájecí napětí může být v rozsahu 2V až 5V. Programovací
126 napětí si ICD vyrábí sám pomocí měniče.
127 </p>
128  
129 <p>
130 Základem ICD je procesor U1 PIC16LF876, který komunikuje s počítačem PC
131 prostřednictvím sériové linky a řídí obvody pro programování procesorů
132 prostřednictvím ISP konektoru. Samotný procesor se poprvé programuje
133 prostřednictvím jeho ISP konektoru J3, další přeprogramování si již
134 procesor provádí sám. Může se ale stát, že si uživatel nahraje do
135 procesoru nesprávný firmware a pak je třeba použít opět vnějšího
136 programátoru na naprogramování.
137 </p>
138  
139 <p>
140 <img width="560" height="440" src="Pictures/image002.gif"
141 alt="Zapojení procesorové části">
142 </p>
143  
144 <p>
145 Komunikace s počítačem PC zajišťuje obvod U2 MAX232, který převádí
146 napěťové úrovně mezi TTL a RS232. Pokud se provozuje ICD s napájecím
147 napětím menším než asi 4V je třeba ověřit maximální komunikační
148 rychlost, která ještě bude správně pracovat. Za příznivých podmínek
149 může fungovat rychlost 115200Bd i při napájecím napětí 2V.
150 </p>
151  
152 <p>
153 <img width="458" height="435" src="Pictures/image003.gif"
154 alt="Zapojení převodníku pro RS232">
155 </p>
156  
157 <p>
158 Cílové zařízení se připojuje prostřednictvím ISP konektoru J2. Pokud se
159 použije funkce monitoru použije se i vývod označený PGM, jinak může
160 zůstat volný. ICD je z cílového systému napájen. Zenerova dioda D10 je
161 ochrana před přepětím a přepólováním.
162 </p>
163  
164 <p>
165 LED dioda D8 slouží současně jako indikační a jako zdroj referenčního
166 napětí pro hrubé měření napájecího napětí. Přesnost je pochybná ale
167 programové vybavení s tímto řešením počítá.
168 </p>
169  
170 <p>
171 Zdroj programovacího napětí získává napětí v měniči s tranzistorem Q1,
172 který je řízen z PWM výstupu procesoru U1. Obvod měniče byl
173 <i>modifikován</i> tak, aby poskytoval stabilní napětí +16V v plném
174 rozmezí napájení ICD. Byla zmenšena indukčnost cívky L1 čímž byl zvýšen
175 výkon měniče. Byla doplněna zpětná vazba Zenerovou diodou D4/D3 mezi
176 kolektor a bázi tranzistoru, tím je omezeno generované napětí měniče
177 právě na +16V. <i>Dále byla změněna vazba báze tranzistoru Q1 s
178 procesorem na střídavou vazbu aby nemohlo dojít k fatálnímu stavu
179 zaseknutí procesoru U1 v okamžiku, kdy je na PWM výstupu stav H (pak by
180 byl Q1 sepnutý a zkratoval by napájení a procesor by nebyl schopen
181 provést RESET a mohl by Q1 nebo L1 shořet).</i>
182 </p>
183  
184 <p>
185 Za měničem následuje standardní lineární stabilizátor s U3 podepřený
186 diodou D7 tak, aby výsledné napětí za stabilizátorem bylo cca. +12.7V.
187 </p>
188  
189 <p>
190 <img width="378" height="330" src="Pictures/image004.gif"
191 alt="Zapojení ISP konektoru">
192 <img width="188" height="216" src="Pictures/image005.gif"
193 alt="Zapojení zdroje referene">
194 <img width="622" height="276" src="Pictures/image006.gif"
195 alt="Zapojení zdroje Vpp">
196 </p>
197  
198 <p>
199 Posledním obvodem je obvod pro spínání programovacího napětí a aktivaci
200 signálu RESET. Tranzistory Q2 a Q3 spínají VPP (cca. +12.7V) a
201 tranzistor Q4 aktivuje RESET. Odpory R18 a R21 jsou ochranné, odpor R22
202 a dioda D9 zajišťují stav H na vývodu #MCLR cílového systému.
203 </p>
204  
205 <p>
206 Odporový dělič R23/R24 slouží k měření (kontrole) velikost napětí VPP.
207 </p>
208  
209 <p>
210 Odporový dělič R25/R26 slouží k měření napájecího napětí.
211 </p>
212  
213 <p>
214 <img width="608" height="406" src="Pictures/image007.gif"
215 alt="Schéma spínače Vpp">
216 </p>
217  
218 <h2> Mechanická konstrukce </h2>
219  
220 <p>
221 Modul je proveden standardním způsobem. V rozích má šrouby a sloupky
222 pro připevnění na nosnou desku.
223 </p>
224  
225 <h1> Osazení a oživení </h1>
226  
227 <h2> Osazení </h2>
228  
229 <p>
230 <img width="386" height="321" src="Pictures/image008.jpg"
231 alt="Osazení, strana spojů">
232 <img width="407" height="307" src="Pictures/image009.jpg"
233 alt="Osazení, strana součástek">
234 </p>
235  
236 <p>
237 Dioda D5 byla do zapojení přidána dodatečně a nejsou pro ni plošky na
238 plošném spoji. Snadno se vejde vedle R11.
239 </p>
240  
241 <table class="Soupiska">
242 <tr>
243 <th> Reference </th>
244 <th> Hodnota </th>
245 </tr>
246 <tr>
247 <th colspan="2"> Odpory SMD </th>
248 </tr>
249 <tr>
250 <td> R18 </td>
251 <td> 33 </td>
252 </tr>
253 <tr>
254 <td> R2, R3, R4, R5, R6, R7, R8, R12, R21 </td>
255 <td> 100 </td>
256 </tr>
257 <tr>
258 <td> R13, R28, R30, R32 </td>
259 <td> 330 </td>
260 </tr>
261 <tr>
262 <td> R9, R10, R23 </td>
263 <td> 1k </td>
264 </tr>
265 <tr>
266 <td> R22, R25 </td>
267 <td> 4k7 </td>
268 </tr>
269 <tr>
270 <td> R11, R14,R15, R16, R17, R19, R20, R24, R26, R27, R29, R31 </td>
271 <td> 10k </td>
272 </tr>
273 <tr>
274 <td> R1 </td>
275 <td> 22K </td>
276 </tr>
277 <tr>
278 <th colspan="2"> Kondenzátory keramické SMD </th>
279 </tr>
280 <tr>
281 <td> C2, C3 </td>
282 <td> 22pF </td>
283 </tr>
284 <tr>
285 <td> C1, C4, C5, C6, C7, C8, C9, C10, C12, C13 </td>
286 <td> 100nF </td>
287 </tr>
288 <tr>
289 <th colspan="2"> Kondenzátory elektrolytické drátové </th>
290 </tr>
291 <tr>
292 <td> C11, C14 </td>
293 <td> 47uF/25V </td>
294 </tr>
295 <tr>
296 <th colspan="2"> Tlumivky axiální </th>
297 </tr>
298 <tr>
299 <td> L1 </td>
300 <td> 330uH </td>
301 </tr>
302 <tr>
303 <th colspan="2"> Krystaly </th>
304 </tr>
305 <tr>
306 <td> X1 </td>
307 <td> 3.6864MHz </td>
308 </tr>
309 <tr>
310 <th colspan="2"> Diody SMD </th>
311 </tr>
312 <tr>
313 <td> D1, D2, D4, D6, D7, D9 </td>
314 <td> 1N4148SMD </td>
315 </tr>
316 <tr>
317 <td> D5 </td>
318 <td> BAT48SMD </td>
319 </tr>
320 <tr>
321 <td> D10 </td>
322 <td> BZV55C5.6SMD </td>
323 </tr>
324 <tr>
325 <td> D3 </td>
326 <td> BZV55C16SMD </td>
327 </tr>
328 <tr>
329 <th colspan="2"> Diody LED </th>
330 </tr>
331 <tr>
332 <td> D8 </td>
333 <td> LED3mm </td>
334 </tr>
335 <tr>
336 <th colspan="2"> Tranzistory SMD </th>
337 </tr>
338 <tr>
339 <td> Q1, Q2, Q4 </td>
340 <td> BC817-25SMD </td>
341 </tr>
342 <tr>
343 <td> Q3 </td>
344 <td> BC807-25SMD </td>
345 </tr>
346 <tr>
347 <th colspan="2"> Integrované obvody </th>
348 </tr>
349 <tr>
350 <td> U1 </td>
351 <td> PIC16LF876-04/SO </td>
352 </tr>
353 <tr>
354 <td> U2 </td>
355 <td> MAX232SMD </td>
356 </tr>
357 <tr>
358 <td> U3 </td>
359 <td> LM78L12M_SO8 </td>
360 </tr>
361 <tr>
362 <th colspan="2"> Mechanické součástky </th>
363 </tr>
364 <tr>
365 <td> J1 </td>
366 <td> RS232DB9M </td>
367 </tr>
368 <tr>
369 <td> J2, J3 </td>
370 <td> JUMP 8 </td>
371 </tr>
372 </table>
373  
374 <h2> Oživení </h2>
375  
376 <p>
377 Do procesoru U1 je třeba naprogramovat nějaký vhodný firmware. Vhodnými
378 kandidáty jsou firmwary jednak firmy MICROCHIP (z balíku MPLAB verze
379 5.x) a dále firmy CCS (z balíku překladače PCW nebo ICS). Je třeba dát
380 pozor na to, který firmware použít. Tento hardware je kompatibilní s
381 ICD firmy MICROCHIP a má procesor PIC16LF876 a krystal 3.6864MHz.
382 </p>
383  
384 <p>
385 Kabel RS232 je zapojen 1:1 (tedy odpovídající si piny jsou spojeny,
386 není to křížený kabel).
387 </p>
388  
389 <h3> Oživení pro MICROCHIP MPLAB </h3>
390  
391 <p>
392 Do procesoru U1 se externím programátorem naprogramuje firmware ze
393 souboru MPL876.HEX z instalačního adresáře balíku MICROCHIP MPLAB verze
394 5.x. Firmware umožňuje komunikaci jen rychlostí 19200Bd a 57600Bd.
395 </p>
396  
397 <h3> Oživení pro CCS PCW </h3>
398  
399 <p>
400 Nejsnazší je naprogramovat do U1 externím programátorem zavaděč, který
401 se nachází v instalačním adresáři překladače PCW (stačí i demoverze) v
402 souboru BOOLOAD.HEX. Pak je již ICD funkční a při prvním použití v
403 programu PCW nám program nabídne provedení aktualizaca firmwaru. K
404 aktualizaci již není potřeba externí programátor. Místo zavaděče může
405 být naprogramován i firmware pro MPLAB.
406 </p>
407  
408 <p>
409 Při aktualizaci vybereme variantu MICROCHIP MPLAB ICD a variantu
410 firmwaru pro programování požadované řady procesorů PIC (PIC16F a
411 PIC18F mají samostatné varianty firmwaru).
412 </p>
413  
414 <p>
415 V případě potřeby je možné nahrát do ICD firmware pro MPLAB™ ICD
416 (soubor MPL876.HEX z instalačního adresáře balíku MPLAB verze 5.x).
417 Poku
418 </p>
419  
420 <p>
421 Pokud do ICD nahrajeme chybnou verzi firmwaru (například firmware pro
422 jinou frekvenci krystalu) nezbývá než opět použít externí programátor a
423 přehrát firmware U1 z vnějšku.
424 </p>
425  
426 <p>
427 Po výměně krystalu je možné použít i firmware pro kmitočet 20MHz ale
428 pak ICD nebude pracovat při sníženém napájecím napětí. Pak nahráváme
429 firmware pro ICD-S pro 20MHz.
430 </p>
431  
432 <h3> Kontrola </h3>
433  
434 <p>
435 Po naprogramování firmwaru je vhodné zkontrolovat funkčnost ICD s
436 reálným procesorem a aplikací.
437 </p>
438  
439 <p>
440 Závěrem je vhodné zkontrolovat, zda měnič vyrábí správné programovací
441 napětí. Kontroluje se napětí na vodiči +16V zda má +16V. Toto napětí se
442 negeneruje trvale ale generuje se například během programování.
443 </p>
444  
445 <h1> Programové vybavení </h1>
446  
447 <p>
448 Programové vybavení za nás napsaly firmy MICROCHIP a CCS. Jedná se o
449 balíky MICROCHIP MPLAB verze 5.x (starší verze, volná verze) a
450 překladač jazyka C firmy CCS PCW (a program pro programování procesorů
451 CCS ICD-S, komerční program, ICD funguje i v demoverzi).
452 </p>
453  
454 <p>
455 Podpora ICD je k dispozici jen u novějších procesorů PIC. HW podpora
456 ICD zahrnuje hardware, který umožňuje provádět tyto ladící zásahy:
457 </p>
458  
459 <ul>
460 <li>Krokovat program po instrukcích </li>
461 <li>Spustit program s nastavenou jednou zarážkou (BreakPoint registr je jen 1) </li>
462 <li>Zastavit běžící program </li>
463 </ul>
464  
465 <p>
466 Vše ostatní již zajišťuje kousek programu, který se musí přidat k
467 cílové aplikaci (zabere pár buněk paměti RAM, řádově dvě stovky
468 instrukcí a jednu úroveň zásobníku). Přidání správného obslužného
469 programu do aplikace zajišťuje software sám (volbou aktivace ICD). Na
470 první adrese programu musí být instrukce NOP.
471 </p>
472  
473 <p>
474 Hardwarová podpora ICD procesorů PIC16F je popsána v dokumentu
475 MICROCHIP DS51241.
476 </p>
477  
478 <h1> Chyby a náměty </h1>
479  
480 <p>
481 Dioda D5 byla do zapojení přidána dodatečně a nejsou pro ni plošky na
482 plošném spoji.
483 </p>
484  
485 <p>
486 Na plošném spoji by se hodil napájecí hřebínek.
487 </p>
488  
489 <p>
490 Kabel RS232 by byl šikovnější, kdyby byl křížený (null-modem) protože
491 takový kabel je nejběžnější a nejužitečnější.
492 </p>
493  
494 </div>
495  
496 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
497 <!-- ============== PATIČKA ============== -->
498 <div class="Footer">
499 <script type="text/javascript">
500 <!--
501 SetRelativePath("../../../../../");
502 DrawFooter();
503 // -->
504 </script>
505 <noscript>
506 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
507 </noscript>
508 </div>
509 <!-- AUTOINCLUDE END -->
510  
511 </body>
512 </html>