Zpět

Programování AT89S52 přes SPI


Upozornění: Informace na této stránce nebyly velmi dlouho aktualizovány a mohou být zastaralé. Autor už žádné podobně nespolehlivé programátory na LPT port nepoužívá, protože přešel na spolehlivý BiProg.

Protože jsou procesory Atmel AT89C52 (a další "céčka") již prakticky nesehnatelné, nahrazují se ve starších konstrukcích novějšími AT89S52. Ty mají jednu obravskou výhodu, a to možnost sériového programování přes SPI. Na druhou stranu většina programátorů určených pro starší procesory je nepodporuje, protože málo autorů se stará o aktualizace.

V souvislosti s "eskama" se tedy vyskytl problém, jak je programovat. Chtěl bych zde proto popsat postup. Nebudete potřebovat žádný programátor, ale pouze LPT konektor a pár odporů na sestavení očesané verze STK200. Pokud vlastníte jiný programátor pro mikroprocesory AVR, pravděpodobně ho budete také moci použít.

Pro programování používám UISP, který je sice také primárně navržený pro AVR, ale funguje i s 89Sxx. Existuje jako zdrojový kód pro Linux, ve Windows lze použít s knihovnou Cygwin a jeho zkompilovaná verze se nachází např. v balíku WinAVR. Odtud také pochází soubory, které jsem vybral do archívu níže.

Postup programování:
  1. Stáhněte archiv na konci této stránky a rozbalte do nějaké složky.
  2. Podle zapojení ve schema.gif (přiložený i v archivu) "zdrátujte" programátor. Opravdu na tom nic není - na LPT konektor (samec Cannon 25) připojte zakreslené 4 rezistory (jejich hodnota není kritická) a připojte k procesoru. Ten může být buď přímo v aplikaci nebo např. na kontaktním poli. Pokud použijete kontaktní pole, nezapomeňte připojit krystal (vpodstatě libovolný kmitočet, cca 3-20MHz) a dva kondenzátory ke krystalu.
  3. Pokud používáte Windows NT, 2000 nebo XP, nainstalujte driver GiveIO pomocí dávky install_giveio.bat.
  4. Spusťte dávku prog.bat s názvem HEX souboru jako parametrem, např. "prog emir_v207.hex". Pokud používáte jiný programátor než výše zmíněný STK200 nebo jiný port než LPT1, musíte v prog.bat upravit příslušné parametry.
  5. Výstup programátoru by měl vypadat nějak takto:
    C:\uisp>prog emir_v207.hex
    
    C:\uisp>uisp -dprog=stk200 -dlpt=0x378 -d89 -v if=emir_v207.hex --erase --upload
     --verify
    AVR Direct Parallel Access succeeded after 0 retries.
    Atmel AT89 AT89S52 is found.
    Erasing device ...
    Reinitializing device
    AVR Direct Parallel Access succeeded after 0 retries.
    Atmel AT89 AT89S52 is found.
    Uploading: flash
    ################################################################################
    ################################################################################
    ####################
    (total 5756 bytes transferred in 23.03 s (250 bytes/s)
    Polling: count = 5738, min/avg/max = 1.00/1.47/8.00 ms
    Verifying: flash
    ################################################################################
    ################################################################################
    ####################
    (total 5756 bytes transferred in 7.70 s (747 bytes/s)
    
  6. A je to! Můžete odinstalovat GiveIO driver pomocí remove_giveio.bat.
Download UISP 20050207 pro Windows (ZIP, 579 kB)