Mikrokontroleri - SX

Autor: Milan Vukobrat, dipl. ing.

 

 


SX-Key 

Zamislite mikrokontroler koji ima ugrađenu podršku za In -Circuit emulaciju - možete ga do mile volje zaustavljati , izvršavati instrukcije korak po korak i posmatrati stanja registara na PC-ju, menjati sadržaj registara prostim klikom miša i nastavljati izvršavanje sa tim novim parametrima, postavljati Breakpoint-e ili Watchpoint-e i pratiti tok izvršavanja programa ... Ili da prosto pustite da izvršava jednu po jednu instrukciju šaljući stanja registara na ekran monitora, a vi samo kliknete na Stop i on strpljivo čeka ....
I sve se to dešava u radnom režimu, dok je mikrokontroler na ploči, u svom realnom okruženju ... 

Ima još: Neka bude sa Flash memorijom, sa taktom 50MHz , ali da dobar deo instrukcija radi u jednom ciklusu, jer hoćemo 50 MIPS-a, neka sam snimi stanja bitnih registara pri interrupt-u i neka ih posle vrati, da ne moramo to da radimo programski ...
I još: Da bude kompatibilan sa nekim od već poznatih mikrokontrolera, recimo od Microchip-a, da ne moram opet da učim i arhitekturu i mnemonike, pa da se stare rutine i programe lepo presele u njega ...

Ah, zaneo se, sanja, mislite ... Ne, pričam o SX mikrokontrolerima.


SX - Key


Ako je strpljivi čitalac pročitao uvodnik ovog članka, postalo mu je jasno zašto su SX mikrokontroleri firme Scenix dospeli na listu “ 100 Hot Products 1998” časopisa Electronic design (EDN) .

Ključ njihovog uspeha bukvalno se i zove SX - Key, a delo je inženjera firme Parallax. Jednostavno, Scenix je napravio mikrokontroler sa podrškom za In-Circuit emulaciju, a Parallax softversku podršku koja omogućava programiranje / emulaciju / debagiranje kroz minijaturni sklop koji se zove SX - Key. SX - Key ima prema kontroleru 4 priključka - 2 za napajanje (uzima ga sa kontrolerske ploče) i 2 za preuzimanje kontrole nad mikrokontrolerom (SX mikrokontroler se programira preko OSC pinova). 


Slika 1.

Nikakvi dodatni elementi za proces emulacije nisu potrebni. SX - Key daje svoj takt SX mikrokontroleru, zaustavlja ga , čita sadržaj njegovih registara, menja te iste sadržaje prema želji korisnika, vodi računa o Brek point-ima ako su postavljeni, a korisnik kroz softwer prati “uživo” šta se u mikrokontroleru dešava ...
Kad je emulacija kod programera proizvela onaj neponovljivi osećaj sreće koji graniči sa oduševljenjem 

(jer je pomislio ono čuveno: “to je to”), dovoljno je odspojiti SX - Key i mikrokontrolerje prepušten sebi i svom okruženju ... jer se sve to radilo ne na protobordu ili nekom razvojnom sistemu, već na ploči gotovog uređaja koji je sada spreman za isporuku. 
U daljem tekstu biće opisan editor / emulator za ovaj razvojni sistem.


SX - Key Editor


Editor je namenjen za unos sors koda i ima standardne opcije za njegovo uređenje:

· File za rad sa fajlovima: (New, Open, Save, Save As, Print, Exit )
· Edit (Undo, Cut, Copy, Paste, Select All, Find/ Replace ...)
· Run (opisan dalje u tekstu)
· Help (Contents, About)

Editor se može besplatno preuzeti sa Parallax-ovog sajta www.parallaxinc.com  
Aktuelna verzija je 1.02 (sa dodatnim poboljšanjima unutar opcije Debug).
Na istom sajtu nalazi se i kompletan priručnik za rad sa SX - Key razvojnim sistemom u .pdf formatu (oko 2MB), kao i niz dodatnih informacija.


Run meni


U sklopu Run naredbe nalaze se opcije za emulaciju (slika 2):

Run: asemblira izvorni (sors) kôd i programira SX mikrokontroler

Debug: asemblira izvorni (sors) kôd, programira SX mikrokontroler i inicira Debug mod

Assemble:asembira izvorni kôd

Listing: generiše listing
Device: otvara Device dialog box za modifikaciju parametara mikrokontrolera

Configure:otvara dijalog box za konfiguraciju parametara kod programiranja


Debug mode



Slika 4

Debug mod (Registers) prikazuje status SX mikrokontrolera (memorijsku mapu i kôd koji treba da se izvrši) i predstavlja interaktivni kontrolni panel za emulaciju i debagiranje (Slika 4).
Na slici 4 levo su registri posebne namene (prikazani i kao heksadecimalni i binarno) sa nazivom svakog registra sa strane (i posebno označenim bitima u Status registru).

Ovi registri imaju adrese od $00 do $07. Ispod njih su registri opšte namene sa adresama $08 do $0F. Cela ta grupa od 16 registara ($00 do $0F) jedinstvena je za ceo memorijski prostor (mapirana kroz sve memorijske banke).

U sredini je prikazan kôd koji se izvršava, a desno je prikazan RAM (registri opšte namene kod SX mikrokontrolera su grupisani po 16 (adrese $10 do $1F) i podeljeni po memorijskim bankama (od Bank0 do Bank7), pa im se tako i pristupa. Trenutno selektovana banka je svetlija u odnosu na ostale, a aktivna površina se automatski širi (na osnovu odabranog mikrokontrolera) tako da uvek prikazuje sve raspoložive lokacije RAM-a. Na taj način se uvek vidi celokupni memorijski prostor.
Stanja registara ili vrednosti pojedinih bita lako se menjaju u toku emulacije pomoću miša (klik na bit menja njegovo stanje u suprotnu vrednost).


Slika 3

Debug naredbe grupisane su u poseban panel (Slika 3).
· Hop Izvršava jednu instrukciju sors kôda (može se sastojati od više mašinskih instrukcija) i osvežava stanja registara
· Jog Izvršava jednu po jednu instrukciju sors kôda automatski osvežavajući stanja registara do pojave Breakpoint-a ili dok se ne klikne na dugme Stop
· Step Izvršava jednu mašinsku instrukciju i osvežava stanja registara
· Walk Izvršava jednu mašinsku instrukciju za drugom automatski osvežavajući stanja registara do pojave Breakpoint-a ili dok se ne klikne na dugme Stop
· Run Inicira izvršavanje programa u punoj brzini - zaustavlja se ili kod breakpoint-a ili ako se klikne na Poll ili Stop
· Poll Radi u dva moda: ako je postavljen brakpoint, startuje izvršavanje kôda u punoj brzini, zaustavljajući se tek toliko da osveži stanja registara na displeju i nastavlja sa radom - ako nema breakpoint-a, služi za trenutno osvežavanje stanja registara za vreme izvršavanja programa
· Stop Zaustavlja izvršavanje koda započeto naredbama Jog, Walk, Run ili Poll i osvežava stanja registara na displeju
· Reset Vraća SX mikrokontroler u inicijalno stanje i postavlja programski brojač (PC) na lokaciju reset vektora
· Registers,
· Code,
· Watch Otvaraju odgovarajući prikaz
· Quit Zatvara Debug mod i vraća kontrolu editoru

Device window

Ovde se biraju parametri kontrolera koji se koristi, programira se, verifikuje ili čita sadržaj kontrolera. Poznavaoci PIC serije od Microchip-a lako će prepoznati način označavanja tpa oscilatora i slično.


Slika 5

Pod opcijom Fuses nalazi se deo koji je specifičan za SX kontrolere (Turbo mod, ne deli takt sa 4, nego instrukcije izvršava u jednom prolazu, Stack Extend - radi kompatibilnosti sa PIC16C5x može se koristiti samo 2 nivoa ili svih 8 koliko inače ima i sl. 5.


Vitrual Peripheral


Čitaocu neće promaći da je struktura SX mikrokontrolera siromašna hardverskim dodacima: nema SPI, I2C, UART i sličnih stvari ... Dizajneri kontrolera okrenuli su se drugom rešenju - napisali su softverske module za ove i mnoge druge funkcije i nazvali ih Virtual Peripherals. 
Korisnik ove softverske module koristi ili kao interrupt rutine, ili kao podprograme (opširniji opis videti pod vp_paper.pdf na www.scenix.com). Tamo se mogu preuzeti i razni VP moduli (mnogi novi se već pišu) i mogu se pogledati njihove primene.
Ideja sa VP je veoma dobra: snižena je cena proizvodnje samog mikrokontrolera (nema hardverskih dodataka), a sa druge strane, ceo problem je zahvaljujući ogromnoj snazi procesora prebačen na teren softwer-a, pa ako vam modul treba, sami ga i ugradite (koliko puta vam je u projekat “otišao” kontroler sa A/D konvertorom, SPI, UART i sl., a ništa od toga nije bilo potrebno!). 
Prema najavama iz SCENIX-a, nova serija njihovih kontrolera SX18/28AC100 radi na 100MHz (instrukcijski ciklus 10ns, a svi interrupt-i se servisiraju za samo 30ns!). Uz pomoć VP modula ovi kontroleri uspešno obavljaju funkcije DSP srednje klase (za one koji se bave digitalnim filtrima - funkcija FIR digitalnog filtra četvrtog reda uz pomoć softverskog VP modula izvršava se za manje od 10ms), ili menjaju FPGA i PLD.
U tabeli 1 imate kratak spisak najzani-mljivijih VP modula

Funkcija EEPROM reči
DC-100kHz generator frekvencije 30
DC-100kHzmerenje frekvencije 40
I2C Master 50
I2C Slave 80
Keypad Scaner 70
LCD Modul 120
19.2kbit/s serial UART 60
Centronics Paralel port 30
500 kHz SPI/Microwire 50
Dallas serial port 130
DTMF I/O 120
Caller ID 180
300/1200 baud modem 280
PID loop 160


Karakteristike 
SX Mikrokontrolera


Navešćemo samo neke od karakteristika SX mikro-kontrolera :
· Izvršavanje instru- kcija u jednom ciklusu (20ns pri 50MHz - Turbo mod)
· Internal RC, External RC, resonator ili oscilator sa kristalom
· 2048x12 EE/Flash programske memorije (10 000 ciklusa r/w)
· 137 bajta RAMa
· Hardverski stek 8 nivoa
· Fiksno vreme odziva na interrupt: 60ns na interni, 100ns eksterni
· Multi Input Wake Up (MIWU), objašnjeno u tekstu ispod
· In - system - programming (OSC pinovi)
· Ugrađen analogni komparator
· Brown - out detector (4,2V)

Posebna zanimljivost je da su izlazi na Portu A izvedeni kao komplementarni (u stilu push-pull kod audio pojačavača), čime je postignuta bolja pobuda pojedinih vrsta potrošača (zvučnik, ultrazvučni davači i sl.).
Svi portovi imaju i mogućnost softverske konfiguracije da budu CMOS ili TTL kompatibilni, a Port B i Port C mogu se konfigurisati da budu Schmitt Triger ulazi. Postoji i interni Pull - Up koji se aktivira softverski.
Port B ima mogućnost generisanja interrupt-a na bilo kom pinu (Multi Input Wake Up - MIWU).
I/O pinovi mogu se opteretiti do 30mA.
Nivo kompatibilnosti SX mikrokontrolera sa Microchip-ovom serijom PIC16C5x:
· Imaju isti raspored izvoda kao odgovarajući kontroleri Microchip-a serije
· Mogu se programirati na isti način (preko istih pinova), iako se preporučuje da se koristi originalni metod preko OSC pinova
· RAM registri i memorijske banke su identični, kao i programska memorija
· Objektni kod razvijen za 16C5x programira se u SX bez izmena
· Instrukcije se, u kompatibilnom modu, izvršavaju istom brzinom

Razvojni alati

Uz SX - Key kod Parallax-a može se preuzeti i njihov SX - Key Assembler - preporučljivo ne samo zbog toga što je prilagođen SX mikrokontrolerima, već i zbog efikasnosti, rada sa makroima i sl.
Posebna vrednost ovog asemblera za pojedine buduće korisnike je što setom instrukcija prati sintaksu asemblera koji su pisani za 80C31 seriju mikrokontrolera, pa se programeri bez mnogo muke mogu “prebaciti” na ovaj razvojni sistem.

Za Sx već postoji i odgovarajući BASIC (videti prikaz BASIC STAMP IIsx iz prošlog broja), a firma Byte Craft Ltd. ima i C kompajler i asembler za SX.
Parallax proizvodi i SX Demo Board, gde se mogu isprobati primeri programa, rad VP modula ili testirati vlastite rutine.

 

C o p y r i g h t  1998 mikroElektronika. All Right Reserved. Za sva pitanja obratite se redakciji