Jste zde

Prostředek pro ladění SW procesorů 89x051

Popsané zařízení usnadňuje vývoj programů pro procesor 89C2051 a další z této malé řady, Využívá ?velký? procesor 89C51, který má k sobě připojenu paměť SRAM a program typu "Monitor".

Simulátor obsahuje UART připojený interface pro RS 232 a v programu 40. pinového procesoru jednoduchý zavaděč přijatých dat do paměti SRAM. Po nahrání programu je procesor zresetován a z RS 232 je přepojen pin /EA, takže CPU spustí program v SRAM. 

Vlastnosti

  • Paměť programu: 32kByte (i kdyz Atmely tehle rady maji max. 4kB, ale..)
  • Kompilace přesně v tom tvaru, který pak naprogramujete (žádné další komplikování kódu)
  • Úplné galvanické oddělení od PC.
  • Download do emulátoru z IntelHex kódu (zatím mám program pro PC, který to řeší - ale jde to udělat taky tak, ze při kopírování na COM si to emulátor přečte sám).
  • Velikost cca 50 x 110  x 8 mm (je to navrženo namíru jedné PCB krabičky z GM)
  • LED indikace provozních stavů (RxD, Busy, Run, Reset)
  • Manuální RESET tlačítko na emulátoru
  • Možnost přepínáni frekvence z připojeného zapojeni nebo vlastní 11.059MHz
  • Rychlost přenosu dat 9600Bd (při 11.059MHz)
  • Dosah propojovacího čtyř-žilového kabelu max. cca 5 m
  • Napájení pouze z připojeného zapojení (spotřeba cca několik miliampér)
  • Přepínatelný režim aplikace signálu RESET

Omezení

  • Emulátor nemá komparátor P1.0/P1.1 s indikací na P3.6 (použil to někdy někdo?)
  • Připojené zapojeni nesmi blokovat P3.0 (RxD) během downloadu programu - ale to lze vyřešit jedním elektronickým spínačem
  • Simulovaný program nesmí za běhu nulovat P3.6 (i to lze  řešit jedním elektronickým spínačem - ale v praxi si to jako vývojář raději pohlídám, než komplikovat takto navrženou konstrukci)
Balík k tomuto zařízení, který můžete stáhnout v sekci DOWNLOAD obsahuje  předlohu plošného spoje s osazením a schématem v programu Eagle 3.55, řídící program pro PC a program pro 89C51, který je v emulátoru.
 

Mechanická konstrukce a oživení


Osazení

Při osazování je dobré použít elyt miniaturní (výška cca 7mm),  paměť 62256 by měla vyhovět jakákoliv. Krystal použít nízký  (cca 3mm). Patice pro emulační kabel jsou precizní a jsou tři  na sobě, aby bylo dosaženo stejné výšky, jakou bude mít horní  kryt simulátoru. Obvod 74HC573 je umístěn pod mikroprocesorem  89C52 (beze změny může být použit 89C51 - já jiný tehdy neměl).

Mikroprocesor a paměť je dobré osadit do precizních patic.  Za poslední tři roky mi dvakrát odešel mikroprocesor, sice mou  chybou (špatným připojením a průnikem 12V na některý pin), ale pak tu patici oceníte. Plošný spoj je jednostranný, je tam pár drátových propojek. Dvojice jumperů slouží k přepínání zdroje taktovacího kmitočtu. Poloha Ext znamená připojení pinů X1 a X2 na emulační patici (tedy taktování zdrojem kmitočtu ve Vaší aplikaci), poloha Int znamená taktování vestavěným krystalem 11.0592 MHz. 

Oživení

Osadit celý plošný spoj. Obvody vyjmout z patic. Po připojení napájecího napětí na piny 10 (Gnd) a 20 (+5V) patice DIL20 zjistit, zda je napájecí napětí také na 74HC573 a na paticích pro paměť (14 Gnd a 28 +5V) a procesor (20 Gnd a 40 +5V). Dále by Gnd mělo být na pinech 5 u všech optočlenů a +5V na pinech 8 všech optočlenů. Pokud tomu tak je, můžete připojit simulátor s prázdnými paticemi na COM2 a na PC spustit program Simatmel.exe /C2 /F11.0592 ?.hex (zadejte nejaky *.hex soubor)
Pokud si nejste jisti spusťte Simatmel.exe bez parametrů, obdržíte nápovědu.

Během přenosu dat by měla problikávat žlutá dioda RxD (příjem dat), na začátku a na konci by měla krátce bliknout krajní červená dioda (reset). Dále by během přenosu dat měla svítit prostřední červená LED (načítání) a po natažení dat by měla stále svítit zelená (emulace v provozu).

Pokud diody nesvítí, zkusit změnit parametr programu na /Cx (kde x je číslo COM portu na PC). Kdyby to nepomohlo, zkontrolovat  polarity svítivých diod (některé jsou v sérii s diodami optočlenů). Pokud by některá dioda svítila když svítit nemá a naopak, opět zkontrolovat její polaritu.

Pak už myslím můžete zasunout procesor a paměť do patic a vyzkoušet to jako celek. Samozřejmě poté, co do 89C52(89C51) napálíte přiložený program Sim301.hex. Takže mnoho štěstí s "přípravkem pro snadnější ladění".
 

Poznámka : Na přiložené fotce lze vidět vyjmutý pin 1 emulační patice.  To je nouzové řešení pro případ, že by vám nějaký vnější signál blokoval pin RxD (viz omezení simulátoru).

Požití programu pro download dat do simulátoru

Povinným parametrem programu Simatmel.exe je /F a bezprostředně  za ním frekvence, na které běží procesor v simulátoru. To je nutné  z toho důvodu, že přenosová frekvence kolísá právě dle rychlosti  Atmelu v simulátoru. Při 11.0592MHz je 9600Bd. Klidně to (kdo to umíte) zvedněte na dvojnásobek, ale nerozchodíte např. krystal 12MHz. Dle firemní dokumentace Atmel je přípustná odchylka při asynchronní komunikaci cca 5% (ověřeno) a těch 12MHz má při nejbližším děliteli odchylku tuším 7%.  Frekvence se zadává v megahertzech!!!
 

Omezení simulátoru 

  • Nemá komparátor P1.0/P1.1 => P3.6
  • Vnější obvody nesmí během fáze načítání dat blokovat vývod   RxD (tento pin používat ve svých aplikacích jako výstupní, je-li to jen trochu možné)
  • Váš program nesmí nulovat bit P3.6! Atmely 89Cx051 jej sice  nemají, ale simulátor jej používá pro zápis do programové paměti. To znamená, že v praxi je mmj. ošidné provádět instrukce typu "mov P3,..", neboť se špatně uhlídá hodnota 6. bitu. Klidně tyhle instrukce používejte, ale obezřetně. Nicméně platí, že pokud vynulujete bit P3.6 začne se odmazávat váš uživatelský (do simulátoru natažený) program a budete muset znovu program natáhnout pomocí Simatmel.exe
  • Programátor nemá breakpointy a trasování a prohlížení registrů za chodu (kdo je šikovný, dopíše si monitor do Atmelu a udělá to tak jak třeba Myke Predko u svého EMUII pro PICy) a budete to mít jako u komerčních emulátorů (ale stejně si myslím, že na to je simulátor softwarový)
  • Pokud jedete na vnější krystal (netýká se zdroje taktování s malým výstupním odporem - např. oscilátory v pouzdrech DIL), nelze mít propojovací kabel delší než cca 15cm při 12MHz. 
  • To není omezení simulátoru ale fyzikální zákon. Takže kdyby simulátor jel na vnitřní krystal a na vnější krystal ne, tak bude závada na 99% právě v příliš dlouhém emulačním kabelu (to je ten dvaceti-žilový). Při chodu na vnitřní krystal mám kabel 30cm a jede to OK.
  • Jumper pro reset Vám umožní odpojit reset simulátoru od resetu, který generují vnější obvody. To z toho důvodu, kdyby někdo řídil reset vnějším watchdogem s výstupem s komplementárním budičem (ve třídě B).
  • Červené tlačítko slouží k manuálnímu resetu (při jeho stisku nesvítí dioda reset!)
Závěr z omezení: Všechna omezení (kromě absence komparátoru, jehož použití je sporné..) se dají odstranit pomocí několika elektronických spínačů, které lze nastavovat během downloadu dat do simulátoru. Ale už to nebude tak elegantní řešení a přínos těchto úprav je diskutabilní..
 

Mechanické řešení

Celé to zařízení je děláno na míru plastové krabičky Z31 (nebo Z34? - je to kód vylisovaný na vnitřní straně), označení v GM je jiné (ale teď nevím jaké). Každopádně se ta krabička prodává ve dvou různých výškách (liší se výškou horního dílu). Takže si kupte tu nižší. Z fotky by typ měl být poznat.
 

DOWNLOAD a odkazy


 

Libor Lasota
Silicon Mountain, California u Jablunkova
Hodnocení článku: