Monthly Archives: February 2009

Fakyrui fokusas (ne)pavyko

Jau senai norėjau pabandyti tokį fokusą- perlituoti DIMM mikroschemas ant kitos, laisvos pusės ir pabandyti padvigubinti atmintį. Kol SDRAM DIMM atmintys buvo brangios ir sudeginti kompiuteriai buvo didelė bėda, tol nenorėjau daryti šį eksperimentą. Dabar, tiek atmintis, tiek tokio lygio kompai nieko nekainuoja, todėl pabandžiau…

Pradžiai susiradau donorus- du vienetus po 128Mb ir vieną DIMMą po 256Mb. Visi DIMMai visiškai vienodi, to pačio gamintojo, atminties mikroschemos visiškai vienodos: PQ3S168E75 – tai permarkiruotos mikroschemos, todėl neaiškus nei gamintojas, nei jų parametrai. Greičiaisiai tai koks nors Synchronous DRAM 128Mb x 4, x8 ar x16.
SDRAM DIMM HACK

Pradžiai “nurengiam” čipukus:
SDRAM DIMM HACK

Prilituojam, pagal pavyzdį perlituojam jumperius- rezistorius. Perrašom Serial Epromą, kad kompas žinotu, kad čia 256M DIMMas.

SDRAM DIMM HACK

Deja, fakyrui fokusas nepavyko 🙂 Kompas visiškai nemato DIMMo ir visiškai nereaguoja. Ismeigus kartu su kitu, geru DIMMu nieko geresnio nepasiekiam- kompas nepasileidžia. Čipai visi šalti, trumpo jungimo tarp kojyčiu nėra. Matyt, visdėlto, perkaitinau aš tuos SDRAM čipus.

Papildymas po valandos- pavyko! Continue reading →

Kamertonas

Va kokį daiGčiuką radau:

Kamertonas

Tai kamertonas. Tai plieninis daikčiukas, kuris virpa pastoviu dažniu. Dėl konstrukcijos ypatybių, stuktelėtas kamertonas gana greitai pradeda skambėti tik pagrindinių tonu- visos kitos harmonikos labai greitai užslobsta. (Šiaip kamertonas turi tik 6 1/4 eilės harmonikas- dvi su puse oktavos aukštyn, palyginkit su plienines styga, kurios harmonikos kartojasi kas viena oktava ir dėl to gražiai skamba visokiuose pianinuose) .
Tai kaip ir garso etalonas- pagrindinio tono dažnis labai stabilus nes priklauso tik nuo fizinių kamertono išmatavimų ir metalo sudėties. Metalas specialiai parenkamas, kad kiek galima mažiau plėstusi nuo temperatūros.

Ant mano kamertono parašyta C3 ir 1024. Skambėjimo dažnis labai artimas (pagal klausa) 1Khz. Neradau mikrofono, kad pajungti prie dažnimačio, o oscilografas rodo, kad virpėjimo dažnis daugiau už 1000Hz ir mažiau už 1048. Kogero tai 1024Hz dažnis kaip ir parašyta ant kamertono… Tik įdomu, kodėl parinktas toks “binarinis” dažnis? Juk šitas kamertonas pagamintas prieš 30…40 metų.

Engineering Sample… WTF?

Norėjosi į vieną mikroschemą įpūsti kodą ir staiga pasipylė klaidos:

Info: Device 1 contains JTAG ID code 0x020A30DD
Info: Device 1 silicon ID is ALTERA04-0
Error: Operation failed
Info: Ended Programmer operation at Sat Feb 14 21:28:57 2009

Pasinaršius internete radau užuominą apie problemą. Žiū fotkę:
Altera engineering sample

Raidelės “ES” reiškia “Engineering Sample” ir šios mikroschemos ID skiriasi nuo paprastos, serijinės. Todėl paprasti fuse bit .pof failai netinka. Tačiau Quartuso mikroschemų saraše tokios nėra. Yra tik standartinė. Jokių problemų- softe ta mikroschema yra, tik nesimato. Pradedam projektą “retail” versijai. Poto atsidarom projekto direktoriją ir susirandam faila “projekto-pavadinimas.qsf”. Oten viduje, kažkur yra eilutė:
set_global_assignment -name DEVICE EPM1270F256C5
Šią eilutę pataisom į:
set_global_assignment -name DEVICE EPM1270F256C5ES
ir perkompiliuojam projektą. Ir jokių problemų. Aišku, gali kilti problemos jei nėra source code, o turim tik programinimo failus. Bet turiu didelį itarimą, kad ten skiriasi tik vienas baitas.

Small peek: kas dabar guli ant stalo…

Šiuo metu ant mano stalo guli štai toks kurinys:

3 PHASE DRIVE

Čia ant mažos PCB prilituoti 6 maži mosfetai, GAL16V8 mikroschema. Vertikaliai kabo viena iš ATMEGA16 testinių ploksčių. Juodulys- 2.5″ kieto disko likučiai.
Šiuo metu skaitom Atmel firmos straipsnius apie 3 fazių variklių valdymą su AVR mikrokontroleriais. Kol kas nelabai gaunasi, tiksliau ir neturi gautis, nes nesumontavau nei vieno atbulinio ryšio elemento: nei holo daviklio, nei trifazės įtampos nuskaitymo.
GAL mikroschema užprogramuota PWM valdymui per visas tris fazes ir dar kaip papildoma funkcija- apsauga nuo vienos fazės abiejų raktų įjungimo vienu metu. Tačiau ši mikroschema pati įnešė nenustatytą bugą- įjungimo metu, kažkodėl būtent ir įsijungia du tos pačios fazės raktai- matyt kažkoks pereinamasis procesas daro įtaką. Gerai, kad visas prietaisas maitinamas iš USB lizdo ir per kelis apsauginius diodus- MOSFETai įkaista tiek, kad pradeda rūkti dūmai ir išsilydo lydmetalis po raktu. Tačiau raktai neperdega- nes lieka vos pora voltų ant rakto. 🙂
Manau, kad iki sekmadienio perskaitysiu dokumentaciją ir paleisiu trifazį variklį pilnu greičiu.

ATMEGA USB 22: RTC laikrodis

Kažkaip neparašau apie laikrodžių darymą. Kiekvienas bent kiek įvaldęs kontroleriuką kada nors pradeda gaminti laikrodį. Aš irgi 🙂 Labai labai seniai dariau RTC laikrodį su PIC procesorium. Rašiau aš jį asembleryje… ir labai nervinaus, nes buvo sunku ir tas PICas turėjo savo bjauriu niuansu. Šiaip internete pilna laikrodžių- visokiems procesoriams, visokiems ekranams. Pasibandžiau keletą, kai kurie patiko, kai kurie ne. Pagaliau vieną dieną pasakiau- va ateis savaitgalis ir pradėsiu rašyti laikrodį nuo nulio.

Pagrindinės užduotis kurias sau pastačiau:

  • RTC nepriklausantis nuo maitinimo. T.y. atjungiam maitinimą, o laikrodis sau toliau veikia.
  • Hardwarinis laikrodis- tikras nesusipratimas smaukytis su procesoriaus kodu, kad skaičiuoti kiekvieną pirstelėjimą ir apsakaičiuoti laiką. Laika turi skaičiuoti RTC čipas- procesorius užsiima grožiu ir User Interface.
  • Valdymas turi būti aiškus, o ne su vienu nupiepusiu mygtuku. Naudojam kaip minimum 6 klavišus (juolab kad naudojant ADC mygtukus, jų skaičiaus kaitaliojimas nėra nei hardwariškai, nei softwariškai sudėtingas). Mygtukai: kairėn, dešinėn, aukštyn, žemyn, OK ir Cancel. Kaip bet kuriame teliko distanciniam.
  • Jokių asemblerių, advanced dalykėlių (ir atminties taupymo). Turi kompiliuotis su gcc.
  • Laikrodžio variklis (core) turi lengvai persikelti ant kito “displėjaus”. T.y. dabar rašau naudojant LCD ekraniuką, bet su minimaliu pokyčiu, softas turi persikelti kad ir į LED matricą ar kokį rotary clock displėjų.

Konstravimui panaudota esama hardwarė. Tik papildomai, prie I2C porto pajungta RTC mikroschema, kurią man maloniai padovanojo Intersil semiconductors: isl1208.
RTC ATMEGA clock

Čia kiek geriau matosi analoginių mygtukų “matrica” kuri pajungta prie MCU tik trim laidais: Vcc, GND ir analog. Tai pat matosi, kad RTC turi savo rezervinį energijos šaltinį: Ličio batareiką CR2025 (čia iš seno kompo išlupau).
RTC ATMEGA clock

Visas kodas dar neparašytas. Jau galima užprogramuoti laiką ir datą, beveik pabaigtas žadintuvas ir konfiguracinis modulis.
Pats žadintuvas irgi nedaromas su ATMEGA16, o jis tupi RTC mikroschemoje- netgi yra speciali kojytė, kuri gali generuoti žadinimo signalą be MCU pagalbos. Arba paprasčiausiai MCU nuskaito būklės registrą ir pradeda čirškėti. Įdomumas tame, kad žadintuvas gali suveikinėti kiekvienos valandos kažkurią minutę, arba galima nustatyti kad žadintuvas skambėtu tik pirmadieniais, trečią valandą penkiolika minučių ir 27 sekundės, arba kad skambėtu kiekvienos valandos 3 minutę tik balandžio 23 dieną ir jei ta diena išpuola sekmadienį… 🙂 Ten daug navarotų turi tas čipukas. O jei dadėti ir MCU navarotus, tai tikras CRON daemonas gaunasi. Nekalbant apie tai, kad softas pats žino, kelintadienis bus bet kurią 21 amžiaus dieną ir taip pat puikiai susipažinęs su keliamųjų metų skaičiavimais.
Softas turi bent trijų lygių menių sistemą. Meniu sistema automatiškai išsijungia, jei vartotojas ilgai neliečia klavietūros. Su minimaliais pokyčiais si sistema modifikuojasi ir galima konstruoti kokį nors termostatą- juk užtenka pajungti prie to pačio I2C kad ir FM75 mikroschemą. Arba galima valdyti kokią nors periferiją… Čia tik reikia įjungti fantaziją. Šiaip viskas sugrūsta į TIMER0 pertraukimą- visą kitą laiką ATMEGA dinderį muša.

Softas neskirtas “C” kalbos puristams ir specialistams. Aš iškarto pasakau, kad niekada nesimokiau “C” programavimo. Todėl daugelis momentų padaryta kvailai. Tik žinau, kad gerasis gcc nerado nei vienos priekabės prie šios programos- kompiliuojasi be jokių warning…

Štai jis: RTC clock core source code. Dalinamas pagal GNU GPL licenzija- imkit ir naudokit.

PHP programavimas: vienas iš mano tiesioginių darbų

Kartais nuo karto klausiat ką aš dirbu ne poilsio metu. Vienas iš mano darbų yra web programavimas. Paskutinis, dar nepabaigtas projektas tai UAB Vitra TVS (CMS) su prekių žinynu. Programos nuo nulio nerašiau- kaip pagrindą panaudojom kažkokį komercinį produktą kurį buvo nupirkusi kompanija. Tačiau ta sistema visiškai morališkai paseno, o “gamintojai” pradėjo šnekėti apie kažkokius kosminius skaičius. Teko pasinagrinėti svetimą kodą ir gana stipriai jį perrašyti. Taip gavosi tokia pusiau CMS, pusiau prekių katalogas.

Vitra.lt

Kadangi jau beveik žinau ką daro kiekvienas kodo pirstelėjimas, dabar labai lengva tobulinti sistemą. Ypač kai įdėjas laikas nuo laiko pageneruoja bendradarbiai. “Dizainą” tikrai pats nedariau, čia paprasčiausias free template. Tačiau CMSas lengvai apvelkamas bet kokiu drabužėliu.