<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title> PICICD01B </title>
<meta name="keywords" content="stavebnice MLAB in circuit debugger icd debugger MICROCHIP PIC">
<meta name="description" content="Projekt MLAB, ICD Debugger pro proceosry PIC">
<!-- AUTOINCLUDE START "Page/Head.cs.ihtml" DO NOT REMOVE -->
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB.css" type="text/css" title="MLAB základní styl">
<link rel="StyleSheet" href="../../../../../Web/CSS/MLAB_Print.css" type="text/css" media="print">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../Web/PIC/MLAB.ico">
<script type="text/javascript" src="../../../../../Web/JS/MLAB_Menu.js"></script>
<!-- AUTOINCLUDE END -->
</head>
<body lang="cs">
<!-- AUTOINCLUDE START "Page/Header.cs.ihtml" DO NOT REMOVE -->
<!-- ============== HLAVICKA ============== -->
<div class="Header">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawHeader();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- AUTOINCLUDE START "Page/Menu.cs.ihtml" DO NOT REMOVE -->
<!-- ============== MENU ============== -->
<div class="Menu">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawMenu();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) menu je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
<!-- ============== TEXT ============== -->
<div class="Text">
<p class="Title">
<span lang="en">In Circuit Debugger</span> pro procesory PIC
</p>
<p class=Autor>
Milan Horkel
</p>
<p class="Subtitle">
Modul PICICD je jednoduchý programátor a ICD pro procesory PIC firmy
MICROCHIP. Modul je kompatibilní s MPLAB™ ICD firmy MICROCHIP a je jej
také možno použít s překladačem PCW firmy CCS. Umožňuje programování
zapájených procesorů PIC, krokování programů, nastavování BreakPointu a
čtení a zápis z a do vnitřních pamětí laděného procesoru PIC.
</p>
<p class="Subtitle">
<img width="410" height="308" src="Pictures/image001.jpg"
alt="Pohled na debugger">
</p>
<p>
<a href="../PICICD01B.cs.pdf"><img class="NoBorder"
src="../../../../../Web/PIC/FileIco_PDF.ico"
alt="Acrobat"> PDF verze</a>
</p>
<h1> Technické údaje </h1>
<table>
<tr>
<th> Parametr </th>
<th> Hodnota </th>
<th> Poznámka </th>
</tr>
<tr>
<td> Napájení </td>
<td> 2.0 až 5.5V </td>
<td> Napájí se z cílového systému </td>
</tr>
<tr>
<td> Spotřeba </td>
<td> Max. cca50mA </td>
<td> </td>
</tr>
<tr>
<td> Interface </td>
<td> RS232 (9600Bd až 115200Bd) </td>
<td> Kabel 1:1 DB9 (prodlužovací) </td>
</tr>
<tr>
<td> Kompatibilita </td>
<td> MPLAB™ ICD </td>
<td> MPLAB 5.x (řada PIC16F)<br>
CCS PCW 3.x (řada PIC16F a PIC18F) </td>
</tr>
<tr>
<td> Rozměry </td>
<td> 65x50x20mm </td>
<td> Výška nad nosnou deskou </td>
</tr>
</table>
<h1> Popis konstrukce </h1>
<h2> Úvodem </h2>
<p>
Konstrukce modulu přímo vychází z MPLAB™ ICD firmy MICROCHIP tak, jak
je popsán v dokumentu DS51184 a s dodatkem v dokumentu ETN#21. Podle
informací nalezených na WWW má původní konstrukce potíže s generováním
programovacího napětí, proto byla tato část modifikována tak, aby bylo
zajištěno správné programovací napětí v plném rozmezí dovolených
napájecích napětí modulu.
</p>
<h2> Zapojení modulu </h2>
<p>
Modul ICD je napájen z cílového systému (prostřednictvím ISP
konektoru). Napájecí napětí může být v rozsahu 2V až 5V. Pokud nemá
cílové zařízení vlastní zdroj, je možné napájení přivádět
prostřednictvím konektoru J4. Programovací napětí (cca. 12.7V) si ICD
vyrábí sám pomocí měniče.
</p>
<p>
Základem ICD je procesor U1 PIC16LF876, který komunikuje s počítačem PC
prostřednictvím sériové linky a řídí obvody pro programování procesorů
prostřednictvím ISP konektoru. Samotný procesor se poprvé programuje
prostřednictvím jeho ISP konektoru J3, další přeprogramování si již
procesor provádí sám. Může se ale stát, že uživatel nahraje do
procesoru nesprávný firmware a pak je třeba použít opět vnějšího
programátoru na přeprogramování.
</p>
<p>
<img width="560" height="440" src="Pictures/image002.gif"
alt="Zapojení procesorové části">
</p>
<p>
Komunikace s počítačem PC zajišťuje obvod U2 MAX232, který převádí
napěťové úrovně mezi TTL a RS232. Pokud se provozuje ICD s napájecím
napětím menším než asi 4V je třeba ověřit maximální komunikační
rychlost, která ještě bude správně pracovat. Za příznivých podmínek
může fungovat rychlost 115200Bd i při napájecím napětí 2V.
</p>
<p>
<img width="474" height="435" src="Pictures/image003.gif"
alt="Zapojení převodníku RS232">
</p>
<p>
Cílové zařízení se připojuje prostřednictvím ISP konektoru J2. Pokud se
použije funkce monitoru použije se i vývod označený PGM, jinak může
zůstat volný. ICD je obvykle napájen z cílového systému prostřednictvím
programovacího konektoru. Zenerova dioda D10 je ochrana před přepětím a
přepólováním.
</p>
<p>
Zelená LED dioda D8 slouží současně jako indikační a jako zdroj
referenčního napětí pro hrubé měření napájecího napětí. Přesnost je
pochybná ale programové vybavení s tímto řešením počítá.
</p>
<p>
Zdroj programovacího napětí získává napětí v měniči s tranzistorem Q1,
který je řízen z PWM výstupu procesoru U1. Obvod měniče byl
<i>modifikován</i> tak, aby poskytoval stabilní napětí +16V na vstupu
stabilizátoru U3 v plném rozmezí napájení ICD. Byla zmenšena indukčnost
cívky L1 čímž byl zvýšen výkon měniče. Byla doplněna zpětná vazba
Zenerovou diodou D4/D3 mezi kolektor a bázi tranzistoru, tím je omezeno
generované napětí měniče právě na +16V. <i>Dále byla změněna vazba báze
tranzistoru Q1 s procesorem na střídavou vazbu aby nemohlo dojít k
fatálnímu stavu zaseknutí procesoru U1 v okamžiku, kdy je na PWM
výstupu stav H (pak by byl Q1 sepnutý a zkratoval by napájení a
procesor by nebyl schopen provést RESET a mohl by Q1 nebo L1
shořet).</i>
</p>
<p>
Za měničem následuje standardní lineární stabilizátor s U3 podepřený
diodou D7 tak, aby výsledné napětí za stabilizátorem bylo cca. +12.7V.
</p>
<p>
<img width="378" height="370" src="Pictures/image004.gif"
alt="Zapojení ISP konetoru">
<img width="188" height="216" src="Pictures/image005.gif"
alt="Zdroj Vref">
<img width="622" height="276" src="Pictures/image006.gif"
alt="Zdroj Vpp">
</p>
<p>
Posledním obvodem je obvod pro spínání programovacího napětí a aktivaci
signálu RESET. Tranzistory Q2 a Q3 spínají VPP (cca. +12.7V) a
tranzistor Q4 aktivuje RESET. Odpory R18 a R21 jsou ochranné, odpor R22
a dioda D9 zajišťují stav H na vývodu #MCLR cílového systému.
</p>
<p>
Odporový dělič R23/R24 slouží k měření (kontrole) velikost napětí VPP.
</p>
<p>
Odporový dělič R25/R26 slouží k měření napájecího napětí.
</p>
<p>
<img width="608" height="406" src="Pictures/image007.gif"
alt="Zapojení spínače Vpp">
</p>
<h2> Mechanická konstrukce </h2>
<p>
Modul je proveden standardním způsobem. V rozích má šrouby a sloupky
pro připevnění na nosnou desku.
</p>
<p>
<img width="478" height="379" src="Pictures/image008.jpg"
alt="Detailní pohled">
</p>
<h1> Osazení a oživení </h1>
<h2> Osazení </h2>
<p>
Zkontrolujte zejména orientaci U1.
</p>
<p>
<img width="402" height="302" src="Pictures/image009.jpg"
alt="Osazení, strana součástí">
<img width="387" height="321" src="Pictures/image010.jpg"
alt="Osazení, strana spojů">
</p>
<table class="Soupiska">
<tr>
<th> Reference </th>
<th> Hodnota </th>
</tr>
<tr>
<th colspan="2"> Odpory SMD </th>
</tr>
<tr>
<td> R18 </td>
<td> 33 </td>
</tr>
<tr>
<td> R2, R3, R4, R5, R6, R7, R8, R12, R21 </td>
<td> 100 </td>
</tr>
<tr>
<td> R13, R28, R30, R32 </td>
<td> 330 </td>
</tr>
<tr>
<td> R9, R10, R23 </td>
<td> 1k </td>
</tr>
<tr>
<td> R22, R25 </td>
<td> 4k7 </td>
</tr>
<tr>
<td> R11, R14,R15, R16, R17, R19, R20, R24, R26, R27, R29, R31 </td>
<td> 10k </td>
</tr>
<tr>
<td> R1 </td>
<td> 22K </td>
</tr>
<tr>
<th colspan="2"> Kondenzátory keramické SMD </th>
</tr>
<tr>
<td> C2, C3 </td>
<td> 22pF </td>
</tr>
<tr>
<td> C1, C4, C5, C6, C7, C8, C9, C10, C12, C13 </td>
<td> 100nF </td>
</tr>
<tr>
<th colspan="2"> Kondenzátory elektrolytické drátové </th>
</tr>
<tr>
<td> C11, C14 </td>
<td> 47uF/25V </td>
</tr>
<tr>
<th colspan="2"> Tlumivky axiální </th>
</tr>
<tr>
<td> L1 </td>
<td> 330uH </td>
</tr>
<tr>
<th colspan="2"> Krystaly </th>
</tr>
<tr>
<td> X1 </td>
<td> 3.6864MHz </td>
</tr>
<tr>
<th colspan="2"> Diody SMD </th>
</tr>
<tr>
<td> D1, D2, D4, D6, D7, D9 </td>
<td> 1N4148SMD </td>
</tr>
<tr>
<td> D5 </td>
<td> BAT48SMD </td>
</tr>
<tr>
<td> D10 </td>
<td> BZV55C5.6SMD </td>
</tr>
<tr>
<td> D3 </td>
<td> BZV55C16SMD </td>
</tr>
<tr>
<th colspan="2"> Diody LED </th>
</tr>
<tr>
<td> D8 </td>
<td> LED3mm zelená </td>
</tr>
<tr>
<th colspan="2"> Tranzistory SMD </th>
</tr>
<tr>
<td> Q1, Q2, Q4 </td>
<td> BC817-25SMD </td>
</tr>
<tr>
<td> Q3 </td>
<td> BC807-25SMD </td>
</tr>
<tr>
<th colspan="2"> Integrované obvody </th>
</tr>
<tr>
<td> U1 </td>
<td> PIC16LF876-04/SO </td>
</tr>
<tr>
<td> U2 </td>
<td> MAX232SMD </td>
</tr>
<tr>
<td> U3 </td>
<td> LM78L12M_SO8 </td>
</tr>
<tr>
<th colspan="2"> Mechanické součástky </th>
</tr>
<tr>
<td> J1 </td>
<td> RS232DB9M </td>
</tr>
<tr>
<td> J2, J3 </td>
<td> JUMP 8 </td>
</tr>
<tr>
<td> J4 </td>
<td> JUMP 2x3 </td>
</tr>
</table>
<h2> Oživení </h2>
<p>
Do procesoru U1 je třeba naprogramovat firmware. Vhodnými kandidáty
jsou firmwary jednak firmy MICROCHIP (z balíku MPLAB verze 5.x) a dále
firmwary firmy CCS (z balíku překladače PCW nebo ICS). Je třeba dát
pozor na to, který firmware použít. Tento hardware je kompatibilní s
ICD firmy MICROCHIP a má procesor PIC16LF876 a krystal 3.6864MHz.
</p>
<p>
Kabel RS232 je zapojen 1:1 (tedy odpovídající si piny jsou spojeny,
jedná se o prodlužovací kabel). Zařízení je také možno připojit přímo
na USB-RS232 adaptér.
</p>
<p>
<img width="429" height="188" src="Pictures/image011.jpg"
alt="Provedení propojovacího kabelu">
</p>
<h3> Oživení pro MPLAB firmy MICROCHIP </h3>
<p>
Do procesoru U1 se externím programátorem naprogramuje firmware ze
souboru MPL876.HEX z instalačního adresáře balíku MICROCHIP MPLAB verze
5.x. Firmware umožňuje komunikaci jen rychlostí 19200Bd a 57600Bd.
</p>
<p>
Pokud je v ICD firmware pro PCW může se též použít program ICD do firmy
CCS (není pak potřeba použít externí programátor).
</p>
<h3> Oživení pro PCW firmy CCS </h3>
<p>
Nejsnazší je naprogramovat do U1 externím programátorem zavaděč, který
se nachází v instalačním adresáři překladače PCW (stačí i demoverze) v
souboru BOOLOAD.HEX. Pak je již ICD funkční a při prvním použití v
programu PCW nám program nabídne provedení aktualizace firmwaru. K
aktualizaci již není potřeba externí programátor. Místo zavaděče může
být naprogramován i firmware pro MPLAB.
</p>
<p>
Pokud nám program PCW nenabídne aktualizaci firmwaru, lze aktualizaci
provést také samostatným programem pro ovládání ICD, který se jmenuje
ICD a lze jej volně stáhnout ze stránek firmy CCS.
</p>
<p>
Při aktualizaci firmwaru vybereme variantu MICROCHIP MPLAB ICD a
variantu firmwaru pro programování požadované řady procesorů PIC
(PIC16F a PIC18F mají samostatné varianty firmwaru).
</p>
<p>
V případě potřeby je možné nahrát do ICD firmware pro MPLAB™ ICD
(soubor MPL876.HEX z instalačního adresáře balíku MPLAB verze 5.x).
</p>
<p>
Pokud do ICD nahrajeme chybnou verzi firmwaru (například firmware pro
jinou frekvenci krystalu) nezbývá než opět použít externí programátor a
přehrát firmware U1 z vnějšku.
</p>
<p>
Po výměně krystalu je možné použít i firmware pro kmitočet 20MHz ale
pak ICD nebude pracovat při sníženém napájecím napětí. V takovém
případě nahráváme firmware pro ICD-S pro 20MHz a ICD nebude možné
použít s programem MPLAB.
</p>
<h3> Kontrola </h3>
<p>
Po naprogramování firmwaru je vhodné zkontrolovat funkčnost ICD s
reálným procesorem a zkusit krokovat jednoduchou aplikaci v cílovém
procesoru. V programu MPLAB je vhodné rovněž zkontrolovat, zda ICD
správně reportuje velikost napájecího a programovacího napětí.
</p>
<p>
Závěrem je vhodné zkontrolovat, zda měnič vyrábí správné programovací
napětí. Kontroluje se napětí na vodiči +16V zda má +16V (vývod 8
stabilizátoru U3). Toto napětí se negeneruje trvale ale generuje se
například během programování.
</p>
<h1> Programové vybavení </h1>
<p>
Programové vybavení za nás napsaly firmy MICROCHIP a CCS.
</p>
<h2> Balík MPLAB firmy MICROCHIP </h2>
<p>
<a href="http://www.microchip.com/">http://www.microchip.com</a>
</p>
<p>
Firma MICROCHIP dodává ucelený programový balík MPLAB pro práci s
procesory PIC. Jedná se o integrované prostředí, překladač assembleru,
simulátor procesorů PIC a ovládání několika druhů programátorů a HW
debuggerů. Zde popisovaný ICD je podporovaný pouze ve starší verzi
MPLAB 5.x. MPLAB je zdarma ke stažení ze stránek výrobce a z mnoha
dalších míst.
</p>
<p>
Aby ICD fungoval s programem MPLAB musí do něho být nahrán firmware pro
MPLAB, který je v souboru MPL876.HEX.
</p>
<h2> Balík PCW firmy CCS </h2>
<p>
<a href="http://www.ccsinfo.com/">http://www.ccsinfo.com</a>
</p>
<p>
Firma CCS dodává komerční balík PCW, který obsahuje překladač jazyka C
pro procesory PIC, integrované prostředí (Windows nebo Linux) a přímo
podporuje ladění programů prostřednictvím několika druhů ICD. Od balíku
PCW je možné si stáhnout demoverzi na vyzkoušení, která je zdarma a
podporuje jen několik procesorů PIC s omezením délky přeloženého
programu. Jinak je demoverze plně funkční a funguje v ní i práce s ICD.
</p>
<p>
Poměr cena/výkon ostré verze překladače je velmi příznivá, protože
tvůrci prostředí odvedli velký kus práce zejména na podprogramech pro
ovládání periferií procesorů PIC. Kvalita generovaného kódu není sice
oslnivá (překladač samotný stojí cca 100$) ale využití paměti RAM je
vynikající. To co by se programovalo v assembleru hodiny se zde
programuje minuty až desítky minut.
</p>
<p>
Kromě integrovaného prostředí je možné ještě stáhnout program ICD,
který slouží pouze pro ovládání ICD a jeho aktualizaci (výměna
firmwaru, test komunikace a podobně).
</p>
<p>
Hardwarová podpora ICD procesorů PIC16F je popsána v dokumentu
MICROCHIP DS51241. U starších procesorů bez této podpory lze ICD použít
pouze pro programování jejich obsahu ale ne pro krokování běhu
programu. Podpora ICD je k dispozici u všech novějších procesorů PIC.
</p>
<p>
HW podpora ICD zahrnuje hardware, který umožňuje provádět tyto ladící
zásahy:
</p>
<ul>
<li>Krokovat program po instrukcích </li>
<li>Spustit program s nastavenou jednou zarážkou (BreakPoint registr je jen 1) </li>
<li>Zastavit běžící program </li>
</ul>
<p>
Vše ostatní již zajišťuje kousek programu, který se musí přidat k
cílové aplikaci (zabere pár buněk paměti RAM, řádově dvě stovky
instrukcí a jednu úroveň zásobníku). Přidání tohoto obslužného programu
do aplikace zajišťuje překladač sám jakmile zvolíme ladění pomocí ICD.
Na první adrese programu musí být instrukce NOP.
</p>
<p>
Aby ICD fungoval, musí v něm být nahraný firmware. Ovládací programy
firmy CCS dovedou komunikovat jak s původním firmwarem pro MPLAB firmy
MICROCHIP tak i s firmwary pro PCW firmy CCS. Pokud program zjistí, že
firmware není správný (různé řady cílových procesorů vyžadují různé
firmwary v ICD) provede jeho aktualizaci.
</p>
</div>
<!-- AUTOINCLUDE START "Page/Footer.cs.ihtml" DO NOT REMOVE -->
<!-- ============== PATIČKA ============== -->
<div class="Footer">
<script type="text/javascript">
<!--
SetRelativePath("../../../../../");
DrawFooter();
// -->
</script>
<noscript>
<p><b> Pro zobrazení (vložení) hlavičky je potřeba JavaScript </b></p>
</noscript>
</div>
<!-- AUTOINCLUDE END -->
</body>
</html>