AtISP

From Tučňák Wiki
Revision as of 17:01, 5 December 2009 by Ok1zia (talk | contribs) (→‎Konstrukce)
Jump to navigation Jump to search

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í

Schéma zapojení AtISP

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

Jak to nakonec vypadá

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.