Category Archives: MCU

ARM:0001, softas

Jau praėjo kelios dienos nuo pirmo bandymo. Iki tol aš net neieškojau softo, nes tikėjausi, kad gamintojas turi pilną free paketą. Deja aš klydau.
Teko biški pasukti galvą… Prie J-Link, kinai pridėjo warezų kompaktą, kuriame buvo Segger programinė įranga kuri dar dirba su mano padirbta hardware. Kiek supratau iš visokių forumų, naujausias softas jau žino, kad tai kiniškas reikalas ir užsilenkia. Todėl J-Linkas dirba su senu softu- versija tikriausiai ARM V4.64a.
Dar tame kompakte buvo crackai, serial generatoriai visokiems komerciniams ARM kompiliatoriams ir toolchainams. Buvo mintis tai daryti, bet kažkai užsimiršau aš apie tą kompaktą ir pradėjau guglinti. Keli rusiški forumai ir pats guglė išmetė tokį dalyką kaip YAGARTO, sprendžiant iš to, kad softas guli sourceforge, tai jis tikrai free. O last update stovi 2013-04-24 , tai vadinasi kažkas dar dirba su šiuo paketu. Ir dar gerai, kad šitas paketus turi kažkokį installerį kuris viską sumetą į windows kietą diską.
Tačiau tai plikas command line įrankis. Tačiau gal man tai ir patiko, nes man kiek nepatinka eclipsė (ypač prisiminus kaip ji gliučino ant seno kompo). Kaip gi tada tuom paketu naudotis? Ogi pas mane yra suinstaliuotas WinAVR paketus, kuriam buvo susiinstaliuotas “make” ir man jau įprastas “programmers notepad”. Vadinasi teoriškai “make” turi veikti. Nusikroviau “mirksiuko” projektą iš interneto. Ten rodos oficialus pavyzdinis projektas SAM7S64 procesoriukui.
Pasileidžiam make ir … vaje neranda mano gcc tinkamo. Reikia pakeisti biški makefile:

Iš:

# Define programs and commands.
SHELL = sh
CC = arm-elf-gcc
CPP = arm-elf-g++
OBJCOPY = arm-elf-objcopy
OBJDUMP = arm-elf-objdump
SIZE = arm-elf-size
NM = arm-elf-nm

Į:

# Define programs and commands.
SHELL = sh
CC = arm-none-eabi-gcc
CPP = arm-none-eabi-g++
OBJCOPY = arm-none-eabi-objcopy
OBJDUMP = arm-none-eabi-objdump
SIZE = arm-none-eabi-size
NM = arm-none-eabi-nm

Dabar padarius make, atsiranda hex failas. Valio.
Bet čia 64 kilobaitų procesoriukui. Maniškis šrotas turi kiek daugiau- 256kb.
Iš visokių oficialių ir neoficialių puslapių ir projektų susirankiojau reikalingus failus:

AT91SAM7S256-RAM.ld, AT91SAM7S256-ROM.ld, at91sam7s256.h, lib_AT91SAM7S256.h. Tuo tarpu Cstartup.S ir Cstartup_SAM7.c tiko iš mažesnio procesoriuko. Nu dar make file ir dar kažkur reikia pakeisti 64 į 256 failų ir MCU pavadinimuose. Ir mirksiukas vėl susikompiliavo.
O minėtą hex failą sumaitino J-Linkas į mikroschemą ir oscilografas parodė, kad tikrai kojos kaitaliojasi pagal mano norus. Tiesa ne iš karto.

Tai tiek buvo sugalvota per tuos du ar trys vakarus. Tiesa paskutinis vakaras buvo tūpai praleistas debuginant ir krapštant galą. Tiesiog ten kažkaip nesigavo ir manau tai aprašysiu sekančiam poste, kur busi minima pirma programa.

ARM:0000?

Viskas prasidėjo, kai mano labai labai senas pažįstamas vardu Edvardas paskambino ir be kitų šnekų pasiūlė “įdomių daikčiukų” paardymui. Tai buvo šie keisti USB gadžetai:

ARM
Tai yra siuntos monitoringo aparačiukai. Kiek supratau šitas aparačiukas monitorino tiktai temperatūrą. Įjungus į USB jis paprašė instaliuoti draiverius, tai toliau aš nevargau. Edvardas sakė, kad su specialia programa sugeneruojamas Excel failas su temperatūros grafiku.
Continue reading →

AVR 43: knyga, liion, led, laikrodis…

Čia tokia kompiliacija. Kažkada dariau rezervinį USB pakrovėją kurį galima maitinti kad ir iš saulės elementų, poto kažkada rašiau apie labai gražius LED indikatorius ir daug kartų rašiau apie savo universalią ATMEGA plokštę.
Kadangi nelabai kaip man ir reikia to rezervinio šaltinio, nutariau viską sujungti į vieną vietą. Ir dar pridėjau biškutį…

Viskas prasidėjo nuo to, kad pastebėjau, kad jei blogai miegu, tai atsibundu kažkodėl lygiom valandom. Tai buvo labai keistas reikalas. Arba ufonautai įsiuvo į mano galvą kokį RTC su batareika, arba veikė kažkoks išorinis reiškinys. Blaivesne galvą pagalvojus dašuto, kad tas išorinis reiškinys yra … didelis LED laikrodis. Jis kiekvieną valandą pradeda su nedidele animacija kol persivartalioja visi skaičiai. Tos šviesos mirgėjimo matyt užtenka, kad smegenys užfiksuotu ir prabudintu. Juolab, kad raudona spalva gana lengvai praeina ir per užmerktus vokus. Teko laikrodį pašalinti.
Bet reikia gi laikrodžio. Todėl tarp Eridano knygų, savadarbėse lentynose atsirado kažkokia ne knyga:
RED LED clock mini
(dizainas dar nebaigtas, reikia padažyti ir dar apsaugines plėveles nuplėšti)
Continue reading →

Minimalistinis Nixie laikrodis

Čia iš serijos AVR. Tačiau viskas prasidėjo prieš … 6 metus. Tada dar nečiupinau ATMEGŲ, tada buvau kiek įvaldęs PIC serijos kontroleriukų asemblerį. Tada buvo kilusi įdėja pasidaryti Nixie (simbolinių neoninių lempų) laikrodį. Tačiau bedarant kitą projektą tas suknistas PIC16F84A užkniso negyvai. Ir tada aš numečiau nepabaigtą projektą kažkur garaže. O štai šiomis dienomis biški tvarkiau garažą ir iškuopiau vieną VW Caddy šlamšto ir radau PCB.
Seną PCB sujungiau su savo nauja plokšte:

Nixie clock
Tai ATMEGA16 ir RTC. USB gal ir veiktu, bet buvo naudojamas tik dizaino metu kaip maitinimo šaltinio mygtukas.
Continue reading →

AVR USB 001! Ir vėl…

Kai reikia ką nors patirti, ką nors paprogramuoti, aš imu iš stalčiaus savo seną PCB plokštelę su ATMEGA16 mikroschema, biški palituoju jei reikia, perprogramuoju ir naudoju. Tačiau laikas eina, PCB sudilo, vietomis atšoko takeliai, o ir šiai nei technologiškai, nei estetiškai nebegražiai atrodo. Gal prie 5 metus (vaje) viskas buvo ir gerai, bet dabar jau yra Kiniškos pramoninės PCB
Kodėl ta pati, archaiška Atmega? Juk yra tiek naujų procesoriukų, visokios ARM technologijos ir panašiai… Ogi todėl, kad aš dar vis tebeturiu prilupinėtų atmegų. Ir dar dėl to, kad naujom mikroschemom man reikės daug ką mokytis iš naujo, o aš tingiu. O beto turiu šiokią tokią paprogramių biblioteką ir biški загатовкю. O ir dar, naujos mikroschemos dažnai tupi durnuose korpusuose (arba siaurakojai arba BGA) arba reikalauja visokių papildomų reikalų. Kodėl ne ARM ir ne koks androidas? O kam man “ekskavatorius rūtų darželyje”? Aišku yra pas mane ir ARM devboardas su Androidu, yra ir Texas Instruments kažkoks devboardukas, ir Freescale semiconductors 8 ir n-liolikos bitų kontrolerio devboardai. Tačiau pagrindinė bėda laikas. Ypač dabar, kai darbe teko persikonfiguruoti į chemikus. 🙂

AVR USB 001 V2.0

Taigi, versija 2.0. Pagrindiniai skirtumai nuo pirmos versijos:

  1. Taigi dvisluoksnė ir žalia PCB! 😉
  2. 5 ir 3.3V technologija (jumperis ir LT117).
  3. RTC on board. Tiesa, tas durnas, Holteko.
  4. I2C sleivai on board: eepromas ir LM75.
  5. SPI flaš čipas (tiesa, dar neišbandžiai, nes visi turimi mažavolčiai, o aš dar noriu išlaikyti suderinamumą su 5V technologija)
  6. VISI I/O pinai išvesti ir galima prie jų lituoti.
  7. 6 pin ISP. Čia gal ne navarotas, bet paprasčiausiai reikėjo sutalpinti viską ant 5×5 plokštės.
  8. Mini USB lizdas.
  9. Žymiai daugiau kondikų- turi mažiau triukšmauti. LC filtras ant Vanalog.
  10. Kogero suderinamas su visais mano eksperimentiniais projektais. Ir kogero netgi su visais V-USB projektais.

Pridedu testinį softą kuris leidžia patikrinti LCD, I2C epromą, termometrą ir laikrodį. Kaip visada, source code ir sukompiliuotas hex failas.

O kad būti visai geriečiu, prašom: Eagle schema, PCB ir Gerberiai.

P.S. beja, vietoje 16 atmegos gali dėti ir didesnę ir mažesnę. Svarbu tik kad sutaptu pinoutas.

Holtek HT1380/1381

Prisilupau čia iš kažkokių ruterių ar modemų laikrodinių mikroschemų (RTC). Tačiau tokių prastokų… Holtek 1381. Iš pirmo žvilgsnio pamaniau kad tai bus I2C tipo čipas, tačiau pasirodo, kad ne. Tai kažkoks supaprastintas nuoseklusis interfeisas. Todėl teko su mikroschema šnekėtis “bit bang” metodu.

Holtek HT1381 ar HT1380

Dokumentacija rašė tikras kinas, todėl ja suprasti galima tik prisiliurlinus tiek, kad susiaurėtu akys. Internete apie šio čipo valdymą su AVR mikroschema ir dar C kalboje info kogero nėra. Todėl nutariau pasidalinti savo suprasta informacija ir pastebėjimais.
Continue reading →

PCB 46804

Kadangi keletas pramoninių PCB iškeliavo, įdedu schemą ir detalių išdėstymą:

PCB
(Schema)
Tai jau aprašytas Liion pakrovėjas ir kiek modifikuotas užknisiklis (Print screen).

Dėmesio! Schemoje gali būti klaidų ar sąlygiškumų. Aš jas paišiau sau ir dėl tingulio kai kur detalės nesurašytos arba klaidingų verčių. Kad ir rezistoriai viršutinėje dalyje prie diodų- ten 68R, o turėtu būti tiek, kad srovė neviršytu MCU ir diodų max leistiną srovę. Todėl atidžiai analizuokit schemą ir blogiausiu atveju klauskit čia.
Continue reading →

AVR 38: Liuksometras su MAX44007

Viskas prasidėjo nuo gero žmogaus vardu Valentinas kuris man padovanojo Maxim Semiconductos MAX44007 mikroschemą. Aišku mikroschema šlykščiai maža. Tačiau aš prieš keletą mėnesių atradau kiniškų PCB gamybą, tai pakeliui užsakėm perėjimą iš nesveikų 6 kojų UTDFN-Opto-EP korpuso (2×2 milimetro) į kiek labiau sučiupinėjamą senovišką DIP/DIL.

max44007 liuksometras

Mikroschema bendrauja su procesorium per I2C busą. Todėl pajungimas prie mano senoviškos ATMEGA 16 bandymų plokštės paprastas… tik vienas bet. Max čipukas mažavoltis, jo negalima jungti prie 5V maitinimo ir logikos. O mano senoji plokštė maitinasi iš USB porto- 5V. Todėl teko pasielgti paprastai- sumontuoti 3V stabilizatorių Max čipukui ir panaudoti keletą rezistorių, kad buferizuoti ir slopinti duomenų signalus. Kaip stabilizatorius suėjo LM1117 tipo mikroschema, o suderinimui kiloomo eilės rezistoriai. Ant PCB be mikroschemos ir kondensatoriaus į Vcc3.3 yra dar du I2C pullupai. O gal ir pull-downai 🙂 nes USB-MEGA plokštė pati bando daryti pull-up į 5V. Oscilografas parodė, kad signalai ant MAX44007 mikroschemos kiek viršija 3.3V, tačiau viskas veikia.

max44007 liuksometras su AVR MEGA16
Nuotraukoje su kiek senesniu softu. Gale straipsnio kiek naujesnis, kuris rodo ir skaičius po kablelio. Viskas kiek daryta skubotai ir nenaudojamas INT signalas. Paprasčiausiai testas. Kiek keistokai atrodo ir pati liuksų skaičiavimo matematika- ten tokia makalynė su bitais daroma. Tačiau slankiojo kabelio matematika nepanaudota.
Ten kur softas “lieja išmintį” tai tiesiog lengva higienos normų interpretacija. Rodo ar galima pvz. lituoti SMD mikroschemas ar dar įjungti lemputę kokią.
Bugas softe (nedarantis įtakos veikimui): kažkodėl nenusiskaito du registrai nuosekliai (3 ir 4), todėl nuskaičiau aš juos po vieną baitą. Lygtai pagal datašyta turėtu nusiskaityti.

Programinė įranga: (source code ir sukompiliuotas HEX failas ).