Posts

Software engineering deep level optimization - INLINE tehnika optimizacije - II deo

Image
Nedavno sam krenuo sa pisanjem seta blog postova na temu deep level optimizacije te da nastavim sa istim. Kao što sam naveo u prvom blog postu, postoji više tehnika deep level optimizacije software-a, kako bi se što bolje iskoristio potencijal mikroprocesora i računarskog sistema generalno. Kompajleri, ključne reči kompajlera (koje nisu deo standarda programskog jezika već deo kompajlerskih komandi), setovi instrukcija, prevashodno ekstenzije van standardnog seta Intel instrukcija, su ključ za deep level optimizaciju. U ovom tekstu navodim prvu tehniku optimizacije koja se zove "inline" a svodi se na redukovanje korišćenja stack-a kao i optimizacije broja instrukcija koje treba izvršiti, te se jedan deo posla prepušta kompajleru.Tehnika optimizacije zvana INLINESam naziv tehnike deep level optimizacije je logičan, u trenutku kada shvatite koncept optimizovanja software-a ovom tehnikom. Ključ inline optimizacije je zaobilaženje stack-a i samim tim redukovanje broja instrukcij…

Kako zarađuje open hardware zajednica

Image
Možda se većina pitala kako zarađuje open hardware zajednica obzirom da proizvođač otvori kompletno rešenje, omogućeno za download, uključujući električni dizajn, dizajn štampane pločice u formatu dostupnom za jedan od popularnih CAD alata koji podržavaju proizvodni proces kao što je Autodesk Eagle CAD. Bez ulaženja u marketing, jer isti ovde igra ulogu što ću navesti tokom teksta ukratko navodim razloge istog.
Open hardware
Open hardware je odlična stvar prevashodno za širenje znanja o hardware-sko software-skim rešenjima, poznata je svima Arduino platforma, ili ti open hardware platforma za kreiranje prototipova. Ali kako ista zarađuje ako su otvorili svoje hardware-sko software-sko rešenje? Na donjoj slici prikazan je deo web stranice sa koje možete, za džabe preuzeti hardware-sko rešenje Arduino UNO R3 razvojne pločice: električnu šemu, Eagle PCB dizajn itd. imate praktično dostupno sve što vam je potrebno. To znači da istu pločicu možete napraviti i sami, te kako to onda da Arduino…

Jednobitni ADC za analogne senzore

Image
Implementacija jednobitnog analognog senzora je jednostavna i bazira sa na upotrebi komparatora koji trigeruje visok ili nizak nivo: +5VDC ili 0VDC tj. logičku jedinicu i logičku nulu. Princip rada je jednostavan o čemu će biti reči u blogu koji sledi.
UVOD
Jednobitne ADC ili ti jednobitne analogno digitalne senzore je jednostavno implementirati korišćenjem komparatora, takođe moguće je koristiti i operacioni pojačavač koji se konfiguriše u režimu rada komparator. Princip rada je jednostavan, na neinvertujući ulaz se dovodi analogni signal koji se poredi sa referentnim nivoom koji definiše nama željenu analognu vrednost signala, kada analogni signal dostigne željenu vrednost, komparator generiše logičku jedinicu na izlazu, u suprotnom logičku nulu. Generisani digitalni signal sa izlaza komparatora se dovodi na interrupt ulaz mikrokontrolera, što je dovoljno da trigeruje obradu događaja koja je dodeljena istom senzoru tj. događaju - dosegnuta je određena vrednost. Slika 1. prikazuje anal…

Arduino DIY - Limiter 500mA strujno ograničenje uz shutdown opciju - IV deo

Image
Ovo je četvrti deo o limiteru do 500mA i poslednji u nizu, prikazuje implementiran limiter o čemu će više reči biti u blog postu. Konceptualno, implementacija je identična šemi koja je navedena u prvom delu, sa određenim modifikacijama. U završnoj implementaciji korišćen je relej, pobuđen bipolarnim tranzistorom i merenje se odvija upotrebom operacionog pojačavača konfigurisanog da radio kao diferencijalni operacioni pojačavač, slede detalji.
Implementacija limitera do 500mA
Kao što je već navedeno koristi se identičan koncept kao što je navedeno u prvom delu serije blogova o limiteru do 500mA sa time što je ovde korišćen relej i operacioni pojačavač. Šema iz prvog dela je koncept te i implementirana u celosti sledi isti, osim što bipolarni tranzistor pobuđuje relej a merenje se vrši operacionim pojačavačem, implementacija je prikazana na donjoj slici. Obzirom da je princip rada identičan kao u prvom delu, neću ponavljati isto te se samo referišem na prvi deo ovde.
Slika 1. Implementacij…

Arduino DIY - Limiter 500mA strujno ograničenje uz shutdown opciju - III deo

Image
U drugom delu smo prikazali koncept rada analogno digitalnog konvertora i za šta se isti može koristiti. U ovom nastavku konkretno prikazujemo Arduino rešenje i program koji zapravo radi kao ampermetar za merenje potrošnje električne sturje koja protiče kroz LED diodu. Dokazi da je merenje pomoću Arduina tačno dokazani su putem digitalnog ampermetra koji pored Arduina meri potrošnju električne struje kroz granu LED diode. Kao što ćete videti Arduino program i digitalni ampermetar prikazuju istu vrednost sa čime se pokazalo da je merenje Arduino programom tačno, te isto možemo koristiti za limitiranje potrošnje do 500 miliampera maksimum.
Praktična realizacija merenja potrošnje električne struje kroz granu, u ovom slučaju LED
Da pređemo sa priče na konkretnu realizaciju, u drugom delu sam naveo koncept rada ADC tj. analogno digitalnog konvertora koji će se koristiti za projekat limitera potrošnje električne struje do 500 mili ampera. Ukoliko potrošač povuče iz bilo kojeg drugog razloga (…

Arduino DIY - Limiter 500mA strujno ograničenje uz shutdown opciju - II deo

Image
Ovo je Arduino UNO uradi sam projekat za limitaciju potrošnje jednosmerne električne struje limitirano na 500mA, ovo je nastavak teksta, pri čemu ovde nastavljamo sa analogno digitalnim konvertorom, uopšteno govoreći obzirom da je isti integrisan u MCU Arduino pločice. Konkretno razmatramo MCP3204/3208 ADC integrisano kolo. Recimo na starijim razvojnim pločama, MCP IC je eksterno vezan za MCU preko SPI komunikacije što će biti objašnjeno, kao i to koji će se koncept merenja koristiti za rešenje limitera potrošnje struje do 500mA.

ADC - Analogno digitalni konvertor

Više puta sam pisao o ADC tj. analogno digitalnom konvertoru. Ulaz ovog elektronskog kola je analogni signal a izlaz je pravougaoni analogni signal tj. povorka bitova što je ujedno SPI signal za komunikaciju između ADCa i MCUa, kako bi MCU uradio dalju obradu digitalnog signala (jednom prilikom sam pisao da je digitalni signal zapravo klasa analognih signala koji su pravougaoni po prirodi ali ih inženjeri zovu digitalnim, zapr…

Software engineering deep level optimization - I deo

Image
Nedavno sam se vratio na tehnologiju software-skog inženjerstva (u pravom smislu te reči, pošto i Kendo UI, i slične stvari stavljaju u isti koš, pa i to smatraju inženjeringom - NE!) koju sam ranije radio i imao dosta iskustva sa istim, te se proteklih dana prisećam nekih stvari. Odlučio sam da napišem nekolicinu blog postova o takozvanoj deep level optimizaciji i šta zapravo ista nosi sa sobom kao jednoj od najtežiš grana softwareskog inženjerstva.
Deep level optimizacija je tehnika opitimizovanja software-a kako bi se postigli što bolji rezultati po pitanju brzine izvršavanja i maksimalnog iskorišćenja potencijala mikroprocesora kao i računarskog sistema. Samim tim ovo znači da pored Any CPU/x86 buildovanja software-a, kako bi se isti mogao izvršavati na bilo kom PC računarskom sistemu, bez obzira da li je AMD CPU, Intel CPU ili bilo koji drugi mikroprocesor namenjen za PC tržište, postoji i nešto drugo. To drugo zahteva razumevanje više stvari, arhitekturu mikroprocesora, kako se i…