main00.gif (496 bytes)
main01.gif (421 bytes)
main18.gif (457 bytes)
main21.GIF (361 bytes)
main03.gif (484 bytes)
main20.gif (514 bytes)
main17.gif (414 bytes)
main19.gif (581 bytes)
main02.gif (376 bytes)
main05.gif (550 bytes)
main04.gif (376 bytes)
main06.gif (327 bytes)
main08.gif (328 bytes)
main11.gif (465 bytes)
main10.gif (516 bytes)
main07.gif (386 bytes)
main09.gif (366 bytes)
main12.gif (317 bytes)
main14.gif (415 bytes)
main13.gif (322 bytes)
main15.gif (350 bytes)

Magazin za primenjenu elektroniku, automatiku, programiranje i informisanje

    

Sherlock

  21k.jpg (26563 bytes)

Elementarno, dragi Watsone

U ovom tekstu se nećemo baviti praktičnim problemima samogradnje razvojnog sistema, jer je taj aspekt obrađen u umetku časopisa, nego pitanjima razvojnog procesa uopšte, i kako ovaj razvojni sistem može da nam pomogne da ideju ili zahtev naručioca pretočimo u prototip uređaja.

Gledano sa pozicije konstruktora, mikroprocesorski kontroleri imaju jednu vrlo zgodnu osobinu: bez obzira na namenu, svi su hardverski vrlo slični. Svi imaju mikroprocesor (konstruktori se uglavnom vežu za jedan procesor i ne menjaju ga sve do decenijske smene generacija), EPROM i RAM, i sve se to vezuje uvek na isti način. Jedino ulazno/izlazni sklop donekle varira u zavisnosti od konkretne namene. Naravno, podrazumeva se da se program smešten u EPROM-u značajno razlikuje od slučaja do slučaja, mada vešti programeri grade svoje privatne biblioteke u koje ugrađuju procedure koje kasnije koriste da bi skratili vreme razvoja i uštedeli sebi trud.

Razvojni sistem koji vam ovde predstavljamo sadrži alatke koje su potrebne da bi se projekat mikroprocesorskog kontrolera brzo i lako doveo do kraja. Osim toga, neki delovi sistema (prvenstveno analizator) imaju i mnogo širu primenu: analiza rada čisto hardverskih sklopova, analiza protokola komunikacionih jedinica, lokalizacija kvarova na neispravnim pločama sa ili bez mikroprocesora, a u prošlom broju časopisa već smo pomenuli da nas uskoro čeka samogradnja manjeg dodatka koji će ovaj razvojni sistem pretvoriti u analogni osciloskop sa funkcijom memorisanja talasnih oblika.

Kartica se postavlja u jedan od AT slotova računara, a trakasti kabl povezuje konektor na kartici sa uređajem koji razvijamo (u daljem tekstu ćemo za taj uređaj koristiti naziv ciljni sistem). Ako se radi o razvoju mikroprocesorskog uređaja, sonda na kraju trakastog kabla se ubacije u podnožje za EPROM jer ima raspored i oblik pinova koji su mu prilagođeni. Posebnim kablom se dovede RESET izlaz, najbolje na elektrolitski kondenzator vremenske RC konstante kola za reset, a eksterni ulaz je univerzalni priključak i od konkretne namene zavisi gde će biti priključen. Sad uključujemo računar. Svaki put kad treba prepisati izvršni fajl asembliranog programa u emulator, otkucamo EMUL i (samo prvi put) ime fajla, a ako nam zatreba kompletan razvojni sistem sa analizatorom i ostalim dodacima, pozivamo program SHERLOCK.

21k1.gif (13051 bytes)

Ipak, priča mora da ima svoj početak. Pre nego što krenemo u opis delova koje razvojni sistem Sherlock sadrži, nabrojaćemo tri stvari koje NE sadrži, a neophodne su za rad. Dakle:

Potreban nam je kompjuter, standardni IBM PC ili kompatibilan, bilo koje generacije (mada će sasvim korektno raditi i najstariji XT, radi brzine grafike ipak je poželjno da bude neki od pripadnika novijih generacija). Potrebna je VGA kartica sa grafičkom rezolucijom 640x480 u 16 boja, a za monitor je poželjno (ali ne i neophodno) da bude kolor. Što se RAM-a tiče, nema posebnih zahteva: dovoljno je i minimalnih 640K. Obzirom da je program rađen u asembleru, on na disku zauzima tek nekoliko stotina KB, tako da ni tu nema ekstra prohteva. Windows okruženje nije neophodno, dovoljan je DOS bilo koje verzije (nadam se da danas niko više ne koristi verziju stariju od 3.0).

Sledeće što nam treba za razvoj mikroprocesorskih kontrolera je asembler ili kompajler za procesor za koji smo se opredelili. Na našem tržištu postoji mnoštvo dobrih asemblera, pa ovo nećemo smatrati ozbiljnim problemom. Poželjno je da asembler može da generiše izvršni kod u binarnom obliku, ali da bismo vam pomogli već smo pripremili programe za prevođenje Intelovog .OBJ i standardnog .HEX formata u binarni.

Treća neophodna stvar je programator EPROM-a. Mnogi od nas koji se bave ovim poslom već imaju svoj programator (neki su ga svojim rukama napravili), a ako ne preterujemo u zahtevima i ne insistiramo na tome da programator mora da pokriva neke egzotične EPROM-e, možemo relativno jeftino da ga kupimo. Na kraju krajeva, pošto je programator ionako potreban samo po jednom za svaki projekat, i to na kraju razvojnog ciklusa, za prvo vreme možemo da se poslužimo i programatorom nekog prijatelja.

Toliko o tome šta Sherlock ne sadrži. A sad ćemo potanko objasniti svaku od funkcijskih grupa koju ovaj razvojni sistem sadrži.

Emulator eproma

Mada prilično jednostavan, ovo je najvažniji deo svakog razvojnog sistema. To je ustvari običan statički RAM kome je obezbeđen pristup sa dve strane: PC može da upisuje u njega kao u RAM, a s druge strane ciljni sistem ga preko sonde i trakastog kabla vidi kao EPROM. Ne postoji mogućnost (a ni potreba) da se oba ova procesa obavljaju istovremeno. Upis od strane računara traje tek neki deo sekunde, i za to vreme ciljni sistem nije u stanju da očitava sadraj RAM-a; zbog toga je najbolje držati mikroprocesor ciljnog sistema u RESET stanju, što se u našem razvojnom sistemu obavlja automatski svaki put kad se u emulator upisuje novi sadržaj, preko posebnog kabla koji se najčešće spaja sa RESET nožicom mikroprocesora. Po završenom upisu, RESET se automatski deaktivira a pristup emulatoru se ponovo omogućava mikroprocesoru ciljnog sistema tako da će on započeti posao od početka, što je i normalno posle svake izmene u programu.

Slika 1 predstavlja vrlo pojednostavljenu šemu emulatora. Ne tražite releje na ploči razvojnog sistema, jer preklopnici, naravno, nisu kontaktni (mehanički) kao što bi se zaključilo iz ove šeme, nego elektronski. Debele linije predstavljaju magistrale (Data Bus sadrži osam, a Address Bus šesnaest vodova). U gornjem delu šeme vidimo da sklop za automatsko generisanje RESET signala nudi i mogućnost izbora "aktivnog visokog" i "aktivnog niskog" izlaza, što je neophodno, jer su u praksi zastupljene obe varijante.

Evo kako izgleda primena emulatora u praksi: Posle svake izmene u programu (kakvih u toku razvoja jednog kontrolera može da bude i na stotine) program se asemblira, otkuca se EMUL i pritisne ENTER. To je sve; posle jednog delića sekunde kontroler koji razvijamo počinje da radi po novom programu.

U nekim slučajevima je potrebno da se ceo emulator isključi i da se analizator ili neka druga alatka razvojnog sistema koriste za analizu programa koji se izvršava iz postojećeg eproma u ciljnom sistemu. Razvojni sistem Sherlock podržava i ovu opciju.

Analizator

Nema ničeg neobičnog u tome što je višekanalni digitalni analizator san svakog hardveraša, jer je to jedini instrument kojim se može videti šta se događa u digitalnom sklopu. Univerzalni merni instrument je svakako koristan, ali njime možemo jedino da izmerimo da li je napon za napajanje u dozvoljenim granicama ili da li je neki od izlaza (koji se ne menja suviše brzo) na visokom ili niskom nivou, i to je sve. Osciloskop, koji je najvažniji instrument u analognoj tehnici, u laboratoriji za digitalni razvoj uglavnom skuplja prašinu ili, u najboljem slučaju, služi za to da svojim prisustvom fascinira slučajnog posetioca. Ovi nije preterivanje jer, ako ispitujemo neki mikroprocesorski sklop, jedina tačka na koju ima svrhe priključivati osciloskop je izlaz oscilatora, jer je to jedini ponovljiv signal u celom sklopu. Čak i "storage" osciloskop (koji može da upamti i da zamrznut drži na ekanu jedan talasni oblik) nije od velike koristi, jer nam samo jedan, pa još tako kratak signal ne daje dovoljno informacija.

Zato je razvijena nova generacija mernih instrumenata koji su prilagođeni digitalnim kolima, što znači da ignorišu analogni nivo signala u mernim tačkama (u stanju su jedino da očitaju logički nivo signala), ali zato prate veći broj tačaka istovremeno i mogu da memorišu signale u dužem vremenskom periodu. Postoje tajming (timing) i stejt (state) analizatori. Prvi bacaju akcenat na precizno merenje vremena između dve pojave, a drugi (kakav je i ovaj naš) na snimanje logičkih stanja.

21k2.gif (6012 bytes)

Princip rada analizatora ćemo razmotriti uz pomoć slike 1, koja predstavlja toliko pojednostavljenu i banalizovanu šemu da je skoro neozbiljna. Pretpostavimo da je naš zadatak da testiramo rad kola 74LS393. To je dvostruki 4-bitni binarni brojač (jedan od ova dva brojača ovde ignorišemo), a na izlazima A, B, C i D se pojavljuje ulazna učestanost podeljena sa 2, 4, 8 i 16, respektivno. Pretpostavićemo, sa puno dobre volje, da ovi izlazi mogu da pobuđuju solenoide koji na krajevima svojih kotvi imaju po jednu olovku. Sve te olovke na papirnoj traci (koja se nekako kreće) istovremeno ostavljaju trag. Kad pokrenemo celu skalameriju i na brojački ulaz kola 74LS393 dovedemo neku fiksnu učestanost, na papiru ćemo dobiti talasne oblike koji su u vreme iscrtavanja postojali na svakom od izlaza. Ovaj papir ćemo iskoristiti za analizu rada brojača i lokalizaciju eventualnog kvara.

U praksi, naravno, analizator ne beleži talasne oblike mehanički na papirnoj traci nego elektronski, u nizu pomeračkih registara ili (kao Sherlock) u statičkom RAM-u (mada, istini za volju, postoji i mogućnost da se kasnije cela snimljena sekvenca odštampa na papiru pomoću štampača). Postoje još neke razlike u odnosu na opisani model: pošto digitalna kola ne mogu da memorišu događaje u kontinualnom toku (kao što bi, recimo, mogla magnetofonska traka) nego uzimaju uzorke i memorišu ih u određenim vremenskim intervalima, potrebno je da se ovo učitavanje uzoraka (semplovanje) obavlja dovoljno često da se neki događaj ne bi "ispustio" između dva uzorka. Osim ovog, interno generisanog takta upisa, postoji i način da se takt dovodi spolja, preko eksternog ulaza ili da se definišu posebni uslovi pod kojima će se semplovanje obavljati.

Sherlock ima u svojoj ponudi obe mogućnosti, i to za interni takt počev od 1 Hz pa do 10 MHz, a za eksterni takt promenu logičkog nivoa na eksternom ulazu (koji može da se spoji sa bilo kojom tačkom na ciljnom sistemu), trenutak kad je emulator (ili eprom) prozvan i kad je na adresnoj magistrali neko unapred definisano stanje, ili proizvoljna koincidencija svih nabrojanih uslova. Moda će ovo biti jasnije ako se poslužimo primerima. Ako hoćemo da vidimo kojim redosledom mikroprocesor izvršava instrukcije u programu, odabraćemo eksterni takt sa aktivnim ES (emulator selected) uslovom, a ako nas zanima šta sve mikroprocesor upisuje u eksternu memoriju na adresi 1234, onda ćemo eksterni ulaz spojiti za WR noicom RAM-a ciljnog sistema, i takt upisa ćemo definisati kao eksterni sa aktivnim ulazima EXT LO (eksterni ulaz nizak) i ADDRESS, a u adresno numeričko polje upisujemo vrednost 1234.

Kompletan ciklus upisa se sastoji od 32768 semplovanih uzoraka po 24 bita, što u nekim slučajevima moe da protekne prilično brzo. Postavlja se pitanje kako ćemo "uloviti" baš onaj trenutak koji je od značaja za analizu? Ovaj problem rešava poseban sklop kojim se definiše trenutak početka ciklusa upisa u memoriju analizatora. Kao i kod eksternog takta, na raspolaganju su nam praktično sve kombinacije EXT, ES i ADDRESS ulaza, ali pistoji i mogućnost bezuslovnog starta, koji je od koristi kad hoćemo da lociramo "mrtvu petlju" u koju je mikroprocesor uleteo kao u zamku. Tako smo ovu "noćnu moru" svih koji programiraju u mašinskom jeziku pretvorili u problem koji je lako rešiv u jednom potezu.

Kad je ciklus upisa završen, na ekranu računara se pojavljuju svi talasni oblici, a nama je na raspolaganju mnogo softverskih alatki koje olakšavaju analizu (o njima će biti reči malo kasnije). Osim digitalnih dijagrama, postoji i mogućnost da se svi snimljeni podaci prikazuju numerički (binarno, decimalno ili heksadecimalno) ili u ASCII kodu.

Postoji još jedan način prikaza snimljene sekvence: na posebnom dijagramu na kome je adresa prikazana na Y-osi, a tok upisa na X-osi. Ovo je izuzetno pogodan način da jednim pogledom obuhvatimo sve tokove programa za vreme semplovanja. Pogledajte sliku 2. Kao što kardiolog vešto čita EKG (koji je za mene samo jedna kriva linija i ništa više) i ispriča ceo istorijat srca pacijenta, tako ćemo i mi krenuti u tumačenje ovog dijagrama: vidimo da je mikroprocesor najpre izvršio deo programa negde na niskim adresama (možemo i tačno da kažemo gde, ali to sad nije važno), zatim pozvao sabrutinu na nešto višim adesama, vratio se a onda u petlji četiri puta odradio isti posao u kontinuitetu. Posle toga je bio prekinut negde vrlo nisko (adresa 001B: na mikroprocesoru 8031 to je TF1 vektor, dakle tajmer 1 je stigao do kraja - radi se o uniformnom interaptu), a onda je odlutao negde gde nije smeo - očitavao je adrese koje ni ne postoje u EPROM-u 2764! Dakle, nešto u interapt rutini ne valja... Ovo je stvarna sekvenca iz moje prakse, dobra ilustracija kako analizator moe da pomogne da se brzo lokalizuje greška u programu.

Kao što je rečeno, analizator je 24-kanalni i svi ulazi mogu da se koriste kao univerzalni i ravnopravni kanali ili da se posmatraju kao grupe od 16 ulaza za adrese i 8 ulaza za magistralu podataka (ako je emulator uključen, ovi ulazi su interno povezani na izaze emulatora). Pošto se za male mikroprocesorske kontrolere retko koristi svih 16 adresnih linija (EPROM 2764, koji je najčešće u upotrebi, koristi samo 13 adresa) postoji opcija da se jedan ili dva ulaza analizatora (koji bi inače sluili za semplovanje adresnih linija A14 i A15) preusmere na eksterni ulaz i na signal kojim se proziva emulator (CS AND OE).

Nemojte da se uplašite od navedenih rekonfigurisanja i izbora opcija, jer vam za njih neće biti potrebne hardverske izmene na ploči razvojnog sistema, nego se sve vrše mišem ili tastaturom u programu.

Frekvencmetar

To je standardni instrument koji možete da nađete u mnogim elektronskim laboratorijama. Zadatak mu je da premerava i pokazuje učestanost nekog naizmeničnog signala. Osim toga, ovaj naš frekvencmetar moe da se prekonfiguriše i da radi kao brojač impulsa; jedina razlika je u tome što se brojač neće resetovati svake sekunde, nego će se stanje brojača kumulativno uvećavati do ručnog reseta.

21k3.gif (6167 bytes)

Digitalni signal čiju učestanost treba izmeriti (ili čije impulse treba brojati) se dovodi na eksterni (EXT) ulaz. Tačnost merenja zavisi od preciznosti upotrebljenog kvarcnog oscilatora, a ona u najnepovoljnijem slučaju iznosi oko 10 ppm (parts per milion = delova na milion). Ugrađeni preskaler može da se upotrebi za proširenje mernog opsega, ali se onda smanjuje rezolucija očitavanja.

Indikator impulsa

Nikad ne treba procenjivati korisnost nekog instrumenta na osnovu njegove složenosti. Indikator impulsa je vrlo jednostavan dodatak analizatoru, ali je od velike koristi kod razvoja softvera. Njegov zadatak je da nam javi svaki put kad se steknu uslovi koje smo unapred definisali, recimo kad mikroprocesor očitava sadržaj (drugim rečima, kad izvršava instrukciju) na nekoj određenoj adresi u sistemu koji testiramo. To su najčešće instrukcije koje se nalaze neposredno posle uslovnih skokova u programu: recimo, kad je pritisnut neki taster na tastaturi kontrolera ili kad je stigao novi bajt na serijski port. Često je od presudne važnosti informacija da li je program uopšte registrovao promenu, a to će nam dojaviti indikator impulsa pojavom slova P (ekvivalent oznaci PULSE na logičkoj sondi) i zvučnim signalom, ako smo ga uključili.

21k5.gif (7594 bytes)

Obzirom da Sherlock vrši stalnu dojavu logičkog stanja na eksternom ulazu, jedna od zgodnih mogućnosti je da konfigurišemo indikator impulsa da nam prijavljuje i promenu stanja na istom ulazu (treba samo odabrati rastucu ili opadajucu ivicu) i tako bismo u potpunosti simulirali logičku sondu. Ako istovremeno frekvencmetar konfigurišemo kao brojač impulsa (i on dobija impulse sa EXT ulaza) biće to prilično zanimljiva sonda, zar ne?

Pokazivač stanja memorije ili porta

Ovo je još jedan strogo namenski dodatak koji će nam tokom rada pomoći da vidimo što više parametara sistema koji razvijamo. Možemo da odaberemo jednu adresu, i svaki put kad ciljni sistem proziva tu adresu i kad je na EXT ulazu zadata (rastuca ili opadajuca) ivica, trenutno stanje na magistrali podataka (DATA BUS) biće registrovano i prikazano do sledeće promene. Tako, ako EXT ulaz spojimo sa WR nožicom na eksternom RAM-u ciljnog sistema, imaćemo stalni uvid u sadržaj jedne memorijske lokacije, a ako EXT ulaz prebacimo na signal kojim se prozivaju izlazni portovi, imaćemo stanje jednog 8-bitnog izlaznog porta.

21k7.gif (5012 bytes)

Pošto prikazivanje stanja simultano prati promene u ciljnom sistemu, podrazumeva se da ćemo ovako posmatrati samo sadraje koji se menjaju dovoljno sporo da ih možemo pratiti okom. I pored ovog ograničenja, sigurno je da će ovaj pokazivač često biti od pomoći.

Generator impulsa

Ako se bavimo razvojem nekog čisto hardverskog sklopa (bez mikroprocesora) onda postoji mogućnost da će nam zatrebati generator impulsa određene frekvencije. Sherlock nam omogućava da učestanost koju smo odabrali za interni takt prosledimo na RESET izlaz. Odnos signal/pauza je 50%, a impulsi su digitalni, što znači da bi se na ekranu osciloskopa videli kao "četvrtka".

21k4.gif (6545 bytes)

Ograničenja

Kao svaki instrument, i ovaj naš ima svoj radni opseg, pa je korisno znati koja su ograničenja. Dakle:

- Svi ulazi imaju zaštitu od pojave poznate pod nazivom LATCHUP (jednom ćemo opširnije pisati o tome) koja donekle služi i kao prenaponska zaštita, ali ipak treba prihvatiti činjenicu da su dozvoljeni naponi na ulazima u okviru TTL standarda, znači između -0.5 i .5 V.

- Maksimalna učestanost internog takta je 10 MHz, a za eksterni takt je nešto viša, u zavisnosti od brzine upotrebljenih RAM-ova u sklopu analizatora.

- Vreme odziva emulatora zavisi takođe od brzine RAM-a u emulatoru, ali grubo možemo da kažemo da će ovo vreme u svakom slučaju biti povoljnije od svih standardnih EPROM-a.

- Kapacitet analizatora je 32768 uzoraka po 24 bita.

- Ako se koristi za razvoj mikroprocesorskih kontrolera, glavno ograničenje se odnosi na činjenicu da je razvojni sistem prilagođen 8-bitnim mikroprocesorima, dakle sa 16-bitnom adresom i 8-bitnim podacima.

21k6.gif (5669 bytes)

- Niska cena hardvera u odnosu na performanse sistema je pre svega rezultat optimizacije sklopa (uglavnom na račun složenijeg softvera), ali su ostala još neka ograničenja koja se jedva primećuju u praksi. Po logici stvari, uređaj bi morao da ima četiri 16-bitna adresna komparatora (za startni uslov, takt upisa, indikator impulsa i pokazivač stanja memorije), ali u šemi vidite da postoji samo jedan. To je solidna ušteda, ali prva posledica je da u toku ciklusa upisa analizatora ne rade indikator impulsa i pokazivač stanja memorije (što i nije tako bolno jer je ovaj ciklus najčešće vrlo kratak), a druga je da sklopovi za startni uslov i takt upisa dele istu adresu (isto kao i indikator impulsa i pokazivač memorije). Videćete da se u praksi i ne javlja potreba za ovim preklapanjima, zapravo da ako se adresa koristi za uslov starta onda se ne koristi za takt upisa (odnosno upisuju se sve adrese), a slično važi i za indikator impulsa i pokazivač memorije, oni su čak vrlo retko u upotrebi istovremeno. Pokušajte da menjate bilo koju adresu u prozorima na ekranu, i videćete da se i na prozoru njegovog "para" adresa automatski menja.

Prateći softver

Uz komplet delova za gradnju razvojnog sistema Sherlock isporučuje se i disketa sa nekoliko izvršnih fajlova. Tu su programi EMUL, koji služi za brzi prepis izvršnog koda generisanog od strane asemblera u emulator, zatim programi OBJ2BIN i HEX2BIN kojima se vrši prevođenje objektnih i heksadecimalnih ASCII fajlova u binarne (koji jedino mogu da se prepisuju u emulator), i na kraju SHERLOCK, na čijem objašnjenju ćemo se malo duže zadržati.

Ovaj program sadrži komletnu podršku svih delova razvojnog sistema. Neka nekoliko ekrana iz ovog programa budu ilustracija kako se postavljaju parametri za rad analizatora: Pored toga što je moguće birati parametre u malim prozorima iznad dijagrama, udobnije je otvoriti velike prozore, tim pre što je na njima grafički predstavljena ekvivalentna šema sklopa, koju možemo da modifikujemo mišem, tako što menjamo položaje preklopnika direktno na ekranu. Za ljude koji se bave hardverom ovo je lakši način izbora parametara od tabelarnog.

Pojedine tačke u dijagramu možemo da obeležimo i da im dajemo komentare, koji će se pojaviti svaki put kad postavimo kursor na neku od tih tačaka. Moguće je usnimavati sve semplovane sekvence na disk, a za hakere je posebno interesantna opcija da se u radni prostor analizatora direktno upiše segment memorije iz računara, ako se upuštamo u analizu rada PC-a.

Postoji još veliki broj dodataka koje ćemo samo nabrojati: kalkulator za konverziju brojnih baza, VIEW koji omogućava brzi pregled ASCII fajlova sa udobnim višesmernim skrolovanjem pomoću miša, kao i SEARCH funkcija za pretraživanje semplovane sekvence. Imamo takođe mogućnost da zumiramo, skrolujemo dijagram horizontalno na nekoliko načina, premeravamo broj semplova između dve bilo koje tačke na dijagramu, da signale bojimo po želji i da im dajemo proizvoljna imena. Za sve funkcije je podran rad mišem i tastaturom.

** pod pojmom časopis iz ovog članka podrazumeva se magazin PC Press u kome je ovaj članak svojevremeno objavljen.

Kontak - za vise informacija.

 


| Index | Novo na sajtu | Tabla za porukeNovi broj | Prethodni brojevi | Teme po oblastima | Knjige | Oglašavanje u časopisu | Download | Klub | Pretplata | Listinzi | Novosti | Razvojni sistemi | Uređaji iz časopisa | Free newsletter | Šeme i pločice | Linkovi | Distributeri | Usluge | Kontakt

 

 Za problem YU slova pogledajte ovu stranu.
 mikroElektronika  .   Za sva pitanja i komentare obratite se na webmaster.

 

1