Asix PRESTO a součástky s HVP pod 13V
Programátor PRESTO slouží k programování mikrokontrolérů, pamětí a dalších součástek různých výrobců. Je navržen pro ICSP programování (In Circuit Serial Programming), při kterém zůstává programovaná součástka v aplikaci (není nutné její vyjímání z desky plošných spojů).
Využívá napájení z USB a umožňuje tímto napětím napájet i programovanou součástku, a pokud tím nebude překročen maximální proudový odběr z pinu VDD (100mA), i celou aplikaci.
Při návrhu aplikace s ICSP volíme mezi HVP (High Voltage Programming) a LVP (Low Voltage Programming) programováním. HVP je typicky zahájeno přivedením 13V na pin MCLR programované součástky. Samotné programování poté probíhá pomocí pinů PGC a PGD. LVP toto speciální napětí nepotřebuje, vyžaduje ale kromě PGC a PGD ještě další pin PGM. HVP tedy klade vyšší nároky na programátor, zároveň ale uvolňuje pin PGM pro jiné využití v aplikaci.
Programování součástek s HVP nižším než 13V
Pokud použitý programátor HVP umí, je celkem logické toho využít. Problém může nastat u početné skupiny součástek, která pro HVP vyžaduje napětí nikoliv 13V, ale nižší (cca 9V). Jde například o velkou část mikropočítačů řady PIC18F. O které konkrétní se jedná lze zjistit ze support listu programátoru PRESTO (obsahuje pouze součástky kompatibilní s tímto programátorem).
Některé programátory umí nastavit HVP napětí podle zvolené součástky na 13V nebo 9V. To ale není případ PRESTA, které umí pouze 13V a proto ho nelze připojit přímo k MCLR pinu mikropočítače vyžadujícího 9V. Napětí z programátoru je třeba vhodně omezit, ideálně tak, abychom mohli použít jak programátor s 13V, tak s 9V HVP napětím a aby byla zachována funkčnost resetu součástky programátorem.
Navrhované zapojení omezuje napětí z programátoru použitím rezistoru 1k2 a Zenerovy diody 8V2 (zeleně ve schématu). Pro jednoduché výpočty budeme uvažovat čtyři stavy, programování 13V programátorem, programování 9V programátorem, reset programátorem a odpojený programátor.
HVP programování 13V
Programovací napětí 13V je na pinu MCLR mikropočítače stabilizováno diodou ZD na 8,2V. Na rezistoru R1 vzniká napětí UR1 = 13-8,2 = 4,8V. Rezistorem tedy poteče proud IR1 = UR1/R1 = 4,8/1200 = 0,004A. Zapojení ovlivňuje ještě pull-up rezistor R2, na kterém vzniká napětí UR2 = 8,2-5 = 3,2V a teče jím proud IR2 = UR2/R2 = 3,2/10000 = 0,00032A. Proud diodou ZD je tak dán rozdílem proudů R1 a R2, IZD = IR1-IR2 = 0,004-0,00032 = 0,00368A. Diodou tedy poteče poud 3,68mA.
Důležité jsou zde dva údaje. Rozsah napětí na MCLR pinu, který součástka interpretuje jako programovací, se mi nepodařilo z dostupných matiálů zjistit. Prakticky bylo ale ověřeno, že 8,2V dostačuje. Druhým údajem je prodový odběr z VPP pinu programátoru. Protože se bavíme o PRESTU, které umožňuje z VPP odebírat až 50mA, jsou vypočítané 4mA v pořádku.
HVP programování 9V
Programovací napětí 9V je na pinu MCLR mikropočítače opět sníženo diodou ZD na 8,2V. Na rezistoru R1 vzniká napětí UR1 = 9 - 8,2 = 0,8V. Rezistorem tedy poteče proud IR1 = UR1/R1 = 0,8/1200 = 0,000667uA. Zapojení ovlivňuje ještě pull-up rezistor R2, na kterém vzniká napětí UR2 = 8,2 - 5 = 3,2V a teče jím proud IR2 = UR2/R2 = 3,2/10000 = 0,00032A. Proud diodou ZD je tak dán rozdílem proudů R1 a R2, IZD = IR1-IR2 = 0,000667-0,00032 = 0,000347A. Diodou tedy poteče poud 347uA.
Stejně jako v předchozím případě zůstává na MCLR pinu ověřených 8,2V. Proudové zatížení programátoru pod 1mA je zanedbatelné.
Reset programátorem
Třetí případ napovídá, že napětí na MCLR pinu mikropočítače nebude diodou ZD nijak ovlivněno, protože zdaleka nedosáhne její prahové hodnoty. Jde tedy o prostý napěťový dělič složený z R1 a R2. Napětí na MCLR bude rovno napětí na R1, UR1 = 5V/(R1+R2)*R1 = 5/11200*1200 = 0,54V.
Protože zde pracujeme s TTL úrovněmi, pro které platí, že logická 0 je interpretována při napětí 0 - 0,8V, je podmínka pro správné vyhodnocení resetu při 0,54V splněna.
Odpojený programátor
Stav vysoké impedance nebo odpojený programátor zcela vyřazuje z vlivu rezistor R1 i diodu ZD. V činnosti tak zůstává pouze rezistor R2, který tak plní jeho původní funkci pull-up rezistoru. Ani v tomto případě tedy nelze navrhovanému zapojení nic vytknout.
Ověření
Z uvedených výpočtů vyplývá, že nově připojený rezistor 1K2 (R1) a Zenerova dioda 8V2 (ZD) umožňuje připojit jak programátor s pouze 13V HVP napětím, tak i programátor s 9V a to bez vlivu na jiné funkce. Zapojení bylo ověřeno na mikropočítači PIC18F25K50 s výsledkem 0 chyb při 30x kompletním přepsání programové, konfigurační i datové paměti programátorem Asix PRESTO. Protože 9V programátor nevlastním, jeho připojení nebylo testováno.