Nėra labai laiko ką nors normaliai parašyti, tai keletas randominių fotkių:
O jetau, tai “keemkės”! Rusiškas ir tarybinis paladis su platina.
Continue reading →
Author Archives: Administrator
ARM35: LCD ir FSMC
Trumpa priešistorė: prisirinkom kažkokių PCB su STM32F103* mikroschemos ir nežinomu LCD. LCD buvo dviejų tipų, o pačios PCB irgi keletos variantų. Kai kurios su kitu STM32 BGA čipu ir ROM/RAM mikroschemom. Dar kitos PCB beveik tuščios ar pažeistos. Užtat visos turi mėlyną dantį ir visokias smulkmes.
Visokius kištukus gana lengvai išaiškinom (gerai, kad ne visos PCB padengtos laku), kai kurie primityvai kaip LCD pasvietimas (ar dar kieno) eina per tranzistorius, tai irgi lengvai atsibūrė. Bet liko LCD. LCD tikrai dviejų tipų- mažesnis, išjungtas juodas ir didesnis, baltas. Abu ekranai grafiniai, nes yra originali firmwarė, kur parašo kad “atnaujink softą”. Pirminis softas lygtai ir universalus abiem plokštėm ir jame aptikom, kad plokštės iš Husqvarnos automatinių žoliapjovių.
Deja informacijos apie LCD ekranus ar kontrolerius nebuvo visiškai. Todėl ėmiau iš eilės visokius LCD ekranus su panašiu kiekiu pinų ir bandžiau… Pagal įtampas, pagal originalios firmwarės siunčiamus signalus atrinkau, kur maždaug duomenys, kur WR ar panašūs signalai.
Mažesnis LCD labai panašu į ST7565 ir ten viskas maždaug buvo aišku. Didelis LCD visiškai neaiškus.
Dar pasirodė labai keista, kodėl pasirinktas toks keistas pajungimas prie MCU:
PD0=D2
PD1=D3
PD4=RD
PD5=WR
PD7=CS1
PD14=D0
PD15=D1
PE3=A0
PE7=D4
PE8=D5
PE9=D6
PE10=D7
Tačiau pernelyg nesivarginau. Nes svarbiau buvo LCD. Su didesniu LCD buvo bėdos- labai panašus LCD yra UltraChip serijos kontroleriai kaip UC1610 ar UC1611. Tačiau komandos nevisos veikia. Bėda tame, kad daug komandų bendros visos serijos čipams (ar net kito gamintojo čipams), kitos komandos ignoruojamos ar panašiai. Ir dar nustebino pačio LCD ekrano pilkumo atspalvių bitų seka. Net vienu metu kilo mintis, kad ten spalvoto ekrano kontroleris pritvirtintas prie juodai-balto LCD ekrano. Dar kilo mintis, kad neteisingai nurašiau pinoutą (tikrai ne, žr. toliau).
Bežaidžiant su bitais, buvo kaip ir parašytas šioks toks softas ekrano valdymui. Tačiau norint paišyti vaizdą ant ekrano pagal pikselius, reikia nuskaityti informaciją iš ekrano. Tai galima padaryti ir “bit bang” režimu ir su STM32F103 tai vyksta gana greitai. Bet vistiek viskas labai kvaila. Buvo pasiskaitytos instrukcijos, paguglinta ir pasinagrinėtas STMkubikas ir pasirodo man nežinomas FSMC režimas, kur kaikurios MCU kojos pavirsta DATA, ADR ir kontroliniais (WE, CS ir pan) signalais. Tada skaitymas iš LCD ar rašymas į LCD (ar į kokį SRAM) pavirsta paprasta operacija- “rašymas ir skaitymas iš RAM”:
*(__IO unsigned char *)(LCD_DAT_ADDR)=d;
d=*(__IO unsigned char *)(LCD_DAT_ADDR);
Ir mūsų LCD būtent ir pajungtas kaip FSMC įrenginys (dėl to ir toks keistas LCD pinouto pajungimas).
Tačiau net dvi dienas man niekas neveikė. Nes dokumentacijoje gana miglotai parašyta ir iš pirmo žvilgsnio viskas labai nelogiška. Bėda susijusi su duomenų šynos pločių ir adresu. LCD ekrano A0 pinas, kuris atskiria duomenis nuo komandų prikabintas prie A19 pino. Šio pino lygį turi reguliuoti adresu bitai:
//Musu LCD A0 pajungtas prie A19 pino.
#define LCD_CMD_ADDR 0x60000000
#define LCD_DAT_ADDR 0x60080000
Tačiau niekas neveikė. Pasirodo, mano pavyzdiniam softe buvo ne “unsigned char”, o “unsigned int” (aka uint16). Kituose pavyzdžiuose net 32 bitų kintamasis. Ir dar baisiau- net keletas straipsnių rašė, kad jei naudojam 16 bitų nuskaitymą, adresas pasislenka per vieną bitą, jei 32 bitus, per du bitus. Tačiau ir tai nepadėjo, nes mano pagrindinė klaida buvo tokia, kad nuskaičius 16 bitų iš 8 pin porto, maniau, kad mažesnieji bitai turės reikalingą informaciją. Pasirodo, kad ne. Kiek suprantu, STM čipas hardwariniam lygyje prisiderina prie “bus width” ir dar net kelis nuskaitymus ar rašymus. O jei sukonfiguruota nelogiškai, viskas ir nelogiškai veikia.
Todėl, jei reikia nuskaityti BAITĄ iš 8 laidų šynos, tai reikia C kalboje ir skaityti BAITĄ. Dar nesu tikras ar skaitant WORD iš BYTE nedaromas dvigubas nuskaitymas. Šitą reikia dar patikrinti, nes LCD ekranos softas dar kiek optimizuotusi. O dėl adreso, čia man irgi kiek neaišku, bet baitų, wordų ir longwordų adresai yra atitinkamai pasislinkę, jei norime juos nuskaityti. Pas ARM gal nėra tos bėdos kur yra pas MC68000, kur negalima skaityti pabaičiui ar panašiai iš nelyginių adresų…
Labai daug ir neaiškiai parašiau, bet čia mano “brain dump” ir ši informacija skirta man prisiminti, kaip pajungti FSMC režimą pas STM32F103. Ką dar gero duoda tas FSMC? Ogi DMA.
Kad straipsnis gautusi indomesnis, va fotkė:
Tai tas didysis ekranas, deja neįjungtas pašvietimas. Naudojamas keistokas “klasikinis” TI99 šriftas kuris gal netinkamas šiam ekranui.
Ir net trys variantai source code su viskuo: mažas ekranas bitbang, didelis ekranas bitbang ir didelis ekranas FSMC:
Husqvarna LCD ir STM32F103 FSMC.
Visas source tikrai neaptvarkyti, yra labai daug eksperimentavimo ir “reverse engineering” likučių.
*) ne visos STM32F103 palaiko FSMC. Čia STM32F103VGT6.
Ta pati plokštė palaiko kelis tipus LCD ekranų su 24 PIN jungtimi (vienas LCD buvo su PE12864URT): PINOUTAS pdf.
Purple pill arba biruolių plokštė
Pamenat, rašiau apie biruolius. Apie kalną STM32F103VBT čipų su kiek palenktom kojom? Tai va, pasidariau eksperimentinę plokštę. Išvedžiau VISAS kojas į 0.1″ kištukus. Dar biški RS485/CAN prielipų pripaišiau tuščioje vietoje.
Tikrai sunku prilituoti mikroshemą, kai kojos biški palankstytos. Bet va iš antro karto lygtai ir gavosi. Diagnostinis softas rodo, kad per visas kojytes eina signalai ir trumpų jungimų nėra. Aišku minimalus kiekis detalių ir maitinimas iš “serial debug” lizdo.
Beja, jei netyčia užblokuosit tą “serial wire”, tai nedidelė bėda, užtrumpinat “Reset”, pradeda programuoti ir atjungiat “Reset”.
Užrašai “AL”, “AH”, “EL” ir panašiai, tai pinų grupės. Pvz. AL – PA(0-7), “low” dalis. AH tai PA(8-15) ir t.t.
Visi failai:
Diagnostine firmwarė – source code, STM32Cube failas, kompiliuotas HEX.
Gerberiai – Standartiniai gerberiai, jei staiga užeis noras užsisakyti PCB.
Schema – Šios plokštės schema. Gana negražiai nupaišyta (pdf).
PCB iliustracijos – Šios plokštės PCB vaizdai (pdf).
BOM.
Dėmesio, PCB, bottom pusėje jumperis SJ1 yra jau užtrumpintas į GND. T.y. BOOT0=GND. Jei reikia kitos reikšmės, reikia nupjauti pačiam jumperyje esantį takelį ir prilituoti atitinkamą rezistorių.
Visko po biški
Nėra jokių įdomių projektų, tai bus nedidelė galerija ir bambesiai.
Jau ne kartą bambėjau apie tai:
Kažkoks industrinis “čileris”. Rodos jau stipriai įžengėm į 21 amžių, bet industriniai kontroleriai pribaigia savo tupizmu. Ką norėjo pasakyti šiuo pranešimu? Ogi, “generic alarm number 1”, nuo kurio viskas užblokuojama. “no” reiškia, kad aliarmas nerezetuojamas. Kas sukelia šį aliarmą? Ogi nesvarbu. Taip suprograminta.
Išsiaiškinau iki galo ir paaiškinsiu jums visą pizdėcą. Iškarto sakau, nepirkit prietaisų iš Italų.
Yra nedidelė indukcinė krosnis ir prie jos vandens šaldytuvas. Jis užpildytas ne vandeniu, bet antifryzu, nes Lietuvoje būna žiema. Jei sistema įjungta non stop, viskas buvo gerai. Bet kurį laiką nereikėjo krosnies ir kad taupyti elektrą, viskas buvo išjungta. Įjungus- klaida ir niekas neveikia. Pasirodo, debilai Italai (jie buvo įspėti dėl Lietuvos sąlygų ir antifryzo), tai suprogramino sistemą, kad jei temperatūra žemiau 10 šilumos, suveikia aliarmas (tipo išpilkit vandenį, nes netikėta žiema Palerme) ir užblokuoja cirkuliacinį siurblį (ir čilerį). Lydimo krosnis nemato cirkuliacijos ir neįsijungia. Lygiai taip pat, pats čileris, kuris turi pašildymo sistemą, nejungia jos, nes cirkuliacija užblokuota. Vienintelė išeitis- laukti pavasario, kol antifryzas pakils iki kokių 12 laipsnių. Tada viskas veiks. Jei būtų cirkuliacija, lydimo krosnis per minutę sušildytu sistemą. O jei neišjungi sistemos, tai pats čileris pašildo vandenį (antifryza). Ir aišku visur uždėti slaptažodžiai ir pats kontroleris debilnas. Kol kas nepavyko ji perprogramuoti, liko tik “tarybinis hack”- pajungti rubylnyką, kuris overraidins cirkuliacinį siurblį. ble.
Continue reading →
Čipų sakot trūkumas?
Vienas geras žmogus pranešė, kad atvežė biruolių. Bet kažkaip nebuvo laiko- darbai prispaudė. Po kelių dienų nuėjau ir pamačiau likučius….
Net širdelę užspaudė…
STM32F103VBT6: Medium-density performance line ARM ® -based 32-bit MCU with 128 KB Flash, USB, CAN, 7 timers, 2 ADCs, 9 com. interfaces. 20KB RAM.
Čia biruoliai, matosi, kad kojelės biški kreivos. Dabar reikia projektuoti universalią PCB. Jei kam reikia, galiu semtelėti. Tikiuosi geri ir nepadirbti.
Keista lemputė
Papuolė į rankas keistoka lemputė:
Tik du kontaktai. Pagal dizainą- panašu į foto ar kokių nors dalelių detektorių.
Continue reading →
Epochinis kiemo įvykis
Išvažiuoji biški į fazendą, o kai parsirandi namie, pastebi kraštovaizdžio pokyčius. Neveltui tie įtartini diedai sukosi aplinkui. Kodėl šeštadienį?
Tai buvo “stalino vargonų” arba trukdymo stoties (Objekto Nr. 603) viena iš išlikusių antenų. Ji jau kurį laiką buvo nenaudojama, nes mobiliakų technologijos pasikeitė, o toks brangus žemės lopinėlis Kauno “turčių” rajone tikrai viliojo visokius biznierius. Nors žemės sklypai buvo “išdalinti nusipelniusiems žmonėms” dar prieš daugybę metų, mano nuomone čia buvo padaryta klaida. Žemes aišku “garbingi žmonės” pardavė ir kai neliko stulpo tuoj pavarys daugiabučių rajonuką.
Geriau čia buvo įrengti parką- juolab, kad čia išliko gražūs ąžuolai su žemom ir plačiom šakom- gi teritorija išbuvo daugybę metų be žmonių veiklos. Čia buvo prūdas, gyveno antys, medžiuose veisėsi pelėdos… Sklypas buvo unikalus, nes jo nereikėjo niekam grąžinti, nei palikuoniams, nei šventiems žydų kaulams. Tiesiog gabalas valstybinės žemės. Deja, bizniukas buvo prasuktas seniai.
Continue reading →
Softas Vanta XRF grafikams
Jau kelis metus Olympusas negali padaryti normalaus softo. Net elementariausios klaidos dar nepataisytos, o jau dėl grafikų tai išviso neklausk. O dirbant kartais reikia palyginti visą XRF spektrą- pvz palyginti medžiagos “fingerprint”. Ne tik palyginti, bet ir pažymėti svarbesnes zonas, uždėti markerius. Ir aišku, gražiai atspausdinti ar eksportuoti į pdf failą.
Visas softas parašytas per kokius penkis vakarus ir grynai “for fun”. Kartu kiek daugiau išmokau apie .NET galimybes.
Kad naudotis programa, reikia kaip nors išeksportuoti XRF spektrą į CSV failą. Tai irgi ne iškarto pavyksta, bet galima nugalėti Olympuso kvailystes ir šiaip ne tai ištraukti duomenis. Toliau reikia pašalinti pirmas 40 eilučių ir pirmą stulpelį (gal vėliau padarysiu automatinį importą).
Darbinis pavyzdys, trys medžiagos, labai panašios. “Standartinis” grafikas, matomas originaliam softe atrodo maždaug taip:
Continue reading →
PCIe linijų trūkumas?
Jau rašiau, kad naudoju daug mažų diskelių. Kartu su dar likusiais dideliais diskais gaunasi 10 diskų. Ir visada norėjau naudoti kokį nors prabangų RAID kontrolerį. Tačiau kiek kišau kontrolerių į lyšną PCIe (x8) slotą, nei vienas neveikė, kompas net į BIOSą neužsikurdavo:
Tai fizinis x16 lizdas, tik jame elektriškai išvesta x8. Taip dažniausiai būna buitiniuose kompuose- pirmas ilgas, video plokštei, x16, o antras tik x8.
Continue reading →
Proto mankšta: SVG kalbos interpretatorius
Viskas prasideda nuo mažos nesamonės: nutariau ant vieno 3D spausdinto gaminio padaryti USB jungties logotipą. Kokio nors STL failo greitai nusikrauti niekur neradau (for free arba download be registracijos). Tada sau galvoju- nu yra gi SVG iliustracija, ten gi grynas vektorius, tereikia jį tik “ištempti” į viršų (extrude) ir viskas bus čiki.
Ir tada pradidėjo… Mano 3D printeriavimo ir modeliavimo programa tokių failų nepriima. Gerai, ji netobula ir ne tam skirta. Online konverteris kažko irgi neveikia:
Matom kaip nukando gabaliuką nuo kvadratėlio.
Continue reading →