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