Category Archives: MCU

Biški softo CNC motoriukams

Tai rezervinė kopija mano ala “cnc” projektui- AVR source kodas bei sukompiliuoti hex failai. Taip pat exe failas windowsams kuris valdo visą šitą mašineriją. Tiesa nežinau ar tai 32 ar tai 64 bitų versija.

Vienas AVR soursas skirtas valdyti steperius per paprastus mosfet raktus. Antra versija naudoja du Freescale/Motorola čipus MC34922. Teoriškai abi versijos turi veikti vienodai, viena skirta unipoliariniams motoriukams, kita bipoliariniam. Senesnė versija išbandyta praktiškai, tuo tarpu naujesnė tik prie palaido motoriuko.
Softas kiek skiriasi- nauja versija turi srovės nustatymo komandas. Tačiau senesnis softas paprasčiausiai ignoruoja šias komandas.

Softas.

Tai negalutinė versija, todėl skirta tik eksperimentams.

Sincgars Nokia SMS terminalas

Čia toks karinis kriptoterminalas kurį naudojo amerikonai ir NATO kariai (Nokia PARSA – Partiosanomalaite). Šitas SMS aparatas jungiasi prie SINCGARS racijų (komentaruose parašyta kad tokią turiu) ir ten galima siuntinėti koduotas žinutes. Dar yra ir maži printeriukai, kad atspausdinti čekutį. O pati racija dargi dirba šokinėjančio dažnio režimu. Kad dar sumažinti galimybę nuskaityti informaciją, ji siunčiama “burst” režimu. T.y. piršteli tuos kelis baitus vienam dažnyje, kelis kitame ir išsijungia.

NOKIA SINCGARS crypto terminal
Toks teoriškai nieko nebijantis korpusas. Maitinimui reikia net 6 AA tipo batareikų arba gali maitintis iš racijos.
Continue reading →

ARM:0002 arba Hello World aka mirksiukas

Pirmas darbas programuojant bet kokia programavimo kalba kompiuteryje yra parašyti “Hello World” programą. Visokiuose mikrokontroleriuose tai mirksiukas. T.y. kažkokia koja turi mirksėti kažkokiu priimtinu ir detektuojamu dažniu. Nu koja nemirksi, bet koks nors šviesos diodas tai tikrai. Labiau “advanced mirksiukas” tai mirksiukas kuris reaguoja į kokį nors išorinį vaiksmą. Šiuo atveju į kitos kojos būklę.

SAM7 mikrokontroleris turi gana daug kojų. Kai kurios turi ne vieną paskirtį. Tačiau męs čia giliai nekapstysim- PA1 koją panaudosim kaip išėjimą, o PA2 kaip įėjimą. Mano PCB visos kojos išestos į standartinio (0.1″) žingsnio skylutes. Pačios skylutės kiek didesnio diametro, tai ten puikiausiai laikosi oscilografo čiupiklis.
Kol kas nesinagrinėjau aš to MCU hardwarės, tai nieko protingo nepadariau- tik užprogramavau vieną koją išėjimui. Kitos tikriausiai pagal nutylėjima pasidaro kaip įėjimai. Kaip ten organizuojami pull-up aš nežinau, bet po standartinės inicializacijos viskas veikia.

Kuo šitas skiriasi nuo paprastos ATMEGOS iš softo pusės? Dar nežinau daug, bet pirmas bugas kuris man pasirodė nesuprantamas, tai kad reikia paprogrames daryti STATIC. Jei neparašai, viskas susikompiliuojasi, bet kažkaip neveikia. Čia jau aš dar nesupratau. Dar klaustukas dėl VOLATILE kintamųjų. Bet kadangi viskas nudrožta nuo oficialaus Atmelio pavyzduko, tai matyt taip turi būti.

ARM mirksiukas
Softas veikia taip- amžinam cikle sėdi kitas ciklas kuris skaičiuoja pauzės dydį. Nuo minimalios iki kiek didesnės. Nuo PIN2 reikšmės priklauso pauzė vienokia ar didesnė 10 kartų.
T.y. kai nenuspaustas (kaip foto) pauzė keičiasi nuo 0 iki 9*5 tuščių ciklų. Pauzė ir mygtuko tikrinimas daromas prieš kiekvieną signalo pokytį.

Per nuotraukoje apibrėžtas 800ns įvyksta: signalo pakeitimas iš 0 iki 1, mygtuko reikšmės nuskaitymas per paprogramę, pauzės skaičiavimas =0*5*1, pačios pauzės paprogramės iškvietimas ir nepavykęs for ciklas, važiavimas atgal iš paprogramės ir signalo pakeitimas iš 1 į 0.

Taktinis procesoriuko dažnis kažkoks defaultinis skirtas USB. Kažkur apie 48MHz. Bent jau toks turi būti. Čia jau labiau patyrę turi pakomentuoti ar gerai man gavosi.

Ir aišku: Source code ir hex.

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 →