Author Archives: Administrator

Dantračiai, lazeriai ir matematika

Jei turi pjaustanti lazerį, tai reikia būtinai išsipjauti kelis dantračius. 🙂 Čia toks įstatymas tikriausiai.
Tačiau dantratis yra ne šiaip abstraktus piešinys, o griežtas matematinis reiškinys. Todėl rankomis dantračio nenupaišysi… Yra specialus softas paišyti dantračius. Tačiau vienas softas mokamas, o kitas softas neduoda vektorinio paveiksliuko reikalingo lazerio pjovimui. Ką daro tokiu atveju Levas? Aišku iš pradžių stipriai guglina. Poto nervuojasi, poto prisimena, kad kiekvienas CorelDraw softas savyje turi Visual Basic.
Todėl pirmiausia bandoma bet kaip programuoti… poto suprantama, kad dantratis yra siaubingai sudėtingas. Ir kad jam galima pritaikyti daugybę parametrų. Kad kai kurie parametrai kinta nuo dantračio diametro…

Taigi, kaip paišyti dantračius Corelyje:

Spaudžiam čia:
coreldraw draw gears cogs
Continue reading →

ARM:0016 pertraukimai WTF?

Kartas nuo karto, kai būna laiko vis paknibinėju ARM procesoriuką. Bet kuo toliau, tuo labiau jis mane nervuoja. Šį kartą pašnekėsim apie pertraukimus dėl PIO kojų lygio pasikeitimo…

Biški veikia ir biški veikia keistai…

Susikonfiguruoji koją kaip input:

AT91F_PIO_CfgInput( AT91C_BASE_PIOA, RTC_INT );

Pagalvoji, kad kojai reikėtu pull-up:

AT91F_PIO_CfgPullup( AT91C_BASE_PIOA, RTC_INT );

… pyst neveikia iškarto. Nebereaguoja. Tai šitą eilutę užkomentuojam.

Dėl šito nežinau ar reikia, bet eksperimente panaudojau:

AT91F_PIO_CfgInputFilter( AT91C_BASE_PIOA, RTC_INT );

Dabar konfiguruojam pačio pertraukimo valdymą:

//* configure PIO interrupt and handler
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC,
AT91C_ID_PIOA,	// pertraukimo tipas.
INT_LEVEL,	// pertraukimo lygis
//AT91C_AIC_SRCTYPE_EXT_LOW_LEVEL , 	// nesuprantu kas sukelia pertraukima
AT91C_AIC_SRCTYPE_EXT_NEGATIVE_EDGE , // nes visi sitie veikia vienodai
//AT91C_AIC_SRCTYPE_POSITIVE_EDGE, // visiskai. Nesamone.
ISR_PIO_handler); // paprograme atliekanti INT apdorojimą

Ir kaip parašyta komentaruose, visiškai pofig ką ten konfiguruoji- ar low_level ar external negative edge ar positive edge pertraukimas iššauna visada. Į RTC_INT koją padaviau 1Hz signalą kuris ateina iš nepriklausomo šaltinio. Taigis pertraukimas šaudo ir kai būna LH ir HL perjungimas. Ir visiškai dzin ką ten rašai.

Kita pastebėta nesamonė- nesugebu išjungti pertraukimo. Pas AVR procesoriuką, vieną asemblerio komanda ir pertraukimai išjungti. Čia jau ne. Tačiau yra “makro” komandos:

//AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_PIOA);
//AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_PIOA);

Atrodo kaip tik tas- išjungia pertraukimus pagal PIO. Praktiškai viskas žymiai blogiau. Ta išjungimo komanda susideda iš kelių komandų. O procesorius taigi dirba “asinchroniškai” (pipeline). Ir taip gaunasi, kad kažkuriuo momentu kažkas susimaišo protelyje pas ARMą ir pertraukimas nebeveikia.
Programa tokia: sukasi amžinas ciklas kuris ant spalvoto LCD ekranėlio paišo mažus kvadratėlius ar linijas (tai ne žaidimas), o pertraukimas, kas 1 sekundę parašo- atnaujiną laiką ant to pačio ekrano. Grafinio ekrano paišymo subtilybė- kad nupaišyti primityva atliekamos kelios komandos. Ir jų seka svarbi. Todėl, teoriškai grafinio paišymo metu pertraukimas turi būti išjungtas. Išjungia pertraukimą, nupaiš0 kvadratėlį, įjungia pertraukimą. Ir kai pertraukimas suveikia, ant to pačio ekrano parašo laiką. Ką jus manot? Ogi figuški- per mažiausiai 10 sekundžių, daugiausiai per porą minučių pertraukimas sugenda. Jei nejungti pertraukimo blokavimo, viskas veikia ilgai, tik ant ekrano atsiranda artefaktų dėl nekorektiško valdymo. Programėlę reikia rašyti kitaip, nei įprasta pas ATMEGAs…

Laukių komentarų žmonių kurie žaidė su SAM7 čipu.

Beja, int handleris:

__ramfunc void ISR_PIO_handler(void)
{
volatile unsigned int pin_mask = AT91C_BASE_PIOA->PIO_ISR;
// Int patvirtinimas-isvalymas. Be jo neveikia.

	if(pin_mask & RTC_INT)
	{
	if ( (AT91F_PIO_GetInput(AT91C_BASE_PIOA) & RTC_INT) == 0 )
		{
			AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, _BV(15));
			AT91F_PIO_SetOutput( AT91C_BASE_PIOA,_BV(15));
		}
	}
AT91F_AIC_ClearIt(AT91C_BASE_AIC,AT91C_ID_PIOA); // clear interrupt
AT91F_AIC_AcknowledgeIt(AT91C_BASE_AIC);	// acknowledge interrupt
}

gal čia kažką neteisingai parašiau?

CO2 lazerio testai

Šį savaitgalį tvarkiau rūsyje ventiliaciją, nes lazeris išsikraustė ten. Todėl nieko elektroniško nebus. Užtat kaip be šito:

svastikeliai

Pjovimo greitis (max lazerio galingumas):
3.65 mm faniera (3 sluoksniai) ~15…16 mm/s.
4 mm organinis stiklas iš senukų ~5 mm/s.

Organinis stiklas pjaunamas smirda degusiu polistirolu. Čia tas kur pjaunant paprastu lobziku veliasi ant pjūklo. Kažkur turiu ir akrilo, bet dar neradau.

Greičius dar kogero reikėtu tikslinti.

Organinio stiklo kraštai stiprokai apsilydo- svastikėlio elemento plotis 5mm, išsididinus nuotrauką matosi kaip ir kiek apsilydė. O faniera kaip ir gerai pjauna.

Pašalinau kinišką medžiagos tvirtinimo sistemą. Vietoje jos naudoju kol kas aliumininio radijatoriaus groteles. Deja jos “metalinės” spalvos, tai kartais pablikuoja spindulį- matosi ant fanieros, kad kartais pasvyla kita pusė.

CO2 lazeris

Nu, vieni pasakys- neturi kur pinigų dėti. Kiti pasakys trumpai- durnius. O kiti pasakys, kad berniukai niekada nenustoja žaisti su žaislais, tik su amžiumi žaislai brangesni. Ir čia ne apie automobilius…

Tai užėjo bzichas, ir už 2350Lt ir 81 centą nusipirkau aš Kinišką CO2 lazerį. Čia jau kaip sakoma brutto. Su atsiuntimu ir atnešimu į vietą (visdėlto 28kg). Vežėjas UPS, prekė iš UK, tai importo ir PVM mokesčio nėra.

CO2 lazeris
Teoriškai 40W, praktiškai BBŽ.
Continue reading →

Kūrybinė pauzė…

Nieko nepabaigiau, nieko gero nepadariau. Darbe pagaliau iš Olympus’o išsimušėm “factory settings” slaptažodžius, tai dabar pats perkonfiguruoju XRF prietaisiukus. Pagaliau bus galima pasidaryti taip, kad būtų patogu dirbti su prietaisu. Pekeliui pastebėjau, kad kai kurie prietaisai turi suinstaliuotus visus režimus (jie mokami), tik paprasčiausiai nuimtos “varnelės”. Tačiau kai kurie prietaisai tikrai “tušti”. Taigi jau antrą savaitę tikrinu visus prietaisus ir nebenoriu nieko daryti daugiau…

Keisdamas akumuliatorius sudubasinau savo 10W LED prožektorių. Todėl skubiai teko perlituoti detales. Dabar jau ant žalios PCB.
10W LED draiver selfmade torchlight
Čai jau viskas vėl veikia, bet taip ir sustojo darbai, nes … tingiu.
Continue reading →

Su Naujais Metais!

Kažkaip vėl tenka visus sveikinti su Naujais metais. Nors nelabai mėgstu sveikinti, bet tenka… Taigi, sveikinu visus blogo skaitytojus su naujas 2014 metais, linkių visokių gerybių, kad išsipildytu visos fantazijos (netgi iškreiptos erotinės), kad karšti lituokliai nekritinėtu ant kelių, kad iš elektronikos neišlakstytu magiškas mėlynas dūmelis. Dar kaip koks senolis palinkėsiu visiems sveikatos, laimės, gerybių ir fantazijos.

Happy New Year RGB LED vabolis savel
Čia toks meniškas gerybinis paveiksliukas- vidus apšviestas kiniškais RGB šviesos diodais. Bet srovės tiek ėda, kad standartinis Liion pirštelis per kelias paras ištuštėja.
Continue reading →

Žvakutė su paslaptim

Darbe susigalvojo pasikeisti dovanėlėm. Tai aš aišku suskubau paskutinę minutę ieškoti dovanėlės. Pasikeitimo partneris nežinomas- loterija. Tik žinojau kad tai moteris. Jei žinočiau daugiau, galėčiau parinkti kokią šmaikštesnę dovaną, bet kai visiškai nežinomas reikia suturėti savo trolį. Kelias valandas praleidau “šopindamasis” ir besitrindamas su miniom žmonių. Nelabai norėjosi pirkti standartinę nesamonę… Mano kodas buvo “bitutė”, tai nutariau pradžiai nupirkti kokio medaus, bet vėliau perėjom į vašką. T.y. į žvakę. Kad dovana būtų nestandartinė, pirkau trys skirtingas žvakes netgi skirtingose vietose-šilas, jysk, magsima. Iki irgi buvau, bet ten nepirkau, nes prekės atsikartojo. Taigi sukonstravau dovaną, bla bla bla bla, padovanojom, pataikėm nupirkti ir valio. Bet straipsnis ne apie tai. Po dovanos gaminimo liko žvakių elementai. Vieną tokią smirdančią žvakę ir uždegiau ir … kažkas netaip:
zvake su LED pasvietimu
Žvakė kaip žvakė. Stipriai prikvepinta, smirda už kilometro.
Continue reading →