(English abstract follows)
Český programátor PATMEL 3 mi dlouho celkem spolehlivě sloužil. Používal jsem jej však jen k programování "dvacetivývodových" mikrokontrolérů AT89C2051 a AT89C4051, což byl ostatně hlavní důvod, proč jsem si jej někdy na počátku 3.tisíciletí pořídil. Jenže časem jsem potřeboval pracovat i s "čtyřicetivývodovým" mikrokontrolérem, třeba AT89C52, avšak "C-čková" verze byla v té době tak zastaralá, že již nebyla běžně ke koupi. Možná někde v prodejnách zabývajících se prodejem zastaralých součástek by sehnat šel, ale zakládat novou konstrukci na beznadějně zastaralém mikrokontroléru mi jako příliš dobrý nápad nepřipadá. Ostatně - pro někoho patří již celá platforma x51 dávno do muzea, přesto nemusí být vždy vhodné přecházet na platformu AVR, zvláště, máme-li pro x51 vývojové prostředí a spousty funčního kódu. Proto jsem se rozhodl přejít na sériové programování, které používají novější součástky z řady AT89 a které rovněž umožňuje ISP, které starší obvody nepodporovaly. Při té příležitosti byla šance vyřešit ještě jednu bolístku programátorů PATMEL (a nejen těch), a to, že mají obslužný program pouze pro jistý nejmenovaný systém, pocházející z amerického Redmondu, systém, jehož jsem se již před mnoha lety zřekl natolik, že jej snesu jen ve virtuálu a to ještě jen s velkým sebezapřením. Cílem tedy bylo vytvořit k novému programátoru řídící program nezávislý na systému.
Pro prvotní vymanění se ze závislosti na svém PATMELu (a tím i na redmondském neřádu) jsem si vytvořil jednoduchý prográmek pro obvod AT89C2051 a k jeho nahrání do obvodu jsem použil právě PATMEL (doufám, že již naposledy). Dále jsem napsal prográmek v C++, který s tímto obvodem komunikuje přes rozhraní RS232 závratnou rychlostí 1200 baudů. Ne, že by to nešlo rychleji, tato rychlost se mi však osvědčila i v různých "neideálních" prostředí dlouhých kabelů a dalších překážek, přes které nutím bajtíky přelézat při svých experimentech.
Program určený pro obvod je docela blboučký, pouze tupě převádí příchozí data z UARTu (připojenému k převodníku na RS232) na signály SPI a data přijatá přes toto rozhraní opět vysílá přes UART na RS232. Je psaný v assembleru a odladěný v poněkud těžkopádném a pomalém, leč jinak velmi užitečném a propracovaném prostředí české provenience - MCU8051IDE (vřelé díky jeho autorovi).
Řídící program může leckomu rovněž připadat blboučký, implementuje však již vlastní logiku sériového programování obvodů řady AT89, a to do jisté míry konfigurovatelně. Způsob programování jednotlivých obvodů je definován v konfiguračním souboru, kde lze postihnout určité nuance způsobu jejich programování. Neručím za to, že lze programu nakonfigurovat sériové programování všech obvodů řady AT89, zato bych se vsadil, že s ním nenaprogramujete nic jiného. Rozhodně třeba na programování řady AT90 (ATTINY, ATMEGA) je tento provizorní prográmek krátký, ať jej konfigurujete jak chcete. Pro začátek jsem připravil konfigurace pro obvody AT89S51, AT89S52, AT89LP2052 a AT89LP4052, reálně jsem však otestoval jen první dvě (ty druhé dvě, jak jsem zjistil později, vzhledem k vlastnostem zmíněných obvodů fungovat s takto jednoduchým programátorem nemohou). Program se spouští z příkazové řádky. Odladěn byl a používám jej v prostředí linuxu (v mém případě Gentoo).
Pro proces vymaňování se z PATMELické závislosti jsem se spokojil se zapojením na kontaktních nepájivých polích. Schéma zapojeni je uvedeno pod článkem. Zdrojové texty naleznete v přiloženém souboru step1.tar.gz. Dalším krokem je vývoj "festovnější" verze programátoru, který je zatím ve fázi ladění a funguje jen částečně. Po jeho úspěšné realizaci jej zveřejním na těchto stránkách. Prozatím jen prozradím, že jsem se vydal cestou "vratné recyklace" programátoru PATMEL 3.
Programátor s napájecím zdrojem (vlevo) a programovaný obvod (vpravo), ve kterém právě běží čerstvě nahraný testovací prográmek.
Programmer with power supply (left board) and the target circuit (right board), actually running freshly uploaded testing programlet.
PATMEL 3, the Czech Atmel MCU programmer, which I used for many years, cannot handle majority of newer Atmel MCUs. I suppose, this is similar to many others of older programmers. This page describes the first step of my extrication of my dependance on PATMEL 3, which - last but not least - ment also the dependance on an unnamed system comming from American Redmond, the system which I really dislike.
I've written a program for AT89C2051, which is almost the last, which I still can buy and which is supported by the programmer PATMEL 3. This program converts data from RS232 to SPI and vice versa. Program is written in assembly and compiled and debugged in MCU8051IDE.
The control program, which runs on PC, implements the logic of serial programming AT89 series devices and communicates with programmer via the serial interface (RS232). The programming is a bit configurable, there are configurations for AT89S51, AT89S52, AT89LP2052 and AT89LP4052 (only AT89S5x was tested, the others mentioned cannot function with such simple programmer, as I foud out later). The control program definitely doesn't have enough capabilities to be configured to work with devices like AT90, ATTINY or ATMEGA.
This first step of my extrication is reallized on two small breadboards - see the scheme. The sources are available in the attached file step1.tar.gz. The next step is a development of more reliable version of programmer. This version works partially yet and I can reveil, that it is based on a "reversible recyclation" of my current programmer PATMEL 3.
C1, C2, C3, C4, C5 ... 1 uF
C6 ... 10 uF
C7, C8, C9, C10 ... 22 pF
R1 ... 220 Ohm
R2 ... 10 kOhm (není nutný - can be omitted)
X1, X2 ... 12 MHz
U2 ... jakýkoliv x51-kompatibilní MCU, který jste schopni naprogramovat - any x51-compatible MCU you are able to program
U3 ... cílový MCU - target MCU
in aeternum.
Amen.
Plakátek slavného dvousetletého výročí našeho kostela. Kde jsou ty časy. Mnoho věcí se od roku 2011 změnilo a jen málo z nich k lepšímu...