Rev Author Line No. Line
225 miho 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3c.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5 <title> PICICD01B </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="410" height="308" src="Pictures/image001.jpg"
64 alt="Pohled na debugger">
65 </p>
66 <p>
67 <a href="../PICICD01B.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 DB9 (prodlužovací) </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 modifikována tak, aby bylo
117 zajištěno správné programovací napětí v plném rozmezí dovolených
118 napájecích napětí modulu.
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. Pokud nemá
126 cílové zařízení vlastní zdroj, je možné napájení přivádět
127 prostřednictvím konektoru J4. Programovací napětí (cca. 12.7V) si ICD
128 vyrábí sám pomocí měniče.
129 </p>
130  
131 <p>
132 Základem ICD je procesor U1 PIC16LF876, který komunikuje s počítačem PC
133 prostřednictvím sériové linky a řídí obvody pro programování procesorů
134 prostřednictvím ISP konektoru. Samotný procesor se poprvé programuje
135 prostřednictvím jeho ISP konektoru J3, další přeprogramování si již
136 procesor provádí sám. Může se ale stát, že uživatel nahraje do
137 procesoru nesprávný firmware a pak je třeba použít opět vnějšího
138 programátoru na přeprogramování.
139 </p>
140  
141 <p>
142 <img width="560" height="440" src="Pictures/image002.gif"
143 alt="Zapojení procesorové části">
144 </p>
145  
146 <p>
147 Komunikace s počítačem PC zajišťuje obvod U2 MAX232, který převádí
148 napěťové úrovně mezi TTL a RS232. Pokud se provozuje ICD s napájecím
149 napětím menším než asi 4V je třeba ověřit maximální komunikační
150 rychlost, která ještě bude správně pracovat. Za příznivých podmínek
151 může fungovat rychlost 115200Bd i při napájecím napětí 2V.
152 </p>
153  
154 <p>
155 <img width="474" height="435" src="Pictures/image003.gif"
156 alt="Zapojení převodníku RS232">
157 </p>
158  
159 <p>
160 Cílové zařízení se připojuje prostřednictvím ISP konektoru J2. Pokud se
161 použije funkce monitoru použije se i vývod označený PGM, jinak může
162 zůstat volný. ICD je obvykle napájen z cílového systému prostřednictvím
163 programovacího konektoru. Zenerova dioda D10 je ochrana před přepětím a
164 přepólováním.
165 </p>
166  
167 <p>
168 Zelená LED dioda D8 slouží současně jako indikační a jako zdroj
169 referenčního napětí pro hrubé měření napájecího napětí. Přesnost je
170 pochybná ale programové vybavení s tímto řešením počítá.
171 </p>
172  
173 <p>
174 Zdroj programovacího napětí získává napětí v měniči s tranzistorem Q1,
175 který je řízen z PWM výstupu procesoru U1. Obvod měniče byl
176 <i>modifikován</i> tak, aby poskytoval stabilní napětí +16V na vstupu
177 stabilizátoru U3 v plném rozmezí napájení ICD. Byla zmenšena indukčnost
178 cívky L1 čímž byl zvýšen výkon měniče. Byla doplněna zpětná vazba
179 Zenerovou diodou D4/D3 mezi kolektor a bázi tranzistoru, tím je omezeno
180 generované napětí měniče právě na +16V. <i>Dále byla změněna vazba báze
181 tranzistoru Q1 s procesorem na střídavou vazbu aby nemohlo dojít k
182 fatálnímu stavu zaseknutí procesoru U1 v okamžiku, kdy je na PWM
183 výstupu stav H (pak by byl Q1 sepnutý a zkratoval by napájení a
184 procesor by nebyl schopen provést RESET a mohl by Q1 nebo L1
185 shořet).</i>
186 </p>
187  
188 <p>
189 Za měničem následuje standardní lineární stabilizátor s U3 podepřený
190 diodou D7 tak, aby výsledné napětí za stabilizátorem bylo cca. +12.7V.
191 </p>
192  
193 <p>
194 <img width="378" height="370" src="Pictures/image004.gif"
195 alt="Zapojení ISP konetoru">
196 <img width="188" height="216" src="Pictures/image005.gif"
197 alt="Zdroj Vref">
198 <img width="622" height="276" src="Pictures/image006.gif"
199 alt="Zdroj Vpp">
200 </p>
201  
202 <p>
203 Posledním obvodem je obvod pro spínání programovacího napětí a aktivaci
204 signálu RESET. Tranzistory Q2 a Q3 spínají VPP (cca. +12.7V) a
205 tranzistor Q4 aktivuje RESET. Odpory R18 a R21 jsou ochranné, odpor R22
206 a dioda D9 zajišťují stav H na vývodu #MCLR cílového systému.
207 </p>
208  
209 <p>
210 Odporový dělič R23/R24 slouží k měření (kontrole) velikost napětí VPP.
211 </p>
212  
213 <p>
214 Odporový dělič R25/R26 slouží k měření napájecího napětí.
215 </p>
216  
217 <p>
218 <img width="608" height="406" src="Pictures/image007.gif"
219 alt="Zapojení spínače Vpp">
220 </p>
221  
222 <h2> Mechanická konstrukce </h2>
223  
224 <p>
225 Modul je proveden standardním způsobem. V rozích má šrouby a sloupky
226 pro připevnění na nosnou desku.
227 </p>
228  
229 <p>
230 <img width="478" height="379" src="Pictures/image008.jpg"
231 alt="Detailní pohled">
232 </p>
233  
234 <h1> Osazení a oživení </h1>
235  
236 <h2> Osazení </h2>
237  
238 <p>
239 Zkontrolujte zejména orientaci U1.
240 </p>
241  
242 <p>
243 <img width="402" height="302" src="Pictures/image009.jpg"
244 alt="Osazení, strana součástí">
245 <img width="387" height="321" src="Pictures/image010.jpg"
246 alt="Osazení, strana spojů">
247 </p>
248  
249 <table class="Soupiska">
250 <tr>
251 <th> Reference </th>
252 <th> Hodnota </th>
253 </tr>
254 <tr>
255 <th colspan="2"> Odpory SMD </th>
256 </tr>
257 <tr>
258 <td> R18 </td>
259 <td> 33 </td>
260 </tr>
261 <tr>
262 <td> R2, R3, R4, R5, R6, R7, R8, R12, R21 </td>
263 <td> 100 </td>
264 </tr>
265 <tr>
266 <td> R13, R28, R30, R32 </td>
267 <td> 330 </td>
268 </tr>
269 <tr>
270 <td> R9, R10, R23 </td>
271 <td> 1k </td>
272 </tr>
273 <tr>
274 <td> R22, R25 </td>
275 <td> 4k7 </td>
276 </tr>
277 <tr>
278 <td> R11, R14,R15, R16, R17, R19, R20, R24, R26, R27, R29, R31 </td>
279 <td> 10k </td>
280 </tr>
281 <tr>
282 <td> R1 </td>
283 <td> 22K </td>
284 </tr>
285 <tr>
286 <th colspan="2"> Kondenzátory keramické SMD </th>
287 </tr>
288 <tr>
289 <td> C2, C3 </td>
290 <td> 22pF </td>
291 </tr>
292 <tr>
293 <td> C1, C4, C5, C6, C7, C8, C9, C10, C12, C13 </td>
294 <td> 100nF </td>
295 </tr>
296 <tr>
297 <th colspan="2"> Kondenzátory elektrolytické drátové </th>
298 </tr>
299 <tr>
300 <td> C11, C14 </td>
301 <td> 47uF/25V </td>
302 </tr>
303 <tr>
304 <th colspan="2"> Tlumivky axiální </th>
305 </tr>
306 <tr>
307 <td> L1 </td>
308 <td> 330uH </td>
309 </tr>
310 <tr>
311 <th colspan="2"> Krystaly </th>
312 </tr>
313 <tr>
314 <td> X1 </td>
315 <td> 3.6864MHz </td>
316 </tr>
317 <tr>
318 <th colspan="2"> Diody SMD </th>
319 </tr>
320 <tr>
321 <td> D1, D2, D4, D6, D7, D9 </td>
322 <td> 1N4148SMD </td>
323 </tr>
324 <tr>
325 <td> D5 </td>
326 <td> BAT48SMD </td>
327 </tr>
328 <tr>
329 <td> D10 </td>
330 <td> BZV55C5.6SMD </td>
331 </tr>
332 <tr>
333 <td> D3 </td>
334 <td> BZV55C16SMD </td>
335 </tr>
336 <tr>
337 <th colspan="2"> Diody LED </th>
338 </tr>
339 <tr>
340 <td> D8 </td>
341 <td> LED3mm zelená </td>
342 </tr>
343 <tr>
344 <th colspan="2"> Tranzistory SMD </th>
345 </tr>
346 <tr>
347 <td> Q1, Q2, Q4 </td>
348 <td> BC817-25SMD </td>
349 </tr>
350 <tr>
351 <td> Q3 </td>
352 <td> BC807-25SMD </td>
353 </tr>
354 <tr>
355 <th colspan="2"> Integrované obvody </th>
356 </tr>
357 <tr>
358 <td> U1 </td>
359 <td> PIC16LF876-04/SO </td>
360 </tr>
361 <tr>
362 <td> U2 </td>
363 <td> MAX232SMD </td>
364 </tr>
365 <tr>
366 <td> U3 </td>
367 <td> LM78L12M_SO8 </td>
368 </tr>
369 <tr>
370 <th colspan="2"> Mechanické součástky </th>
371 </tr>
372 <tr>
373 <td> J1 </td>
374 <td> RS232DB9M </td>
375 </tr>
376 <tr>
377 <td> J2, J3 </td>
378 <td> JUMP 8 </td>
379 </tr>
380 <tr>
381 <td> J4 </td>
382 <td> JUMP 2x3 </td>
383 </tr>
384 </table>
385  
386 <h2> Oživení </h2>
387  
388 <p>
389 Do procesoru U1 je třeba naprogramovat firmware. Vhodnými kandidáty
390 jsou firmwary jednak firmy MICROCHIP (z balíku MPLAB verze 5.x) a dále
391 firmwary firmy CCS (z balíku překladače PCW nebo ICS). Je třeba dát
392 pozor na to, který firmware použít. Tento hardware je kompatibilní s
393 ICD firmy MICROCHIP a má procesor PIC16LF876 a krystal 3.6864MHz.
394 </p>
395  
396 <p>
397 Kabel RS232 je zapojen 1:1 (tedy odpovídající si piny jsou spojeny,
398 jedná se o prodlužovací kabel). Zařízení je také možno připojit přímo
399 na USB-RS232 adaptér.
400 </p>
401  
402 <p>
403 <img width="429" height="188" src="Pictures/image011.jpg"
404 alt="Provedení propojovacího kabelu">
405 </p>
406  
407 <h3> Oživení pro MPLAB firmy MICROCHIP </h3>
408  
409 <p>
410 Do procesoru U1 se externím programátorem naprogramuje firmware ze
411 souboru MPL876.HEX z instalačního adresáře balíku MICROCHIP MPLAB verze
412 5.x. Firmware umožňuje komunikaci jen rychlostí 19200Bd a 57600Bd.
413 </p>
414  
415 <p>
416 Pokud je v ICD firmware pro PCW může se též použít program ICD do firmy
417 CCS (není pak potřeba použít externí programátor).
418 </p>
419  
420 <h3> Oživení pro PCW firmy CCS </h3>
421  
422 <p>
423 Nejsnazší je naprogramovat do U1 externím programátorem zavaděč, který
424 se nachází v instalačním adresáři překladače PCW (stačí i demoverze) v
425 souboru BOOLOAD.HEX. Pak je již ICD funkční a při prvním použití v
426 programu PCW nám program nabídne provedení aktualizace firmwaru. K
427 aktualizaci již není potřeba externí programátor. Místo zavaděče může
428 být naprogramován i firmware pro MPLAB.
429 </p>
430  
431 <p>
432 Pokud nám program PCW nenabídne aktualizaci firmwaru, lze aktualizaci
433 provést také samostatným programem pro ovládání ICD, který se jmenuje
434 ICD a lze jej volně stáhnout ze stránek firmy CCS.
435 </p>
436  
437 <p>
438 Při aktualizaci firmwaru vybereme variantu MICROCHIP MPLAB ICD a
439 variantu firmwaru pro programování požadované řady procesorů PIC
440 (PIC16F a PIC18F mají samostatné varianty firmwaru).
441 </p>
442  
443 <p>
444 V případě potřeby je možné nahrát do ICD firmware pro MPLAB™ ICD
445 (soubor MPL876.HEX z instalačního adresáře balíku MPLAB verze 5.x).
446 </p>
447  
448 <p>
449 Pokud do ICD nahrajeme chybnou verzi firmwaru (například firmware pro
450 jinou frekvenci krystalu) nezbývá než opět použít externí programátor a
451 přehrát firmware U1 z vnějšku.
452 </p>
453  
454 <p>
455 Po výměně krystalu je možné použít i firmware pro kmitočet 20MHz ale
456 pak ICD nebude pracovat při sníženém napájecím napětí. V takovém
457 případě nahráváme firmware pro ICD-S pro 20MHz a ICD nebude možné
458 použít s programem MPLAB.
459 </p>
460  
461 <h3> Kontrola </h3>
462  
463 <p>
464 Po naprogramování firmwaru je vhodné zkontrolovat funkčnost ICD s
465 reálným procesorem a zkusit krokovat jednoduchou aplikaci v cílovém
466 procesoru. V programu MPLAB je vhodné rovněž zkontrolovat, zda ICD
467 správně reportuje velikost napájecího a programovacího napětí.
468 </p>
469  
470 <p>
471 Závěrem je vhodné zkontrolovat, zda měnič vyrábí správné programovací
472 napětí. Kontroluje se napětí na vodiči +16V zda má +16V (vývod 8
473 stabilizátoru U3). Toto napětí se negeneruje trvale ale generuje se
474 například během programování.
475 </p>
476  
477 <h1> Programové vybavení </h1>
478  
479 <p>
480 Programové vybavení za nás napsaly firmy MICROCHIP a CCS.
481 </p>
482  
483 <h2> Balík MPLAB firmy MICROCHIP </h2>
484  
485 <p>
486 <a href="http://www.microchip.com/">http://www.microchip.com</a>
487 </p>
488  
489 <p>
490 Firma MICROCHIP dodává ucelený programový balík MPLAB pro práci s
491 procesory PIC. Jedná se o integrované prostředí, překladač assembleru,
492 simulátor procesorů PIC a ovládání několika druhů programátorů a HW
493 debuggerů. Zde popisovaný ICD je podporovaný pouze ve starší verzi
494 MPLAB 5.x. MPLAB je zdarma ke stažení ze stránek výrobce a z mnoha
495 dalších míst.
496 </p>
497  
498 <p>
499 Aby ICD fungoval s programem MPLAB musí do něho být nahrán firmware pro
500 MPLAB, který je v souboru MPL876.HEX.
501 </p>
502  
503 <h2> Balík PCW firmy CCS </h2>
504  
505 <p>
506 <a href="http://www.ccsinfo.com/">http://www.ccsinfo.com</a>
507 </p>
508  
509 <p>
510 Firma CCS dodává komerční balík PCW, který obsahuje překladač jazyka C
511 pro procesory PIC, integrované prostředí (Windows nebo Linux) a přímo
512 podporuje ladění programů prostřednictvím několika druhů ICD. Od balíku
513 PCW je možné si stáhnout demoverzi na vyzkoušení, která je zdarma a
514 podporuje jen několik procesorů PIC s omezením délky přeloženého
515 programu. Jinak je demoverze plně funkční a funguje v ní i práce s ICD.
516 </p>
517  
518 <p>
519 Poměr cena/výkon ostré verze překladače je velmi příznivá, protože
520 tvůrci prostředí odvedli velký kus práce zejména na podprogramech pro
521 ovládání periferií procesorů PIC. Kvalita generovaného kódu není sice
522 oslnivá (překladač samotný stojí cca 100$) ale využití paměti RAM je
523 vynikající. To co by se programovalo v assembleru hodiny se zde
524 programuje minuty až desítky minut.
525 </p>
526  
527 <p>
528 Kromě integrovaného prostředí je možné ještě stáhnout program ICD,
529 který slouží pouze pro ovládání ICD a jeho aktualizaci (výměna
530 firmwaru, test komunikace a podobně).
531 </p>
532  
533 <p>
534 Hardwarová podpora ICD procesorů PIC16F je popsána v dokumentu
535 MICROCHIP DS51241. U starších procesorů bez této podpory lze ICD použít
536 pouze pro programování jejich obsahu ale ne pro krokování běhu
537 programu. Podpora ICD je k dispozici u všech novějších procesorů PIC.
538 </p>
539  
540 <p>
541 HW podpora ICD zahrnuje hardware, který umožňuje provádět tyto ladící
542 zásahy:
543 </p>
544  
545 <ul>
546 <li>Krokovat program po instrukcích </li>
547 <li>Spustit program s nastavenou jednou zarážkou (BreakPoint registr je jen 1) </li>
548 <li>Zastavit běžící program </li>
549 </ul>
550  
551 <p>
552 Vše ostatní již zajišťuje kousek programu, který se musí přidat k
553 cílové aplikaci (zabere pár buněk paměti RAM, řádově dvě stovky
554 instrukcí a jednu úroveň zásobníku). Přidání tohoto obslužného programu
555 do aplikace zajišťuje překladač sám jakmile zvolíme ladění pomocí ICD.
556 Na první adrese programu musí být instrukce NOP.
557 </p>
558  
559 <p>
560 Aby ICD fungoval, musí v něm být nahraný firmware. Ovládací programy
561 firmy CCS dovedou komunikovat jak s původním firmwarem pro MPLAB firmy
562 MICROCHIP tak i s firmwary pro PCW firmy CCS. Pokud program zjistí, že
563 firmware není správný (různé řady cílových procesorů vyžadují různé
564 firmwary v ICD) provede jeho aktualizaci.
565 </p>
566  
567 </div>
568  
569 <!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
570 <!-- ============== PATIČKA ============== -->
571 <div class="Footer">
572 <script type="text/javascript">
573 <!--
574 SetRelativePath("../../../../../");
575 DrawFooter();
576 // -->
577 </script>
578 <noscript>
579 <p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
580 </noscript>
581 </div>
582 <!-- AUTOINCLUDE END -->
583  
584 </body>
585 </html>