Novinka:Spravte si programátor z ... LEGA
(Kategória: Čo by Vás mohlo zaujať)
Zaslal wek
25.09.2009-08:38

Rozšírenie mikrokontrolérov s pamäťou FLASH v posledných rokoch priniesol so sebou aj množstvo viac či menej vydarených amatérskych programátorov. Niektoré z nich sú veľmi profesionálne, iné veľmi amatérske, ale je tu aj skupina kuriozít.

FLASH pamäť v mikrokontroléroch priniesla aj možnosť ľahkého programovania (v zmysle "napálenie" obsahu). Na rozdiel od pamätí EPROM, výrobcovia už u prvých FLASH zabudovali všetky obvody ktoré sú kritické pre programovanie - najmä generátor vysokého napätia*, ale aj adresovacie a časovacie obvody - priamo do čipu. No a väčšinu moderných mikrokontrolérov je možné programovať priamo v obvode, pri normálnom napájacom napätí, cez niekoľko pinov prostredníctvom nejakého sériového protokolu. Toto sa priamo ponúka na amatérsku implementáciu.

Sériových protokolov je však nepreberné množstvo a výrobcovia akoby si dali záležať, aby ani náhodou neboli navzájom kompatibilní a aby kládli dostatočné množstvo prekážok tomu, aby sa dal vytvoriť jednoduchý a univerzálny programátor. Samozrejme, výrobcovia komukoľvek radi predajú patričný programovací prostriedok - avšak konkurenčný boj väčšinu výrobcov prinútil sériové programovacie protokoly aspoň čiastočne zverejniť.

Nebudeme na tomto mieste opakovať výhrady voči minimalistickým - a tým nevyhnutne zlým - riešeniam typu "hrdzavý klinec", ale ukážeme si, že možnostiam ako si spraviť programátor, sa medze nekladú.

Autor konštrukcie NXT2NXP použil ako základ stavebnicu LEGO Mindstorms, resp. jej programovateľný "mozog" NXT. Cieľovým mikrokontrolérom je P89LPC903, obvod z rodiny LPC9xx firmy NXP.

Rodina LPC9xx je založená na 2-clockovom jadre'51, a patrí k nižšej až strednej triede mikrokontrolérov. Tieto obvody sú programované jednoduchým sériovým protokolom, výrobcom nazývaný ICP, s jedným hodinovým a jedným dátovým signálom, avšak na vstup do režimu programovania je potrebné na resetovom pine po pripojení napájania vygenerovať sériu pomerne presne načasovaných pulzov. Táto požiadavka viacmenej vylučuje akékoľvek "hrdzavé klince" časované priamo z PC. Programátory (vrátane snáď pre túto rodinu najpoužívanejšieho programátora zabudovaného do vývojového kitu MCB900 od Keilu) sú preto založené na inom mikrokontroléri, a predstavujú akýsi "prevodník protokolov" - " bridge" - ktorý je obvykle pripojený k PC sériovo a implementuje protokol založený na formáte IntelHex, ktorý sa používa už od čias obvodov pod-rodiny 'RD2. NXT2NXP predstavuje taký istý " bridge" s tým istým protokolom, takže je s ním možné použiť štandardný programovací software pre mikrokontroléry NXP, FlashMagic.

Vyššie obvody tejto rodiny majú okrem programovania prostredníctvom ICP aj od výroby naprogramovaný bootloader, znova založený na formáte založenom na IntelHex (výrobca trocha mätúco tento spôsob programovania nazýva ISP), avšak po prvotnom naprogramovaní sa aj tento spôsob programovania aktivuje sériou presne časovaných pulzov na pine RESET. Obvody sa dajú programovať samozrejme aj tradičným paralelným programátorom.

Keďže LPC903 je výhradne 3V obvod, bolo treba urobiť prispôsobenie z 5V obvodov modulu NXT. Čitatelia mikroZONE zaiste v diskusii "ocenia" zvolené riešenie, najmä prispôsobenie obojsmernej dátovej linky PDA. Pozornosť si určite zaslúži aj hardwarové riešenie "programovacieho adaptéru"

Treba však dodať, že autor tvoril túto konštrukciu očividne so zápalom a chuťou, pričom mu nešlo primárne o vytvorenie programátora ktorý funguje za každých okolností - ako sám priznáva, má k dispozícii aj profesionálny programátor (GALEP), ktorý však "zo športu" nechcel pre programovanie LPC9xx použiť...



wek

---
* možno je to prekvapujúce, ale FLASH tranzistor na programovanie aj mazanie potrebuje podobne ako EPROM vyššie než obvyklé napájacie napätie, 10-15V
---




Táto novinka je z mikroZONE
( http://mikrozone.sk/news.php?extend.127 )