Category Archives: Betkas

Bugas ir šiaip nesamonė

Nieko naujo nesugalvojau, nes vis dar po truputi remontuoju fazendą. Todėl rašau bet ką… tiesa, keletas projektų dar gaminama, bet juos vilkina kinijos logistika. Todėl parašysiu bet ką…

Aš šiaip, kompiuterinių žaidimų nežaidžiu. Tačiau per paskutinius 5 metus žaidžiau trys žaidimus: telefone tą clanų mušį (čia kaip buna momentas kai visiškai nėra ką veikti) ir du žaidimus kur vaikšto žmogutis: Skyrimas ir Vičeris 3. Tuos pastaruosius žaidžiau todėl, kad pamačiau, kad ten yra arkliukai. Tačiau skairime arkliukai užsimuša kartais, o man kaip turėjusiam arklį tai jau per žiauru. Todėl skairimą ėjau toliau be arklio, poto atsibodo.
Neseniai pamačiau vičerį ir ten irgi arkliukai. Tačiau čia jie rodos neužsimuša (nors разчленёнкėс iš arklienos ten daug), todėl šita biški pažaidžiau. Tačiau vėl suveikia mano arkliška patirtis- negaliu aš arklio numesti bet kur ir eiti dubasinti monstrų. Nes arklys gali nuklysti, jį gali ir nupyzdinti, o ir koks blogis gali užpulti. Gavosi taip, kad Tarakoninis arklys buna pastatomas į arklides, o Geraltas eina per visą šalį pėsčiom… 🙂

Taip bevaikščiodamas užtikau tokį arklį:
Witcher 3: undergroung horse
Tai požeminis arklys. Jis kažkaip nepadoriai trukčiojo, o jo kojos išlenktos anatomiškai neįmanomu kampu. Tačiau kanopos liečia žemę. Geraltui pavyko ant šito reikalo užsisėsti, nors pradžioje jis sėdėjo ore. Bet poto arklys, kaip kamštis išlėkė iš uolos ir viskas ėjosi kaip reikia.

Čia šiaip, juokingas bugas.

Dar buvo trigalviai arkliai, tačiau nepadariau screenšoto.

AVR80: OLED displėjukas ir SD kortelė

Jau daug metų norėjau ir pagaliau padariau SD kortelės rašymo eksperimentą su ATMEGA16 mikroschema. Man kažkodėl visiškai viskas neveikė ir teko kankintis su vos vos veikiančiu LCD ekraniuku debuginimui. Vėliau nusprendžiau panaudoti maža nereikalingą OLED displėjuką iš kinijos. Ekraniukas veikia nuo 3V todėl nereikėjo vargti su signalo lygiai ir panašiai. Ekraniukas kabo ant tų pačių SPI laidų kaip ir SD kortelė, aišku CS/SS signalas skirtingas. Labai ilgai kažkodėl neveikė. O šiandien, vakare bet kaip sujungiau laidelius ant savo mega-dev-boardo ir viskas suveikė.

OLED is SD

Failas gavosi ir 1G standartinėje SD kortelėje ir kogero toje mažesnėje, 64Mb multimedia card.

OLED is SD
Kadangi nenaudojam RTC modulio, tai failo sukurimo data hardcodinta programoje.

Šioje konstrukcijoje panaudojau FatFs modulius iš elm-chan.org puslapių, o OLED displėjau modulio paprogramės irgi paremtos svetimu darbu, tiesa ten kiek daugiau padirbėjau. Visa šita sistema suėdė beveik visą ATMEGA16 atmintį:

AVR Memory Usage
----------------
Device: atmega16

Program: 13700 bytes (83.6% Full)
(.text + .data + .bootloader)

Data: 227 bytes (22.2% Full)
(.data + .bss + .noinit)

Todėl, jei norima konstruoti kažka protingesnio, deja teks imti “storesnį” mikroprocesoriuką.

Ir visas source kodas bei sukompiliuota programa tiems žmonėms kurie jau neturės rankioti gabaliukais ir kankintis kol kodas pradeda veikti:SD kortele ir OLED displejaus source code / ATMEGA and SDcard source code.
Apie hardwarę- SD kortelė pajungta prie MISO/MOSI/SCK/SS kojų, OLED ekraniukas prie tų pačių MOSI/SCK, o kiti specialūs OLED signalai paimami iš C porto (3 laidai: CS, C/D, RESET).

Ličio polimerizacija

Kadangi utilizacijai papuolė biški broko:
Samsung SDI packs
(tai kažkokie “universalūs” akumuliatoriai, 45Wh)

Buvo ir bačkelių tipo, bet juos užsirezervavo vienas žmogus, bet liko visas kalnas polimero. Pradėjau juos lupinėti, įsipjoviau du pirštus ir surinkau po 10 maišelių. Kas įdomu- akumuliatorių baterija 7.4V, reiškia du akumai nuosekliai. Viduje- 4 maišeliai, dviejų dydžių. Didesni PGF4960C3A (pats samsungas sako, kad tai 4.8Ah talpos), o mažesni PGF463998A (2.2Ah).
Continue reading →

Biški C optimizacijos

Jau ne pirmą kartą randu svetimam softe vieną dalykėlį. Įdedu čia du fragmentus- originalų ir mano rašyta:

Originalus:

for(int8_t bit = 7; bit >= 0; bit--)
{
L(PORTC, SS1306_OLED_CLK);
if((1 < < bit) & data) { H(PORTC, SS1306_OLED_DAT); } else { L(PORTC, SS1306_OLED_DAT); } H(PORTC, SS1306_OLED_CLK); }

Mano:

for(unsigned char bit=0;bit<8;bit++)
{
L(PORTC, SS1306_OLED_CLK);
if(data & 0x80) {H(PORTC,SS1306_OLED_DAT);} else { L(PORTC, SS1306_OLED_DAT); }
data = data < < 1; H(PORTC, SS1306_OLED_CLK); }

H() ir L() procedūros tai ne mano rašytos ir jos neturi įtakos. Pagrindinis skirtumas yra pakeisti “(1<<bit)” į “(data=data1<<1)”. Atrodo paprastas pakeitimas, bet pagalvokim koks bereikalingas darbas stumti tuos bitus per visą ciklą… 7+6+5+4+3+2+1 bitų pastumimai originaliam softe ir 7 pastumimai mano softe. Skirtumas gerai matosi oscilografo ekrane…

AVR GCC optimization
Čia originalus softas.

AVR GCC optimization
Čia mano.

Grubiai šnekant, su tuo pačiu MCU greitis padidėjo nuo 22μs iki 9μs vienam perduotam baitui, du su biškiu karto (ir 16 baitų mažesnis softas). O čia gi grafinis ekraniukas!
Ir kaip sakiau, jau ne pirmas kartas randu šitą klaidelę svetimam softe, kai daroma duomenu serializacija programiškai.

Aišku vienas loginis niuansas, mano algoritmas sunaikina kintamąjį data. Tačiau jį galima ir atsiminti, bet dažniausiai jis jau nereikalingas.

Kodėl tokios klaidos? Manau todėl, kad mąstoma šabloniškai- tikrinam duomenų bitus su “maske” ir pagal rezultatą išsiunčiam. Čia labai žmogiška, tačiau reikia galvoti plačiau- kam generuoti “maskę”, jei galima taip pat stumdyti pačius duomenis. O jei tai būtų ciklinis stumimas ROL/ROR, tai netgi duomenys nesusigadintu- galima “apsukti” visą baitą ir vėl viskas bus kaip pradžioje.

[dar galimi kiti variantai, kai “maskę” galima irgi “sukti” ir ciklo sąlygas tikrinti pagal tai. Kodas gausis dar geresnis. Laukiam skaitytojų versijų.]

Rastinukas

Jau visko mačiau išmesto, jau prie daug ko pripratau, bet visdėlto retokai atsitinka, kad išmestu old skūlinę techniką. Šį kartą tai buvo Pioneer A-757 ar A-717, ar panašus garso stiprintuvas. Tiksliau pusė jo. Tačiau aš pamačiau trafukus ir negalėjau leisti juos sugadinti. Nes teoriškai, mano garso stiprintuvui reikia normalaus maitinimo šaltinio. Visa bėda, kad šis donorinis stiprintuvas ar tik ne 800W ima iš tinklo. Dėl to transformatoriai milžiniški ir labai sunkūs. Dar kita bėda, kad trafai du. Aš nežinau ar tilps į mano stiprintuvo korpusą. O ir stiprintuvas tada svers virš 19 kilogramų…

A-757 pioneer parts
Taip atrodo maitblokis su savo sub-šasi. Viršuje su transformatoriai ir du kondensatoriai, “rusyje” lygintuvas ir stabilizatorius pradiniam stiprintuvui. Beja dar nugvelbiau kolonėlių gnybtus, nes jie tikrai žymiai stipresni ir geresni už esamus.
Continue reading →

AVR79: WS2812 RBG LED juostelė

Trumpas eksperimentas su kiniškais, individualiai kontroliuojamai (addressable) RBG LEDais. T.y. tai kaip ir ilga juostele su RGB LEDais kuriuose sumontuota maža mikroschema kuri leidžia užprogramuoti trijų RGB šviesos diodų intensivumą. Šviesos diodai (ir pati juostelė) valdosi tik per vieną duomenų laidą, t.y. protokolas asinchroninis ir jo veikimas priklauso nuo teisingo taimingo.

WS2812 individually addressable RGB LED control AVR

Pradžioje galvojau rašyti viską nuo nulio, bet poto nutariau ne vargti ir pasiieškojau source code internete. Radau kažkokį universalų, AVR procesoriukams. Nors pats kodas kaip ir universalus, ir turėtu duoti ispėjimus, kai makrosai nesuskaičiuoja, tačiau net kokią valandą kankinausi su kodu, nes signalai nesigavo su teisingais intervalais. Pasirodo, kad mano turimas ATMEGA162, grojantis ant 3,686MHz (cominis) yra kaip tik ant tos ribos, kada softas dar mano, kad sugebės taimingus suformuoti, bet WS2812 mikroschema visiškai su tuom nesutinka. Pakeitus kvarcą į 12MHz (USBinis), viskas iškarto pradėjo veikti.

Tavo vamzdyje arba tu vamzdis (Youtube) pilna filmukų, kur iš tokių LED eilučių pasidaro ištisus ekranus. Tačiau, norint pasidaryti normalios raiškos LED ekraną reikia investuoti į gana daug tokių LED eilučių. Gaunasi brangokas projektas. O ir tada su paprasta ATMEGA neprasisuksi, nes reikia organizuoti video informacijos apdorojimą ir video buferį atmintyje.

Ir aišku: WS2812 AVR ATMEGA source code ir kompiliuotas hex failas.

P.S. Vienas bugas WS2812 juostelėje- kažkodėl neteisingai veikia kai maitinimo įtampa daugiau kaip ~4V. Pradeda fušeruoti. Gal dėl to, kad sujungtas Vcc ir Vled juostelėje, muša stiprius trigdžius? Nes teoriškai, turi veikti net ir nuo 7V…

Titaninis kastuvas

Čia ne apie titaninį šiupelį, o apie kastuvą. Metalo laužo kruvoje buvo labai daug tokių kastuvų ir visi buvo su panašiu defektu. Nežinau, ar čia gamybos brokas ar eksploatacinės problemos. Pagal bendrą susidevėjimą linkstu manyti, kad tai visdėlto gamybos brokas. Paprasčiausiai per didelis apkrovimas štampuojant ir metalas sutrukinėja.

titaninis kastuvas - titanium spade or shovel
Pats kastuvas klasikinės formos, juntamai lengvesnis. Kaip kasa negaliu pasakyti. Tačiau vieną vienetą nutariau suremontuoti.
Continue reading →

Litavimo chemija

Baigėsi mano naturali kanifolija, tai nutariau pabandyti kiek toksiškesnius kiniškus variantus. Iš kinų užsisakiau kiek pigios litavimo pastos (po ~1USD švirkštukas), dar biški žalių dažų ir jau Lietuvoje, vietinėje pardauotuvėje, už daug pinigų paėmiau Lenkiškos litavomo pastos.

litavimo chemija
Iš kairės į dešinę: švirkštukas į kurį pritraukiau pastos iš kitos talpos, trys vienodi kiniški švirkštukai su pasta, žali UV kietėjantys dažai, Lenkiška pasta ir senai susenusi lydmetalio pasta (ta kur litavimo pastos suspensijoje kabo mikro alavo rutuliukai). Ta SMD pastą pirkau labai senai, jau daug metų kaip negalioja, bet gaila išmesti. Ją pirkau, kai testavau BGA trafaretus.
Continue reading →

Seno SSD disko gaivinimas

Tai buvo senas Crucial V4 SSD diskas. Jis jau internete nuskambėjęs kaip didelis šūdo gabalas, kad ten viskas striginėja ir panašiai. Buvo ir pas mumi papuolęs toks, kuris iš pradžių ypač sulėtėjo, poto tik pyst ir nebepasirodė kaip įrenginys. Kadangi diskas susikompromitavo, jis buvo išimtas ir numestas į diskų kapines. Šiandien kažkaip užėjo noras paremontuoti tokį nesukomplektuotą kompą, pakeliui pasitikrinti ar mano rastas i5 procesorius geras (ant normalaus kompo gi nebandysi jungti visokį šlamštą) ir panašiai.
Pirmiausia rastas i5 procesorius (Intel Core i5-2500 CPU @ 3.30GHz) veikia… poto užėjo noras prijungti kokį nors diską. Iš “diskų kapinių” paėmiau kelis diskus, bet jie pasirodė ištrinti. Tada prisiminiau, kad turiu notebuko diską kuris parėjo badais. Jis dar veikė. Jame instaliuoti 8.1 windowsai visiškai neužpyko, kad OS pasileido ant visai kito kompiuterio ir puikiausiai aktyvavosi. Tačiau diskas siaubingai lėtas, nes jis ir šiaip kokius 5 metus dirbęs ir jaučiu kelis kartus nukritęs ant žemės… Todėl naujai gauto Windows 8/10 licenziją nutariau perketi kur nors kitur… Ir pakeliui paėmiau tą SSD diską, gal jis veiks po pagulėjimo kapinėse. Ir jis netikėtai pasirodė BIOSe, tačiau kaip PS3016S5 įrenginys kuris neturi talpos. Pasirodo, šis eksperimentinis kompiuteris buvo sukonfiguruotas taip, kad SATA kontroleris dirba IDE režime, o štai AHCI šis “diskas” nesimato. Todėl buvo numestas Windows migracijos procesas ir pradėjau gaivinti diską. Visa bėda, kad mažokai informacijos apie procedūrą ir standartiškai visi softą upgreidina kol diskas dar vaizduojasi disku. “Brick” režime jau biški sunkiau. Kelis kartus eksperimentavau su įvairiom programom ir padėjo ta verisija kur veikia DOS režime. Tik pasirodo reikia daryti taip:

0. Perjungti kompo SATA į IDE režimą.
1. Paleisti kompą iš betko DOS režime.
2. Paleisti isp.bat (arba dlmc skanavimo režime), kad gauti SATA porto adresą.
3. Paleisti dlmc -f 0x81f0 -master (čia skaičiukai ir master iš 2 punkto).
4. Pasigrožėti raudonu užrašu “FAIL”.
5. Ištraukti HDD maitinimą veikiančiam kompe ir vėl pajungti.
6. Pakartoti 3 punkto komandą ir dabar jau gauti “PASS” užrašą.
7. Naudoti atgimusi diską pagal poreikius.

SSD disko crucial V4 unbrick firmaware

Kiek suprantu, iš pirmo karto įsirašo kažkoks boot kodas kuris turi pasileisti, kad rašyti jau pagrindinį firmware. Tai rodo dar ir tas, kad visai kitoks tekstas ant ekrano, rašo apie DDR testavimą ir panašiai. Tačiau jis nepasileidžia. Padarius kieto disko perkrovimą matyt tas kodas pasileidžia. Vienas momentas- kai dariau pirmus kartus ir nepadariau Power cycle, o dariau šutdown ir panašiai, boot kodas dingdavo! Arba man dabar pasisekė, ar paprasčiausiai trumpas Power cycle užkurė boot kodą iš RAM, nes trumpai atjungus ir įjungus diską jo RAM turinys neišnyko. Nesu tikras, bet faktas tas, kad po šito triuko susirašė pagrindinis firmware ir diskas BIOSe jau matosi kaip “SSD disk”.

Dabar galima migruoti windows8/10 5 naują SSD diską ir taip gauti licenzijuotą softą. Labai malonu, kad microsoftas leidžia recoverinti windows licenziją ir ji nėra pririšta prie to seno, subyrėjusio nešiojamo kompo. Nereikia skambinti į supportą ir reikalauti licenzijos atrakinimo.

Beja, gal kas žino ką nors apie MS Office licenzijas? Ne tas pačias naujausias, ne 365, o paprastas 2013, 2010… Esmė tame, kad jau reikės migruoti kalną kompų į naujus windowsus ir reikia persikelti ofiso licenzijas. Turiu kokias 7 dešimtų metų ir kokios 3 tryliktų. Bėda tame, kad man kažkodėl 2010 neberodo microsoft accounte. Rodo tik tryliktas versijas. Ar nebus problemų jei per naujo instaliuojant, licenzijos bet kaip susipainios? Ar MS dėjo skersą ir veikia kaip ir su 2003 ir 2007. T.y. veikia, instaliuojasi, aktyvuojasi ir nekontroliuoja kur ir kodėl aktyvuotos kelios kopijos…

P.S. šis straipsnis liečia ne tik crucial diskus, o visus diskus su Phison kontroleriu (PS3105-s5). Beja, crucial siunčia visus šio disko vartotojus kakot, arba į garantinį.

Babelio biblioteka

Kažkada, labai senai aš skaičiau trumpą fantastinį apsakymą, kaip kažkur kosmose rado biblioteką kurioje buvo sudėtos knygos su visais teksto variantais. Man tas apsakymas pasirodė labai naujas ir įdomus. Jis paliko įspudį ir privertė susimastyti apie matematiką, kosmologiją ir šiaip filosofiją.
Neseniai gulinėdamas ant sofos ir žiūrinėdamas bet kokius filmukus užšokau ant VSause filmuko apie babelio biblioteka. Ir ten paminėjo, kad internete jau yra ši biblioteka. Biblioteka kur egzistuoja bet koks rašytas tekstas (lotyniškom raidėm), bet koks, netgi dar neparašytas. Ši biblioteka net turi paiešką ir galima susirasti bet kokį tekstą. Netgi šitą postą apie biblioteką kur dabar parašiau… Ar tai ne įdomu?

https://libraryofbabel.info/bookmark.cgi?tecvheoniq22

Va linkas! 22 puslapis, knygos pavadinimas tecvheoniq