Category Archives: Betkas

Vasara 24

Visiškai nėra straipsnių todėl kad: biški išsisėmiau, neturiu entuziazmo ir yra kitokie vasariniai darbai. O vasarinius darbus reikia daryti. Keletas darbelių, įvykių kurie vyko per pastaruosius du mėnesius.

  • Sidabro kleckas- gryname sidabre labai gerai tirpsta oras? vanduo? vandenilis? O kai metalas vėsta, gaunasi išsiveržimas. Po keletos ciklų- aušinimo ir perlydymo po fliusu, dujos išeina iš metalo.
  • Raudona honda biški nusibrėžė. Iš keturių “aksidentų”- trys sukelti moteriškių. Matyt jos nemato raudonos spalvos. Viena atsitrenkė kai stovėjo gatvėje ir bandė apsisukti, kita- stovėjo kieme ir važiavo atbula, o paskutinė- honda važiavo žiedu, o VW nepamatė. 🙂
  • Tokie vikšrai ėda buksmedžius. Tai kažkokios kandies vardu ugniukas vikšras. Tai buksmedžių pabaigo pradžia.
  • Pasidariau stalčiukų lentyną- stalčiukai iš senukų, lentyna savadarbė. Be lentynos, konstrukcija pernelyg nestabili. Beja, tokie stalčiukai turi turėti privalomus skyrelius: morgas, random digital chips, random analogue chips ir random chips.
  • Dėl klimato atšilimo, naktimis ir dienomis taip šalta, kad mano rasoda dalinai nustipo, dalinai užsikonservavo ir nebeauga. O kas išaugo buvo suėsta slimokų.
  • Nixiu plokštė su auksinėms mikroschemom. Reikia kažkokį dizainą sugalvoti, kad matytųsi visa plokštė.
  • Verandos turėklų elementai (inox 321)- nes užkniso rudys. Ir prabangios klinkerio trinkelės šiltnamio grindim.

Va tiek reikalų. Jei bus kas nors indomaus, būtinai parašysiu.

Nespauskit

Nespauskit keistų linkų kuriuos gaunat. Aš spaudau už jus, kad žinotumėt.

Scenarijus paprastas- ateina žinutė apie neva nepristatytas siuntas. Ten būna dažnai keistoka nuoroda:

Nelabai gramatana žinutė turėtu kaip ir duoti įspėjimus. Atsidaręs interneto puslapis savo gramatika irgi sako, kad kažkas negerai. Žmogai, jei atsidarėte žinutę, kuri rašo apie jūsų siuntą ir jie jau žino telefoną, tai kodėl vėl prašo asmeninės informacijos? (Ten žemiau buvo ir telefono laukelis). O sekantis ekranas jau sako, kad reikia tik 0.27€ užmokėti. Tačiau bjaurus paštas tikrai be dviejų eurų nieko nedaro 🙂 Aha, ir kortelė ir CVV. Gal dar raktą nuo kambario su pinigais?

O, va ir kambario raktas. T.y. anonimiškas “bankas” ir patvirtinimo kodas. Aš naudojau randominį telefoną (nu ne randominį, bet policijos) ir generuotą kreditinę kortelę. Todėl galiu tik spėti apgavystės mechanizmą. Tikriausiai į mobilų ateina kažkas dar, gal koks netikras bankas. Gal šiuo momentu jau pasijungia gyvas žmogus kuris pradeda rankiniu metodu dirbti tarpine tarp aukos ir banko. Tačiau mano eksperimente įvedus bet kokius skaičius, puslapis užlinko.

O bonuse, tokius puslapius blokuoja mūsų pareigūnai. Tai jei neskubėsite spausti nuorodos, tai vėliau ji gali pasirodyti tokia kaip paveiksliuko dešinėje.

O dabar bambesys ir patarimai- net jei ir laukiate siuntos, neskubėkite. Niekur ta siunta nedings, nepanikuokit. Skaitykit atidžiai ir galvokite logiškai- kodėl? Kam jies to reikia? Kur jūsų siuntos identifikacinis numeris. Kodėl siuntėjo numeris ne iš Lietuvos? Kodėl interneto adresas toks keistas? O jei tikrai nerimas dėl siuntos, tai eikite į oficialų pašto puslapį. Nežinot siuntos numerio? Tai iš viso ko čia blaškotės? Laukite lapuko savo pašto dėžutėje. Ar net didelio laiško.

Visi dokumentai pildomi tik oficialiam pašto interneto puslapyje, o apkomėti galima tik teisingai prisiregistravus prie lpexpress savitarnos. Nebūkit šiuolaikiniai hipsteriai, kurie viską bando daryti savo ultra išmaniu įrenginiu, kuriame sudėtos VISOS JŪSŲ PASLAPTYS! Žinot patarlę apie “visus kiaušinius vienoje kraitelėje”?

O dabar testas:

Kuri žinutė teisinga?

makefile (užrašai sau)

Makefile tai specifinis instrukcijų rinkinys kuris gali pats paleisti kitas instrukcijas ir pats save ir panašiai. Naudojamas automatizuoti programų kūrybą ir gal dar ką nors. Ši žinutė skirta man pačiam, nes atmintis labai blogai dirba. O jei kitiems tiks, ar bus kokių nors patarimų- welcome.

  1. PROJECT = $(notdir $(CURDIR))
  2. SRC = $(wildcard *.c)
  3. BDIR = build
  4. OBJ = $(patsubst %.c, $(BDIR)/%.o, $(SRC))
  5. .PHONY: clean all hex
  6. #phony - komandos (jei netycia sutaptu su failo pavadinimu)
  7. all:
  8. @echo "all" $(PROJECT)
  9. #all pasileidzia kai paleidziamas make be komandu
  10. levas:
  11. @echo $(SRC) $(OBJ)
  12. #pirmas iki: objektas komanda arba failas, antras -kokiems failams galioja
  13. $(BDIR)/%.o: %.c
  14. echo $@
  15. mkdir -p $(BDIR)
  16. cp $< $@
  17. objects: $(OBJ)
  18. elf: $(BDIR)/$(PROJECT).elf
  19. #sutrumpinta komanda, kad nereiketu ivesti pilno failo pavadinimo
  20. $(BDIR)/$(PROJECT).elf: $(OBJ)
  21. cat $(OBJ) > $(BDIR)/$(PROJECT).elf
  22. clean:
  23. rm -f $(BDIR)/*.o $(BDIR)/*.hex $(BDIR)/*.bin $(BDIR)/*.elf

Komentarai:
Eilutės 1-4: paprasčiausi kintamieji ir kelios operacijos su jais. 1) kintamasis “PROJECT” pasidaro naudojamo folderio pavadinimu, 2) “SRC” – visų failų su išplėtimu masyvas. 3) paprasčiausias priskyrimas. 4) vieno masyvo konvertavimas į kitokį.
Eilutė 8: make visiškai nesvarbu ar dirbama su failais, komandomis ar “kažkokiais objektais”. Jei folderyje bus failas “clean” ir jis nekis, make pasitikrins tai ir nebevykdys komandos. Phony pasako, kad čia ne failas.
Eilutė 11: “all” pasileidžia, kai make paleidžiamas be parametrų, čia kaip “main()” funkcija.
Eilutė 15: komanda gali vadintis bet kaip. Tik turi užsibaigti dvitaškių. O jos atliekamos komandos turi būti “atitrauktos” per tabą.
Eilutė 20: komanda gali būti failo pavadinimas, kad ir iš komentaro, o antras žodis po dvitaškio kaip ir filtras kokius failus galima naudoti. Čia biški nesuprantu.
Eilutė 25: komanda “daryk objektus” pasiima visus būsimus “O” failus ir generuoja pagal 20 eilutę iš “C” failų. Jei “O” failai jau sugeneruoti ir jų “šaltinis” toks pats, failai ignoruojami.
Eilutė 27: Kad nereikėtų nurodyti kokį “ELF” failą generuojam, čia parašom supaprastinimą.
Eilutė 30: Kai reikia generuoti kokį “ELF“, kad ir iš 27 eilutės, naudojam tokią instrukciją ir gaminam iš “O” failų. Savo ruožtu, jei nėra “O” failų, tai juos generuojam iš “C” failų (20 eilutė). Ir kartu stebim, ar kas nepasikeitė
Eilutė 33: Paprasčiausiai ištrinam viską ką sugeneruojam.

Atrodo viskas siaubingai ir keistai. Ir net nesuprantu kaip tai veikia. Tačiau teisingai parašytas makefile viską labai palengvina, nes nebereikia galvoti, kas ten su kuo jungiasi ir kas iš ko darosi. Iš principo tai gana specifinė “skripto” kalba.

P.S. Jei dirbat su windows ir jus užkniso, kad kiekvieną kartą paspaudus ant “makefile” windows klausia su kokia programa ją atidaryti, darykite taip:

assoc .="No_Extension"
ftype "No_Extension"="C:\WinAVR\pn\pn.exe" "%1"

Tiktai “path” iki savo redaktoriaus pasikeiskit.

GAL/PAL “hackinimas”

Aš biški domiuosiu senais kompais, o ten dažnai naudojamos programuojamos logikos mikroschemos (PAL/TIBPAL/GAL/PALCE). Šios mikroschemos, ypač senos laidos, labai kaista ir net kartais nuo to kaitimo susidefektuoja. Todėl kartais jas reikia pakeisti “naujom” PALCE ar GAL mikroschemom. Visa bėda- nežinom mikroschemos turinio. Kartais “fuse” failai randami internete, kartais net būna “lygtys”. Kartais galima atstatyti turinį pagal prietaiso schemą (taip atstačiau ATARI 1200 čipą). Tačiau tai suveikia ne visada.

GAL ir PALCE čipai perrašomi. Todėl juos galima lupinėti iš senų plokščių ir panaudoti iš naujo.

Internete yra metodas, kad paprastas mikroschemas (be registrų) galima atburti naudojant paprastą “brute force” t.y. išbandant visus variantus ant kojyčių. PAL mikroschema prijungiama kaip 27C020 ir nuskaitoma kaip paprastas EPROM ir gautas “rom dump” sumaitinamas specialiai programai “pa.exe”.

Jei PAL/GAL mikroschema neturi viduje registrų ir (kas svarbu!) neturi viduje užciklintos logikas “ala” registras, tai viskas veikia. Deja, tos mikroschemos kurios man buvo svarbios buvo TIBPAL16L8 – gryna logika, bet “užciklintos” ir man nepavyko jas “nulaužti”…

Taip atrodo PAL16L8 į 27C020 adapteris.

Taigi, jei netyčia turit Amiga 2000 1Mb DRAM plokštės jungiamos į CPU slotą schemą ar PAL formules, pasidalinkit 🙂 Nes dabar atminties išpėtimas net pradeda smirdėti nuo karščio.

Pareigūnų sirena

Toks beveik vandalizacinis straipsnis. Tarp utilizuojamos technikos pasitaikė sirenos generatorius. Dar prie jo reikėtu ir aukštavolčio garsiakalbio, bet jo neturim.

Tokias sirenas naudoja įvairių šalių pareigūnai. Musiškiai naudoja tokią- dviejų melodijų ir beep-beep (air horn) imitacija.

Schemos nesinagrinėjau, bet spėju, kad tai bus gryna skaitmena stiprintuve- nemanau, kad du tranzistoriai su tokiu mažu aušinimu dirba kokiam nors kitokiam režime nei D. Trafukas švelniai groja sirenas, prie išėjimo pabandžiau paprastą gasiakalbį ir kelių šimtų omų rezistorių. Iškarto rezistorius pakaito- galios turi daug.

Tik trys mikroschemos. PICas lizdelyje- “operatyviai” galima keisti melodijas. Dar viduje turi būti kažkoks ADC keitimas, nes galima šnekėti per tą “gavarilką”– “vairuotojas, prašom sustoti” 🙂

Jokio panaudojimo nesurandu, nes negalima naudoti. Nebent kaip signalizacijos triukšmo šaltinį.

ARM48: USB HID host

Jei naudojamas STM32 čipas palaiko USB HOST režimą, tai prijungti USB įrenginį labai paprasta. Mano hardwarė labai paprasta- čipas ir dvi USB jungtys. Viena jungtis suprogramuota kaip virtualus COM portas skirta peržiūrėti rezultatus, o kita USB jungtis tai USB host. Čia galima prijungti pelę ir klavietūrą. Kiti HID įrenginiai nepalaikomi.
Primenu, kad HID klavietūra palaiko iki 6 klavišų nuspaudimus (neįskaitant modifikatorius: shift, control, alt…) ir atskirai siunčiami klavišų paspaudimai ir atleidimai.
Kad viskas veiktu, tereikia savo programoje pasirašyti callbacką:

  1. void USBH_HID_EventCallback(USBH_HandleTypeDef *phost)
  2. {
  3. char txt_buf[100];
  4. char t[4];
  5.  
  6. strcpy(t,"[x]");
  7. if(USBH_HID_GetDeviceType(phost) == HID_MOUSE) // if the HID is Mouse
  8. {
  9. HID_MOUSE_Info_TypeDef *Mouse_Info;
  10. Mouse_Info = USBH_HID_GetMouseInfo(phost); // Get the info
  11. int8_t dX_Val = Mouse_Info->x; // get the delta x value (note unsigned - signed conversion)
  12. int8_t dY_Val = Mouse_Info->y; // get the delta y value
  13.  
  14. int len = sprintf (txt_buf, "dX=%d, dY=%d, Button1=%d, Button2=%d, Button3=%d\r\n", dX_Val, dY_Val, Mouse_Info->buttons[0],Mouse_Info->buttons[1], Mouse_Info->buttons[2]);
  15. user_usb_tx((uint8_t *) txt_buf,len);
  16. }
  17. if(USBH_HID_GetDeviceType(phost) == HID_KEYBOARD)
  18. {
  19.  
  20. HID_KEYBD_Info_TypeDef *Keyboard_Info;
  21. Keyboard_Info = USBH_HID_GetKeybdInfo(phost); // get the info
  22. txt_buf[0]=0;
  23. unsigned char i;
  24. for(i=0;i<6;i++)
  25. {
  26. if(Keyboard_Info->keys[i] != OLDKEYS[i] )
  27. {
  28. if (Keyboard_Info->keys[i]==0) {strcat(txt_buf,"UPKEY:"); hex8(txt_buf,OLDKEYS[i]);t[1]=Scan2Char(OLDKEYS[i]); strcat(txt_buf,t);}
  29. else if (OLDKEYS[i]==0) {strcat(txt_buf,"DOWNKEY:"); hex8(txt_buf,Keyboard_Info->keys[i]);t[1]=Scan2Char(Keyboard_Info->keys[i]); strcat(txt_buf,t);}
  30. else {strcat(txt_buf,"ERR:"); hex8(txt_buf,Keyboard_Info->keys[i]); strcat(txt_buf,"-");hex8(txt_buf,OLDKEYS[i]);}
  31. }
  32. OLDKEYS[i]=Keyboard_Info->keys[i];
  33. }
  34. strcat(txt_buf,"\r\n");
  35. user_print_usb( txt_buf);
  36. }
  37. }

Pačiam HID reporte visada transliuojami visi nuspausti klavišai, todėl, jei reikia susiderinti su PS2 ar senesniu standartu, reikia tikrinti, koks klavišas nuspaustas ir koks paleistas. Ta daro ciklas 24-33 eilutėse.
Rezultatas:


UPKEY:12[o]
DOWNKEY:13[p]
UPKEY:13[p]
DOWNKEY:2F[[]
UPKEY:2F[[]
DOWNKEY:30[]]
UPKEY:30[]]
DOWNKEY:31[\]
UPKEY:31[\]
DOWNKEY:04[q]
DOWNKEY:16[s]
DOWNKEY:07[d]
DOWNKEY:09[f]


DOWNKEY:2C[ ]
UPKEY:16[s]
UPKEY:07[d]
UPKEY:09[f]
UPKEY:04[q]
UPKEY:2C[ ]
DOWNKEY:0B[h]
UPKEY:0B[h]

Visas demo softo source code čia: STM32CubeMX USB host HID demo source code.

Nerusiškas auksas

Paprastai šnekama, kad tarbiniai žmonės dėjo daug aukso ant detalių… tačiau spėju, kad dėl savo atsilikimo, męs nematėm vakarietiško aukso.

Čia buvo kažkokia radija ar šiaip hifi. Deja ją sulaužė jau tie, kurie atvežė plokštes į supirkimą. Komplekte dar buvo keturi paprasti NPN tranzistoriai. O dryžuotų buvo daugiau, bet užteko vieno kolekcijai.

Spėju, kad kokie nors 70-tieji metai. Bet darlingtonas macnas- jei čia BD700, tai 70..80V ir apie 8A. 70W išskiriamos galios? Gamintojas Motorola. Mažiukas irgi visas auksinis. Dar patinka, kad ant metalo yra BCE raidelės. Pas mažylį- centrinė koja B, bet tvirtinimo detalė C.

Tranzistoriai gyvi, tačiau kiniškas matuoklis nesugebėjo išmatuoti. O kas per MPS007 aš neradau.

Su Naujais, 2024 metais!

Sveikinu visus su Naujais Metais!

(Nu nepatinka mano telefonui ta bjauri mėlyna spalva. Pakeisti negaliu, o nenaudoti irgi negaliu, nes turiu ekraniukų gal 100 vienetų.)

Ką čia palinkėti? Kaip senas diedas- laimės ir sveikatos! Kaip elektronikos megėjas- mažiau magiškų dūmų, ir nepaimti lituoklio už ne to galo. Kaip kompiuteristas- kad mažiau reikėtu migruoti visą softą į kitos kartos OS. Kaip chemikas- kad nusėstu kai reikia nusodinti, kad ištirptu kai reikia ištirpinti. Kaip megėjas statybininkas- kad nereikėtu bendrauti su tikrais statybininkais.