Guglė mane stebėjo, o aš irgi…

March 12th, 2023

Buvo taip:
street view
Aš tas žalias.

Ne emuliatorius!

March 9th, 2023

Čia tikrai ne emuliatorius, o multifunkcinis vienetinis instrumentas….
Kažkada rašiau apie Z80 plokštę ir pramoninį kompiuterį. O dabar neturėjau ką veikti ir ištraukiau seną “toolsą", kiek ji patobulinau ir pademonstruosiu. Tai tikrai ne ZX spectrum emuliatorius, nors jis tai gali daryti:
multifunkcinis Z80 daiGtas: ZX spectrum mode
Aišku taimingai neteisingi, kokios nors prigulnybės nepadarytos. Bet čia ne ZX emuliatorius, o Z80 debug įrankis. Nuo randomu internete jis skiriasi tuom, kad bet kuriu momentu galima bet ką sugadinti- perrašyti procesoriaus registrus, pakeisti RAM turinį (ar ROM), peršokti iš vieno procesoriaus emuliatoriaus į kitą. Čia iš esmės yra du “procikai": loginis- kuris gal labiau intelio, Zilog režime jis neparašytas iki galo, nes man to nereikėjo. Ir “C-sharp", tai procikas kurį radau internete.

Ir ko ciklintis prie to ZX, va galima prikabinti i8275 čipą, ir va jums Радио РК86, tiesa be klavietūros:
multifunkcinis Z80 daiGtas
Aišku kažkiek tai veikia, kažkiek neveikia.

Bet įrankis nebuvo skirtas kompiuterius emuliuoti. O jei paimti kitą, tarybinį, megėjiską Орион-128? Prašom:
multifunkcinis Z80 daiGtas
Vėl aišku nėra klavietūros ir aišku nėra 128K RAMo.

Norim rašyti programą asembleryje?
multifunkcinis Z80 daiGtas
Labai primityvus asemblerio kompiliatorius. Irgi vogtas iš interneto platybių. Buvo kažkoks nebaigtas VB6 projektas.

Pasirašom programą ir galima stepas-po-stepono paleidinėti:
multifunkcinis Z80 daiGtas
Kad disasembleris yra tai ir taip aišku.

O svarbiausia, tai paprasčiausias MS Visual Basic ir visas source kodas. Taigi kai reikėjo kažką custom padaryti, tai jokių problemų. O ir visokios prigulnybės: snaphotai, log failai, konfiguracijų įrašymai, failų rašymai ir kėlimai, .SNA failai ir kas nors dar.

O dar bonusas? O jeigu sukrušti visus kompus į vieną?
Krusalyne
Va kaip atrodytu “Santaka" su papildomai rusiškais kompiuterių ekranais. Ir dar kažkoks žaidimas paleistas. :)

Bezdalai

February 28th, 2023

Yra toks kiniškas dujų detektorius MQ-5 (LPG, natural gas, coal gas) ir man jis kažkaip keistai veikia. Va grafikai- matavome kas 5 minutes. Gana ilgai.
MQ-5
Pajungiau prie STM32, registruojam tris parametrus- Vref (1.2V), čipo temperatūrą ir įtampą iš jutiklio.

Namie:
namai

Darbe:
darbas

Iš kur tie “metano" pliūpsniai? Namie dar galiu sugalvoti- žmonės bezda. Bet darbe tai ištraukiamoji ventiliacija.
O gal tie kiniški dujų detektoriai paprasčiausiai rodo kvailystes? Ar skaitytojai ką nors montavo su tokiu detektorium?

Metaną senoviškai matuojama mieruojant šviesos greičio pokytį va su tokiu prietaisu. Deja jis sugadintas.

Kalibratorius Siemens B1108

February 24th, 2023

Labai retai, bet papuola, kai utilizuojama kokia nors laboratorija ir jos sandėliukas. Prieš kelias dienas tokis įvykis ir prasidėjo. Ir aš išgelbėjau du tokius prietaisiukus:
Siemens B1108
Tai Siemens B1108 termoporų, termorezistorių ir, kas labiau įdomu- ommetrų, voltmetrų ir ampermetrų kalibratorius. Gaila, kad AC įtampą išduoda tik stačiakampę, tai mano “true RMS" volmetras rodo dar kažką, bet kiti tai ne.
Kodėl išmestas? Ogi todėl, kad keturi guminiai mygtukai neveikė dėl senatvės. Išardžiau, nuploviau su spiritu ir veikia.
Turiu du vienetus, todėl vieną, su mechaniniu defektu (nulaužtas, bet nepamestas geltonas žiedas) galiu kam nors padovanoti už kokia nors dovaną. :)
Galėsit pasitikrinti savo testerius arba atidaryti termoporų testavimo biznį.

Kad neuždidinti straipsnio, mano testerio testavimas :) komentaruose.

A2000- didžiausias mano konstruktorius

February 1st, 2023

Yra toks vienas kompiuteris, A2000, kuris turi nelaimingą NiCd batareiką. Ši baterija yra pakraunama ir dažnai išteka. O ten išteka toks piktas elektrolitas kuris labai ėda varį ir dar mėgsta patekti į patį PCB substratą. T.y. ne tik nugriaužia takelius ar tarpsluoksninius VIA, bet dar ir sujungia ką nors paslapčia.
Todėl net kelios A2000 motininės kurias radau ir pirkau, visiškai neveikia. Visas bandžiau remontuoti, tačiau tik viena kelis kartus parodė vaizdą ir toliau neveikė.
Tai žinoma bėda ir senų kompiuterių entuziastai nukopijavo paskutinės versijos PCB ir paviešino gerberius.

A2000 PCB

Aš vieną tokią plokštę pirkau eBay ir gana ilgai nieko neveikiau. O kai susiruošiau, supratau, kad sunkiausia surinkti paprastų detalių rinkinį (BOM), nes specifines mikroschemas galima nusipirkti (yra problemų su 8520) ar išlupti iš donoro. Rečiausia detalė- rezistorių rinkiniai, kitos pagal retumą- 74Fxxx mikroschemos.
Rezistorių rinkinius kelis dar radau nupirkti, o kitus teko traukti iš senos plokštės. O jie trapūs. Dar reikia išsitraukti DB23 lizdus ir dar lizdus panašius į ISA (Zorro ir CPU lizdai).
O dėl 74F serijos, tai kiek pagalvojau ir nusprendžiau, kad 21 amžiaus 74LS serija tikrai geresnė nei 1980 F serija.
Beveik visos mažos mikroschemos išluptos iš kažkokių senų donorų, o kelias mikroschemas teko nusipirkti alieksprese.

A2000 PCB
Va toks vaizdelis liko iš donoro. Gaila, kad likusios detalės su labai užlankstytom kojelėm (išskyrus ISA tipo slotai). Apačioje nuotraukos matosi nurudijusi PCB kurią aš bandžiau remontuoti. Deja, nepavyko- kompas paveikdavo iki sekundės, po to bandydavo inicializuoti daugiau mikroschemų ir iškarto lūždavo.

Surinkimo metu biški keičiau detalių nominalus- juk šiuolaikinis kondensatorius žymiai geresnis ir mažesnis. Todėl galima sudėti tokio pat mechaninio dydžio, bet didesnės talpos kondensatorius.
Gaila, kad nepavyko perkelti visų mėlynų kondensatorių (1000pF), tai kai kur stačiau šiuolaikinius, 2kV kondensatorius. Kiek negražiai gavosi su spalvine palete.
Keramika apie mikroschemas irgi kai kur geresnė, o kai kur vietoje šimtinių elektrolitų sudėjau 1000uF LOW ESR. Bent jau ant 5V linijų oscilografas nerodo jokių triukšmelių.

A2000 PCB
Kompiuterio replika veikia, ir net pasileidžia žaidimai. Reikia surinkti visas detales iki galo ir galima sukomplektuoti visą kompiuterį Amiga A2000, nes korpusa tai turiu.

ZX klonų CP/M diskų žiūreklis

January 14th, 2023

Atnešė diskelių kurie buvo rašyti su ZX klonu. Juos nuskaitėm su Greaseweazle, bet joks emuliatorius neleido paleisti CP/M iš disko kopijų. O ir šiaip, labai norėjosi ištraukti failus. Tačiau, nei vienas CP/M diskų analizatorius nematė failų- paprasčiausiai, mūsų “hakeriai" kai konstravo tą kastruotą CP/M kažką kitaip padarė. O “viešos" programos neleido modifikuoti disko sektorių struktūros.

Todėl teko pasirašyti nepilnai veikiančią programą:
CP/M ZX disk image browser
Diskai tai HD (80 takelių)*, 5 sektoriai takelyje (cilindre) ir 1024 baitai sektoriuje. Tačiau CP/M blokas yra 2048 baitų.

Dabartinė programa gali eksportuoti failus, tačiau kol kas nesugalvojau, kaip eksportuoti failus kurie surašyti kaip keli įrašai direktorijoje (failai didesnis nei 8*2048 baitai). Direktorija- 20 ir 21 sektorius.
Rodos pagal CP/M specifikacijas failo dydis aprašomas vienaip, tačiau mūsų “santakistai" kažkaip ignoravo tuos laukelius ir ten visur nuliai (arba aš dar nesupratau kaip). Taip pat kiek neaišku su failo ilgiu- CP/M rašo 128 baitų blokais, tačiau failai ne visada būna kartotini 128 baitams.
Svarbu, kad didžioji dalis unikalių failų išsitraukė.

Tačiau! Kitas žmogus atnešė irgi “santakos diskelių" su CP/M ir jie vėl kitokie! Gal vėliau išgaminsim ir jiems programą ir patobulinsim šią. Tačiau kiek pavargom, gal net keturis vakarus rašėm softą.

Nelabai tikiu, kad kam nors to reikia, bet programą CPMD galima nusikrauti.

*) Rašė kaip HD, bet dėl ubagystės dažnai naudojo DD diskelius. Todėl dabar jie sunkiai nusiskaito.

P.S.
Kai parašiau programą, atsiliepė vienas iš “ten" ir paaiškino kaip sukonfiguruoti jo programą darbui su šiais diskais. Programa vadinasi “Steinblume".

ARM42: 4 lempų NIXIE laikrodis

January 6th, 2023

Tai keturių lempų NIXIE laikrodžio “skeletas". Laikrodis naudoja hardwarinį RTC. PWM šviesumo valdymas, trys skaitmeniniai mygtukai, vienas analoginis (potenciometras, fotorezistorius), USB-COM jungtis laikrodžio nustatymui (sinchronizavimui). Maitinimas 9-15V. Dinaminė indikacija, vienas dešifratorius (155id1), lempas junginėja MPSA42/MPSA92 tranzistoriai. Šis modelis dabar naudoja apie 2W galios. (kogero LEDai daug naudoja :) )

4 nixie clock STM32F103 RTC
Dizainas bus kuriamas kitų žmonių. Čia tik sumestos detalės, kad patikrinti elektrinę dalį ir ištestuoti programinę įrangą. Jei dizaino autoriai pasidalins galutiniu produktu, nuotraukas įdėsim.

Programos skeletas- tai minimumas programos kuris jau veikia, tačiau nepriprogramuota visokių “custom" dalykėlių kurių tikriausiai reikės galutiniam projektui.

STM32F103 RTC NIXIE clock source code, ir STM32CubeMX projektas. Kompiliuojasi su ARM gcc t.y. visiškai nuo platformos nepriklausoma C kalba.

Su Naujais, 2023 metais!

January 1st, 2023

Sveikinu visus su Naujais, 2023-čiaisiais metais!

Ką čia palinkėti. Kai jau tapau senu diedu, tai norėčiau palinkėti visiems laimės ir sveikatos. Laimė reikalinga jums, o jūsų sveikata reikalinga jūsų aplinkiniams.

NIXIE
Ir kai visiškai stogas pradeda važiuoti nuo bėdų, lai visada atsiranda kažkoks užsiėmimas. Kaip ir šitas užsakymas. Kartais toks darbukas labai padeda atsipalaiduoti ir pagauti dvasinės ramybės “dzin budistinį" čį (氣). Tik nepagalvokit, kad pavažiavau į visokias ezoterikas.

STM32F103 ir SD SDIO kortelė

December 23rd, 2022

Straipsnis skirtas tiems MCU kurie turi SDIO geležį.

Visur yra straipsniai apie SPI SD kortelės pajungimą arba kur jau rimtesnė techniką, tai SDIO su keturiais duomenų kanalais. Tačiau nebūtina naudoti visus kanalus, galima jungti ir per vieną. Todėl, kad prijungti SD kortelę užtenka 5 laidų: Vcc ir žemė, lieka trys duomenims. Reikia SDIO_SC (clock), SDIO_CMD ir SDIO_D0. Jei norim greitesnio skaitymo- D1, D2, D3.

Surašysiu ką aš dariau, kad šios dienos (2022.12.23) STM32CubeMX pagimdytų veikiantį kodą. Seniau reikėdavo naudoti išorinę biblioteką (dažniausiai FatFS iš elm-chan), dabar šią biblioteką kubikas automatiškai įkelia ir sukonfiguruoja. Dar karta pabrėžių - viską padaro. Nereikia rašyti jokių disk-io paprogramių. Nieko nereikia rašyti.

Pradedam nuo SDIO modulio aktyvavimo:
SDIO
Režimas - 1 bitas, būtinai reikalingas pertraukimas. Nors sako, kad veikia be jo. Man neveikė. DMA galima jungti, bet nepastebėjau ko nors. Kitas parametras: SDIOCLK clock divide factor - pasididinkit, nes ant pilno greičio ne visos SD kortelės gali dirbti (ypač pajungtos ant snarglių). Aš parašiau -4, prie 72MHz SDIO clock.

Kad veiktų fatfs, reikia dar vieno GPIO pino. Be jo neleis sukonfiguruoti. Taip laidelis einantis iš lizdelio kur jungiasi prie mechaninio mygtuko- inkišta kortelė ar ne. Nors programiškai tas pinas naudojamas tik vienoje vietoje, kubikas reikalauja.

GPIO
GPIO input, pull-up tikriausiai, jei jungiklis trumpina į žemę.

Ir tik dabar galima įjungti Middleware->FATFS.
FATFS
Čia matosi tas “privalomas" D3 GPIO.

Dar galima prasisukti per fatfs nustatymus ir išjungti nereikalingas funkcijas, kad sutaupyti atminties (ypač) RAM.

Susigeneruojam kodą, ir kiek pasikuičiam jame…

Failas “fatfs_platform.c" - jame yra SD kortelės detektavimas per tą PINą. Pasitaisom kodą pagal jūsų mygtuką, arba paprasčiausia parašom “return SD_PRESENT;“. Šį failą privalom pataisyti.

Jei naudojam RTC ar šiaip ką nors sumintijom su laikrodžiu ir norim turėti failus su data, tai atsidarom failą “fatfs.c" ir pasitaisom funkciją “get_fattime(void)“.

Kaip ir viskas. O pačiu fatfs naudotis galima pagal šitą:


void test_fatfs(void)
{
  //some variables for FatFs
  FATFS FatFs; 	//Fatfs handle
  FIL fil; 		//File handle
  FRESULT fres; //Result after operations
    //Buffer for reading/writing
  BYTE readBuf[30];
	
 
  //Open the file system
  fres = f_mount(&FatFs, "/", 1); //1=mount now
  if (fres == FR_OK)
	{
	//open file for reading
	fres = f_open(&fil, "test.txt", FA_READ);
	if (fres == FR_OK)
	{
	//We can either use f_read OR f_gets to get data out of files
	//f_gets is a wrapper on f_read that does some string formatting for us
		TCHAR* rres = f_gets((TCHAR*)readBuf, 15, &fil);
		if(rres != 0) {
							print_uart((char *)readBuf);
					}
				else
					{ //error
					 //print_uart("f_gets error \r\n");
					}
	}
	f_close(&fil);
	// end of file read
 
	// file write
	//Now let’s try and write a file "write.txt"
	fres = f_open(&fil, "write.txt", FA_WRITE | FA_OPEN_ALWAYS | FA_CREATE_ALWAYS);
	if(fres == FR_OK)
		{
		//Copy in a string
		strncpy((char*)readBuf, "new file is made!2", 20);
		UINT bytesWrote;
		fres = f_write(&fil, readBuf, 19, &bytesWrote);
 
		if(fres == FR_OK) {
			// file ok
		} else {
			//file write error
		}
	} else {
	// file open error
	}
	//Don't forget to close your file!
	f_close(&fil);
	//end of file write
	}
	else
	{
	//mount error
	}
	//We're done, so de-mount the drive
	f_mount(NULL, "", 0);
//end of file testing
}
 

Tai disko atidarymas, skaitymas ir rašymas.

Erratum:
Jei neveikia, pasitikrink schemą, ar yra 10kΩ rezistoriai ant visų linijų link maitinimo pliuso.
Jei veikia ir lūžta- pasididink steką.
Jei prie šio modulio pradėjo neveikti UART4/USART3, tai žinokit čia šūdina mikroschema ir ji sunaikino PC10 piną. Naudokit alternatyvius UART pinus. Naujesnėse mikroschemose tai pataisyta.

Retrofuturistinis blasteris

December 10th, 2022

retrofuturistinis blasteris
:)

Unhappy Tikbalang