AtISP
Projekt AtISP umožňuje práci s procesory Atmel vybavenými sériovým bootloaderem. Projekt zahrnuje vlastní hardware programátoru a obslužný program pro Linux. Podporuje jednočipy zejména AT89C51RD2/AT89C51ED2.
Jsou to jednočipy kompatibilní s 8051, přesněji 8052, s několika rozšířeními:
- Sériový bootloader - v ROM procesoru je bootloader, který se aktivuje resetem při pinu PSEN staženém do nuly. Bootloader komunikuje s PC textovým protokolem vycházejícím z formátu IntelHEX.
- 64KB pro program - už žádné starosti s malou flash, žádné zoufalé optimalizace pro kompiler
- XRAM 1792B - na čipu umístěná paměť dostupná jako externí instrukcemi MOVX
- EEPROM 2KB - pouze u verze ED2
- X2 mód - umožňuje zdvojnásobit rychlost procesoru při stejném krystalu. Dallas má sice pořád navrch, ale Atmel je běžně dostupný v kusovém množství a i levnější - kolem 200Kč.
- Keyboard interface - jinak řečeno 8 pinů portu P1 použitelných jako vstupy pro přerušení, aktivace libovolnou hranou nebo oběma
- Další bižutérie typu PCA s watchdogem, power monitor, SPI, 2xDPTR ...
Více v datasheetu.
Schéma zapojení
Programátor je navržen tak, aby fungoval pokud možno na libovolném počítači. Proto je napájen z +5V ze zařízení. Základem je notoricky známé zapojení s MAX232, zde konkrétně MAX232CWE, kterému stačí pro nábojovou pumpu kondenzátory 1µF.
Do procesoru se přivádí singály RxD, TxD a PSEN na TTL úrovni. Reset se aktivuje sepnutím tranzistoru.
ISP konektor vychází z aplikační poznámky Atmelu AVR910. Napájení a reset zůstaly, místo SPI pinů jsem zapojil RxD, TxD a PSEN. Prioritou bylo, aby v aplikaci vycházel rozumně plošný spoj.
Jako konektor do PC jsem zvolil samici Cannon 9 (D-SUB) do plošného spoje. Programátor lze tedy připojit přímo do PC bez kabelu nebo s prodlužovačkou, která zachová alespoň signály 1-8.
Konstrukce
Celek je navržen na jednostranném kuprextitu. Z důvodu rozměrů jsem použil většinu součástek v provedení SMD
-
Motiv spojů, 300DPI
-
Osazovací výkres, strana spojů
-
Osazovací výkres a drátové propojky
Jak to nakonec vypadá
-
Pohled na spoje a SMD součástky
-
Pohled na konektory a propojky
Při připojování k notebooku mi překážel velký elektrolyt. Opřel se o stůl a páčil programátor. Proto jsem elyt nakonec přesadil na druhou stranu desky.
Program
Program Flip od Atmelu mi z nějakého důvodu nefungoval, proto jsem si napsal vlastní. Jak je u mě běžné, je určen pro Linux. Patrně bude fungovat i na ostatních UN*Xech, ale nemám to vyzkoušené.
Typicky se používá:
atisp /dev/ttyS0 firmware.hex
Dále umí zjistit informace o procesoru, smazat a zamnkout procesor. Podporuje formáty IntelHEX a BIN. Stáhnout si jej můžete na konci stránky v části Přílohy. Omlouvám se za .zip, ale redakční systém si nějak neporadí se soubory .tar.gz. Snad ho časem přesvědcím :-)
Verze 0.2 má jedno omezení - používá natvrdo komunikační rychlost 57600 baudů. Tato rychlost je totiž maximální pro krystal 24MHz, který používám prakticky výhradně. S některými jinými krystaly nebude programátor fungovat! Z běžných krystalů se to týká snad jen 12MHz. Naopak u další hojně používané hodnoty - 11.0592 MHz by bylo možné použít i 115200 baudů. Podrobnosti o možných kombinacích krystalů a baudové rychlosti jsou v datasheetu, hledejte 'autobaud performances'. Používáte-li jiný krystal, můžete rychlost změnit v souboru atisp.c, hledejte 'B57600'. Ve verzi 0.3 se rychlost meni parametrem -r.