BNC iškrype

Eilinė kurybinė krizė, tai pasidalinsiu informacija apie iškrypusius BNC kištukus.
Net pats, prieš metus ir biški dariau iškrypusius BNC kištukus. Dabar į rankas papuolė pramoniniai.

BNC connectors fast
Manote tai paprasti BNC kištukai? Ogi ne, čia kištukai naudojami modulinėse sistemose, kai modulio dėžutė jungiasi į kokį backplane. Šie kištukai neturi užsukimo. Ir jų dydis nesuderinamas su standartiniu kištuku.
Continue reading →

ARM:0011 PWM

Vėl nuo “sudėtingų” einam link pačių paprasčiausių. Šį kartą pabandysim pasileisti hardwarinį PWMą. Dabar viskas tupi vėl pagrindiniam, main.c faile.

Atmel ARM SAM7S PWM

Mano LCD kontrastas valdomas su programiniu PWM. Reikėtu taip kvailai nedaryti, o panaudoti tikrą hardwarinį (kalbainiškai- aparatinį) PWM. Internete susiradau pavyzduką su PWM. Ten naudojamas PWM0 kanalas, ir jo galimos išėjimo kojos labai toli nuo mano LCD lizdo. Tuo tarpu PWM1 kanalo galimo kojos visai patogios. Todėl, kad palengvinti būsimos, pataisytos PCB projektavimą, nutariau užprogramuoti PWM1 kanalą. Source kode yra viskas palikta ir PWM0 kanalo programavimui. O peržvelgus abu variantus, iškarto pasidaro aišku kaip užprogramuoti likusius.
Programoje kiek tai bandoma paaiškinti kaip skaičiuojasi vienas ar kitas parametras- tikslas buvo 2kHz PWM signalas. Bet vistiek rekomenduoju pasiskaityti datašytą.

Kada padarys tokį kontrolerį kurio kojytės bus dar labiau nepririštos prie periferijos?

Aišku:
Atmel ARM SAM7S PWM example with source code and hex, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.

Canon skanerio “kamera”

Dabar galima nusipirkti tokius primityvius ir pigius skanerius. Panašius skanerius naudoja ir visokie printeriai- “kombainai”. Nesvarbu kas juos gamina, tačiau jų “jutiklis”, o tiksliau, vienos linijos kamera tikriausiai bus pagaminta Canon firmoje.
Anot datasheeto, tai “The contact-type image sensor unit consists of a rod lens array, RGB LED, light-guide and a substrate on which a line Sensor is mounted.”. T.y. visa eilė mikro lęšių, o gal tik šviesolaidžių, optinio šviesos paskirstymo elemento, RGB LEDų (kurius prieš šimtą metų jau aprašiau labai senam poste) ir labai labai ilgos bekorpusinės mikroschemos.
Seniau niekur neradau datašyto. Dabar jis laisvai prieinamas. Todėl, pasinaudojės ARM procesoriuku kaip taktinio ir sinchronizacinio signalo tiekėju prijungiau vieną “linijinę kamerą” prie oscilografo:

Canon scanner sensor hack
(foto pasididina)

Valdymas labai paprastas- pajungiam maitinimą (3V), pixel clock – max 4MHz, “kadro sinchronizacija” – kas 5 ar 3 tūkstančius pixelių, MODE režimą į žemę arba Vcc- taip persijungia rezoliucija. O informacija nuskaitom per vienintelį “out” kontaktą- ten analoginis signalas, max kažkur 800mV.
Vref aš niekur nepajungiau, ten yra kažkoks signalas pagal nutylėjimą. Nors šiaip reikėtu ten duoti signalą.
LEDų nejungiau, ten reikia arba 30 arba 50mA srovės.

canon scanner sensor timing diagram
Raudona rodyklė rodo pradinį “juodą signalą” kuris yra užtamsintas hardwariškai- ten rodos kažkur apie 80 pixelių, poto eina “video signalas”. Aš “sinchro” signalą dariau per greitai, bet sensorius puikiausiai veikia- oscilogramoje matosi kažkur pusė “liniuotės”.
Mano turimam datasheete nėra tu žaliai pažymėtu pikų. Gal tai naujas modelis? O gal paprasčiausiai blogas sensorius- aš ji gi pakėliau iš šiukšlių kalno.
Pirma žalia rodyklė- mano pirštas, antra-trečia tas MP3 grotuvėlis- žiūrėti pirmą nuotrauką.

Dar nepatikrinti spėjimai- kuo lėčiau skaitai informaciją, tuo labiau “jautresnis” daviklis. Čia taip pat kai foto ir video kameroje- kuo daugiau fps (ar trumpesnis šlaikymas), tuo didesnio apšvietimo reikia.

Kad panaudoti praktiškai, reikia gana greito ADC ir daug RAM.

P.S. Tai ARM straipsnis numeris 13.

Diskų “benčmarkai”

Jau kuris laikas naudoju SSD diską kaip sisteminį. Tačiau diskas tik 60Gb ir jau buvo ant ribos užpildytas. Netgi, kai kurie folderiai ir failai sukompresuoti. Po įvairių manipuliacijų į rankas papuolė senas Kingston 128Gb SSD diskas ir nauja 128Gb Toshiba. Žemiau pateikiu keletą sintetinių bechmarku. Visi testai padaryti su ta pačia programėle- “ATTO Disk Benchmark” v2.46.

Pradžiai- mechaninis 1Tb Samsung kietas diskas:
Samsung 1Tb disk benchmark
Continue reading →

Šamanistinis žiedas II

Kažkada rašiau apie varinį žiedą. Kai jį dariau, pirmasis variantas gavosi per didelis- kažką ten blogai nužiūrėjau užrašuose ir padariau per didelį. Tai tas ruošinys ir mėtėsi garaže ant varstoto.
Maždaug prieš savaitę gimė įdėja padaryti ką nors sudėtingesnio. Ir gavosi va toks žiedas:
Varinis ziedas su runomis
(beveik visos nuotraukos išsididina)

Toliau bus daug foto: Continue reading →

ARM:0010 grafinis LCD

Tai palengvinta grafinio displėjau valdymo programa. Ji neturi daugybės opcijų ir šiaip ribota. Tai pagrinde lenko Radosław Kwiecień programa, aš ja kiek adaptavau mano stiliui ir prirašiau minimalistinę paprogramę proporciniam šriftui. Deja, šriftas tik 8 pikselių aukščio ir pozicionuojasi Y ašyje kas 8 pikseliai. X ašyje viskas gerai- galima pastumti per vieną pikselį.
Proporcinis šriftas nupaišytas pagal originalų tekstinių LCD šriftų vaizdelį, tik perdarytas proporciniui variantui. Čia man padėjo java programa iš AVR grafinių LCD paketo. Ten viduje failo yra nuorodos.

ARM SAM7S graphic LCD
Kadangi SAM7 turi daug kojų, tai pajungtas ir grafinis ir tekstinis LCD.

Mano turimas LCD tai pats pigiausias kiniškas LCD su KS0108 kontroleriu. Jo vaizdelis invertuotas, todėl jau ne kartą minėtąpenis harder” paveiksliuką teko invertuoti.

Horse penis harder on small LCD LOL
Kadangi sumažinto teksto neįmanoma perskaityti, šukį be kurio paveiksliukas negalioja perrašiau naudodamas savo teksto rašymo paprogrames. Dar viršuje rodomas laikas nuskaitytas iš RTC mikroschemos.

Šio posto source code ir hexas:
Grafinio LCD ARM SAM7S source code ir hex, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.

ARM:0009 RTC HT1381

Čia tos keistos Holteko HT1381 mikroschemos, kur prisilupinėjau iš šroto. Viskas tas pats kaip ir AVR versijoje, tik perrašyta taip, kad suprastu SAM7 mikroschema. Nieko stebūklingo.

ARM SAM7 HT1381 RTC

Ten per viduriuką rodo laiką kiek turi savyje holtekas. Čia ką tik įjungta, tai tik 00:01:48.

Source kodas ir kompiliuotas hex failas:
ARM SAM7S ir Holteko RTC HT1381 source code ir hex, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.

ARM:0008 taimeris

Pagaliau prisikasiau prie taimerio ir pertraukimo pagal taimerį. Tai bene dažniausiai naudoja taimerio funkcija- gi tereikia kas kažkiek laiko apsiklausti visokios periferijas ir apdoroti rezultatus. O kitą laiką kontroleriukas miega ir taupo elektrą. Šiame pavyzdyje MCU elektros dar netaupo, tačiau taimeris veikia.
Programa sulipdyta iš interneto lobių. Tik kiek pakeistos kai kurios vietos, kad man būtų suprantamiau.

ARM SAM7S timer
Čia matosi, kaip softas bando organizuoti 1ms (1000Hz) pertraukimą. Pertraukimo metu invertuojama viena koja ir ją galima pamatuoti su oscilografu. Nežinau kas kaltas, bet gavosi 984.4μs (1016Hz). Kas kaltas dar nežinau- aš nuskaitau vidinį MCU dažnį ir perskaičiuoju automatiškai dalinimo koeficientus. Vartotojui-programuotojui tereikia tik įvesti norimo intervalo dažnį hercais.

Source kodas pasidarė dar labiau modulinis- pertraukimas pagal taimerį faile “timeris.c”, o PIO kojų pertraukimą perkėliau į “pioint.c”. Taip lengviau man bus “klijuoti” būsimas programas.

Viskas kompiliuojasi per GCC toolchainą Yagarto, make failas dar sugeba per J-Linką suprograminti į mikroschemą.

ARM SAM7S taimerio pertraukimo source code ir hex failas, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.

Dar galima pastebėti, kad daug kas persikraustė į pertraukimus.

ARM:0007 I2C ir LM75 ar FM75

Dar vienas atmintinukas- SAM7 ir I2C. Šį kartą visas I2C softas drožtas nuo Sun Microsystems. Jį pasirinkau, nes viskas labai gražiai suprogramuota, yra padaryti avariniai taimautai ir panašiai. Kiti internete prieinami sourcai buvo labai kreivi ir be taimautu- jei I2C sleivas nerastas ar neatsiliepia, tai SAM7 paprasčiausiai užsikemša. Aišku čia viskas labai paprastai padaryta, jokių fancy efektų.

ARM SAM7 I2C
Čia vėl netolygus ekranas dėl per dažno perpaišymo. Dar pastebėjimas- LM75 ir FM75 negalima per dažnai klausinėti apie temperatūrą. Vienas iš jų pradeda visada sakyti tą pačia temperatūrą, kitas išviso prabyla 0xFF skaičiais. Dar negalima labai eksperimentuoti su I2C (TWI) greičiais.

ARM SAM7 I2C debug
Buvau pajungęs defektuotą LM75 mikroschemą, tai ilgai knisausi. Net teko pajungti sniferį ir žiūrėti kas ten dedasi. Ta, ore pakibusi plokštelė yra LM75 slave board nulupta nuo plazminio teliko matricos. Jos ten monitorina ar neperkaito telikas.

Nu ir aišku:
ARM SAM7 I2C source code ir hex, hexas sukompiliuotas Atmel AT91SAM7S256AU serijos čipui.

ARM:0006 SPI ir eprom

Dar vienas atminties rezervas. Šį kartą, prie esamo softo kur buvo pertraukimai dėl kojų pridėtos papildomos paprogramės leidžiančios skaityti-valdyti 25XXXX serijos SPI mikroschemas. Softas tiesiog trauktas dalinai iš interneto, dalinai iš senų mano AVR bibliotekų. Softas išbandytas tik su viena mikroschema ir tik skaitymo režime. Tačiau spėju, kad viskas turi veikti.

Taigi, brain dump, Atmel SAM7 ir SPI.
ARM SAM7 SPI
Eilutė ADR rodo EPROM adresą ir reikšmę tame adrese. Vaizdelis toks pas LCD “brukšniuotas” dėl to, kad LCD per dažnai perpaišomas.
Status ir info eilutės liko iš ankstesnio posto softo.

Nu ir aišku:
ARM SAM7 SPI source code ir sukompiliuotas hexas, hexas aišku sukompiliuotas Atmel AT91SAM7S256AU čipui.