Posts

Showing posts from 2020

Software engineering deep level optimization - uvod u merenje - III deo

Nakon što se primene određene tehnike optimizacije software-a, performanse je potrebno izmeriti kako bi bili sigurni da je optimizovanje software-a uspešno završeno. Ono u šta moramo biti sigurni je do kog nivoa tačnosti i preciznosti moramo izvršiti merenje. Već sam napomenuo da se u slučaju deep level optimizacije (asm) brzina izvršavanja meri brojanjem ciklusa takta a u ovom blog postu ću pokazati prvo i zašto. Svakako, na početku ću proći kroz koncept rada računarskog sistema sa multi-threading operativnim sistemom koji se izvršava na jednom procesorkom jezgru, radi jasne slike zašto se broje clock ciklusi a ne meri sistemsko vreme, kako to mnogi developeri rade, radi dobijanja rezultata merenja, što je daleko od bilo kakve tačnosti i preciznosti merenja. Nakon toga u narednim blog postovima prikazaću hardware-ske brojače i kako se isti koriste i zbog čega (ovde je naravno jasno, uvek dodata hardware-ska jedinica integrisana u core mikroprocesora znači da ista ne zahteva vreme p

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 INLINE Sam 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 instrukc

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

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. prik

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 . Slik

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

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