Problem with comparison.
/Modules/PICICD/PICICD01B/DOC/HTML/PICICD01B.cs.html |
---|
0,0 → 1,585 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3c.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="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> |