Monthly Archives: March 2016

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 →