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