Web51 - Hardware |
Rozhraní pro sériové programování implementoval ATMEL hlavně do rodiny procesorů AVR. Zde je použití ISP celkem bez větších problémů, problémy mohou nastat pouze se strmostí hran, což lze částečně řešit snížením hodnoty PULL UP odporů a nepoužíváním připojovací kabelu delšího než cca 1m.
ISP je však také u dvou procesorů z rodiny x51 AT89C8252 a AT89S53. Použití nahrávání programu do CPU po ISP je jeden z velmi dobrých způsobů jak vyvíjet aplikace na staré rodině x51. Je zde však potřeba počítat s opačnou polaritou úrovně RESET oproti AVR rodině, což je potřeba u některého SW nastavit. Pozor také na resetovací zapojení v laděné aplikaci. Periferie musejí počítat s resetem z ISP programátoru.
Významným problémem je ale špatná HW implementace podpory ISP rozhraní. To se z důvodu nedostatku pinů připojuje na piny, sdílené s bránou P1. Při programování v aplikaci by mělo zapojení periférií počítat s možností přenosu dat po těchto pinech ve stavu RESET. Programování FLASH procesoru skrz ISP je řešeno doplněním bloku obsluhy ISP do struktury obvodu. Tento blok čeká po resetu na definovanou sekvenci, při níž odpojí zbytek CPU a naprogramuje paměť. Problém, který popisuje ATMEL i ve svých errata dokumentacích spočívá v tom, že v některých případech blok ISP považuje za sekvenci programování i přístup na port P1 při běhu programu v CPU. Pokud tento stav nastane, procesor se dostane do nedefinovatelného stavu, kdy programování přes ISP chvíli funguje, chvíli ne. CPU je potom nutné vymazat a znovu naprogramovat v klasickém paralelním programátoru.
Zde je třeba si uvědomit, že po každém ukončení programování přes ISP nastavuje RESET programovací SW do neaktivního režimu, čímž v podstatě okamžitě spouští program, který byl do CPU nahrán. Kombinací které přistupují na bránu P1 je docela hodně a proto je potřeba s touto HW chybou počítat. Atmel doporučuje nepřistupovat na piny ISP z P1 prvních cca 500 ms po resetu. Pokud tedy například nastavujete po RESETu všechny I/O piny do logické 0 použijte před nastavením ISP pinů (P1.5 - P1.7) čekací smyčku.
Web51 po startu nastavuje porty pro snížení spotřeby do stavu log. 0. Tím však manipuluje také se zmíněným P1 a proto soubor web51.asm v adresáři /lib/ obsahuje v sekci .global_reset čekací smyčku :
.global reset reset: MOV R7,#20 ;ISP DELAY for AT89S8252 CPU ISP_Ra: MOV R6,#0xFF ; 255 x 255 x 25 = 650 ms for 22.1184 MHz Xtal ISP_Rb: MOV R5,#0xFF ISP_Rc: DJNZ R5,ISP_Rc DJNZ R6,ISP_Rb DJNZ R7,ISP_Ra
Programování procesorů ATMEL pomocí rozhraní ISP je dnes již běžná věc. Šetří to čas při vývoji. Chceme vám představit jednoduchý programátor, nebo spíš interface, který vytváří ISP (In System Programming) pomocí LPT portu.LPT ISP Prog je spíš interface, nežli programátor v pravém slova smyslu. Neobsahuje žádné patice pro programování obvodů přímo na základní destičce. Jeho výstupem je pouze konektor ISP. Pokud potřebujete naprogramovat ISP procesor mimo aplikaci, lze samozřejmě připojit ISP přímo na procesor, doplnit k procesoru krystal s kondenzátory a to je vše..
Napájení
ISP rozhraní obsahuje napájecí napětí. Protože zde existuje možnost napájení z aplikace, nebo z jiného zdroje, je na destičce programátoru oddělovací dioda D1. Pokuje ji zkratujete, je veškeré napájení propojeno. Dioda odděluje pouze napájení pro samotný oddělovací obvod, napájecí piny z ISP konektoru jsou propojeny se svorkovnicí pro případné externí napájení.
ISP rozhraní obsahuje kromě napájení ovládání resetování procesoru (/RESET), vodiče pro sériový zápis (MOSI) a čtení (MISO) obsahu interních pamětí FLASH a EEPROM + jeden vodič pro synchronizaci přenosu dat (SCK).
Vodiče MISO a MOSI nejsou křížené = MISO z programátoru se připojuje na MISO CPU a MOSI na MOSI!
- Připojení na Paralelní port – neblokuje sériový port. Ten tak zůstává použitelný pro připojení laděného zařízení
- Software pro Windows 95,98 i Windows NT/2000 (SW obsahuje rychlejší drivery, které fungují pod W9x, nebo pomalejší i pro NT a W2000)
- V ceně je zahrnut také poplatek pro autora SW C. Lanconelli za použití programátoru.
- Na rozdíl o přímého připojení pinu paralelního portu obsahuje tento programátor budič sběrnice, který definuje logické úrovně výstupu, takže programátor funguje na všech paralelních portech korektně nemusí být připojen extrémně krátkým kabelem.
- Díky použití budiče, jsou hrany SCK dostatečně strmé a nehrozí problémy popisované v Errata dokumentech ATMELu. (pokud samozřejmě nepoužijete 10 metrů dlouhý kabel..)
- Software pro LPT ISP Prog je součástí standardního balíku „PonyProg“. Díky tomu je software průběžně inovován a aktualizován. Lze se tedy počítat s vyřešením problému, pokud například ATMEL upraví programovací algoritmy obvodů..
- Obslužný SW je velmi příjemný, je napsán pro průběžný vývoj. Obsahuje například volbu, kterou lze při každém programování .hex soubor načíst znovu z disku, což je nutné při jakémkoli vývoji a kompilaci kódu v jiném okně..
- Programátor obsahuje signalizaci průběhu programování a signalizaci napájení.
- Pokud SW odmítá najít programátor na portu, zkuste změnit driver v nastavení hardwaru v PonyProg software.
- Pokud nesvítí LED napájení, hledejte chybu v napájení.“
- Pozor na resetovací zapojení v laděné aplikaci, musejí počítat s resetem z ISP programátoru.
- Při programování AT89S8252 respektujte omezení z ERRATA katalogových listů, hlavně část o nepoužívání pinů pro ISP prvních 500 ms po RESETu.
Podle vyjádření autora PonyProgu lze volat ISP programování externě, přes PonyProg SW přes použití scriptů. Například z MAKEFILE tak lze zavolat Programovací SW a rovnou obvod naprogramovat.
Přiložený příklad volá PonyProg z Makefile pomocí příkazu make isp. Potřebujete nejméně PonyProg2000 v 2.04h.ISP = c:/programmi/ponyprog2000/ponyprog2000.exe MCU = at89s8252 isp: $(TRG).rom $(TRG).eep echo -e "SELECTDEVICE $(MCU)\nLOAD-PROG $(TRG).rom\nLOAD-DATA $(TRG).eep\nERASE-ALL\nWRITE-ALL" >isp.e2s $(ISP) isp.e2s #$(RM) isp.e2s
Veškeré konstrukční podklady najdete na HW serveru v článku LPT ISP Prog. Včetně zdrojových kódů pro plošné spoje a ovládacího softwaru..
Hotový ISP Programátor si můžete objednat s našimi dalšími produkty.
AT89S8252 8-bit Microcontroller with 8K Bytes Flash (34 str.)
The Errata sheet for AT89S8252 and AT89LS8252 (2 str.)
POPIS Web51 | NOVINKY | FAQ | OBJEDNÁVKA | DOWNLOAD |
(c)Copyright 2000, 2001, HW server & Radek Benedikt
Web51@HW.cz, Web51.HW.cz Final applications of the Web51 : www.HWgroup.cz |