Che, jau rugsšėjo mėnuo. Ir nuo vasaros pabaigos dar didesnė depresija. Tačiau reikia rašyti… Aprašysiu kiek svetimą projektą. Aš prie jo prisidėjau tik konstruodamas ir programuodamas elektroniką ir dovanodamas reduktorių.
Projektas vadinasi “elektrinis dviratis” be kiniškų išmonių. T.y. kiek galima mažiau pirktinių elementų. Tiesa, į projekto galą atsirado gazo mygtukas iš kinijos ir akumuliatorių krovikas- balansuoklis. Tačiau pastarieji kaip ir ne dviračio elementai.
Category Archives: MCU
AVR76: unlock ir bambesiai
Iš kažkokio šroto pririnkau gal kokį pusę šimto ATMEGA162v procesoriukų. Buvo tiesiog gaila išmesti. Praėjo neskubant virš metų laiko, pasidarė testinė PCB ir buvo prilituoti keli. Pasirodė, kad jie užlokinti. Bent jau nuoseklus (serial) programavimas neveikė. Nėra didelė bėda ir ne pirmas kartas. Į rankas datašytą, biški programinimo ir … neveikia.
Dvidešimt tris kartus perpatikrinau schemą:
Continue reading →
Dvigubas maitinimo šaltinis: softas
Straipsnį apie Dvigubo maitinimo šaltinio konstravimą parašiau, o štai paviešinti softą ir jo source code visiškai užmiršau.
Trumpai apie hardwarę. Konstrukcijoje stovi du identiški reguliuojami maitinimo šaltiniai (linear), nepriklausomos trafo apvijos, srovės matavimas “high side” su srovės šuntu (problemos su mažom įtampom), grafinis LCD ekranas valdomas kiek stipresnio ARM SAM7 procesoriuko, kuris dar ir matuoja vienos pusės parametrus bei priima signalus per UARTą per optinį atrišimą iš kitos pusės. Kitą pusę kontroliuoja nedidelis AVR ATMEGA8 procesoriukas. ARMas dar matuoja įrenginio vidaus temperatūrą. Mikroprocesoriai nieko nevaldo, tik indikuoja.
Source (ir kompiliuotas hex failas):
ARM AT91SAM7 procesoriukui.
AVR ATMEGA8 procesoriukui.
Konstruktorius: LED laikrodis
Viename dukteriniam alibaba webšope nupirkau konstruktorių. Tai LED laikrodukas su korpusu. Kaina- 9.99$. Siuntė labai ilgai ir dar nebuvo trackingo. Ir kaip nebuvo galimybės užtrumpinti kinus kaip galima aliexprese. Tačiau, 10 doleriu mokslo labui… nesvarbu. Bet visdėlto siuntinį gavau.
Pasirinkau neutralią žalią spalvą, o pats laikrodis atitiko pagrindinį mano reikalavimą- jis turi RTC mikroschemą ir rezervinį maitinimo šaltinį.
Siuntinyje du paketai- korpusas ir pats konstruktorius. Čia dėl to, kad už pigiau galima nusipirkti tik patį laikroduką, o korpusą drožti pačiam.
Continue reading →
Kam to reikia arba elektroninis kryžiažodis (VX1818)
Laikas nuo laiko mano bloge atsiranda kokio nors neaiškaus prietaiso dalinis pajungimas prie kompiuterio ar mikrokontrolerio. Ir tikriausiai ne kartą skaitytojams iškilo klausimas- nu kam Levas eikvoja savo laiką niekam nereikalingo, morališkai pasenusio prietaiso nagrinėjimui?
Atsakymas labai paprastas- tai yra kaip ir smegenų poilsis ir laisvo laiko eikvojimas. Taip kaip kokie nors kryžiažodžiai- smegenis dirba, bet realios naudos jokios nėra.
Štai vienas iš tokių galvosukių:
Tai kažkokio portatyvinio DVD grotuvo nuplėštas ekraniukas. Kas įdomu- ekraniukas (pats LCD) turi analoginį įėjimą- RGB! Tačiau jam reikia visokių egzotinių ir neigiamų įtampų (-12V,+17V ir 5V) ir visokiausių sinchro signalų. Tam reikalui, šalia LCD ekraniuko buvo paslėpta plokštė su VXIS daugiakoju VX1818. Aišku gerieji kiniečiai jokios naudingos informacijos apie savo produkciją neskleidžia.
Tačiau guglinimas atskleidė kažkokio prietaiso (gal ir net panašaus DVD grotuvo source code). O turint tokią informaciją jau galima pradėti spręsti šitą kryžiažodį.
Iš originalaus DVD grotuvo iškirpaus maitblokį (beja DVD grotuvėlis buvo veikiantis, jame tik kažkoks kakulis buvo pastrigęs optinėje sistemoje) ir užtrumpinau maitinimo paleidimą, kad visada veiktu. Pačiam ekranėliui ir VX1818 reikia kokio nors video signalo kad pasileistu. Todėl pradžioje naudojau seną video kamerą, vėliau panaudojau didesnę egzotiką- ZX Spectrum kompiuteriuką.
Pats VX1818 sugeba dekoduoti iki RGB video signalus ateinančius PAL ir NTSC formatuose, supranta S-Video komponentinį signalą. Tačiau bendrai paėmus, visą šitą darbą atlieka labai nekokybiškai. Nu ir dar viską sugadiną LCD ekranko rezoliucija. Čipo down-scale veikia labai prastai, o tie zoom režimai nelabai padeda. Kitas bjaurus momentas- PAL sistemą dekoduoja “skaitmeniškai” ir nelabai kokybiškai- ant spalvotų laukų išlenda nešančiosios artefaktai, o ir spalva nėra tolygi. Naudojant signalą iš kameros tai nelabai jaučiasi, bet vaizdas iš kompiuteriuko tragiškas (kompiukas ten perdarytas, išvesta video signalas per antenos lizdą).
AVR72: PT6302
Tai dar vienas Princeton produktas skirtas VFD indikatoriams: PT6302. Pakėliau, nes ant PCB buvo sumontuotas ir VFD ekranas ir įtampos keitiklis.
Dvigubas maitinimo šaltinis
Kaip sakoma, geriau vieną kartą pamatyti, o ne šimtą kartų išgirsti. Taigi va, daug fotkių. Komentarai bus vėliau. Fotkės pasididina. Tai dvigubas izoliuotas maitinimo šaltinis. Jis man nelabai patinka dėl visokių klaidų ir nepribaigimų. Kitą darysiu geresni. Tačiau kiek pasimokėm apie ADC, srovės ir įtampos matavimą, apie izoliuota procesorių bendravimą, apie AVR ir ARM darbo subtilybes. Jis man net vieną kartą nukrito nuo stalo, todėl patariu, naudokit gumines kojytes savo konstrukcijai.
Šiaip aparatas kaip ir veikia, tačiau voltmetrai-ampermetrai netikslūs ir reikia stabilumo, pats aparatas perkaista dėl kiniškų trafų kokybės…
Parametrai 2x apie 13V max, gal amperas. Prie žemesnių įtampų keli amperai. Pilnai izoliuoti, galima jungti nuosekliai, tada įtampa kažkur apie 24V.
Vėliаu surašysiu viską po nuotraukom ir gale sudėsiu softą tiek AVR, tiek ARM procesoriukams. Gal kam prireiks.
Continue reading →
Darbo laiko apskaitos laikrodis
Jo. Pažiūrėjus į šią nuotrauką, blogo skaitytojai pasakys- jo, jau toks buvo. Ir jie bus biški teisūs ir biški ne. Nes pats VFD laikrodukas jau buvo.
Čia jau kitoks principas ir užduotys. Šis laikrodis skaičiuoja darbo laiką, kiek liko iki pietų ar darbo pabaigos, dar rodos kiek liko iki “perekūro” ir kiek laiko iki perekūro pabaigos.
Nuo seniau aprašyto modelio šis laikrodis skiriasi tuom, kad jis neturi nei vieno valdymo mygtuko. Viskas valdosi per originaliai displėjuje stovinti RS232. Valdyti terminalo programa, ypač, kai serial portas išnaudotas ir displėjui sunkoka. Nes nėra atbulinio ryšio- pas panaudota ATMEGA8 tik vienas UARTas ir jis priima valdymo komandas ir pats valdo ekraną.
Continue reading →
CYPRESS 001: softwarinis USB pasišnekėjimas
Pirmiausia- disclaimer: nieko dar nesuprantu, todėl čia milionas klaidų. Šiaip tai užrašai, kad neužmirsčiau kaip dariau.
Darom naują folderį, jame naują uVision projektą: usbsoft, pasirenkam čipą. Pakeičiam projekto pavadinimą į USBIS.
Į naują folderį kopijuojam failus iš pavyzdinio projekto “bulkloop”:
fw.c – usb firmware.
dscr.a51 – usb įrenginio aprašymas.
folderį inc, kuriame yra: Fx2.h, fx2regs.h, fx2regs.inc, fx2sdly.h, syncdly.h. Šiaip jie visi nereikalingi, ir šiaip galima susikonfiguruoti, kad imtu iš inkludų bibliotekos. Tačiau dar nemoku.
folderį lib, kuriame yra: EZUSB.LIB, USBJmpTb.a51, USBJmpTb.OBJ (tas pats komentaras kaip ir su inc).
Kopijuojam failą “bulkloop.c” ir jį persivardinam kaip savo, sakysim “pimpis.c”.
Failą pimpis.c, fw.c, EZUSB.LIB, USBJmpTb.OBJ, dscr.a51 prikabinam prie projekto.
Kaip ir senesnėje žinutė modifikuojam projekto nustatymus (Options for Target ‘USBIS’): output->create hex, “BL51 Locate” nuimam varnelę, o grafoje “Code Range:” rašom “0×80-0×0FFF”, o “Xdata Range:” rašom “0×1000″.
Failuose “fw.c”, “pimpis.c” … reikia pataisyti nuorodą į inc folderį, nes pas mus jis biški kitaip stovi. Arba folderius iškelti aukščiau. Kol kas, kad nesigadinti, ir kad būtų pilnai “portable” pakeičiam:
#include "inc\fx2.h"
#include "inc\fx2regs.h"
#include "inc\syncdly.h"
Dabar viskas turėtu susikompiliuoti be klaidų ir ispėjimų. Pradedam modifikuoti “pimpis.c” kodą:
Mūsų pradinėm reikmėm yra dvi paprogramės:
Tai inicializacijos TD_Init(void) kurioje surašoma viską ką reikia inicializuoti įjungiant mašinėlę. O kita mums labiausiai dominanti funkcija- TD_Poll(void) kuri visada sukasi, kai tik būna laisvas procesoriukas.
Ten pavyzduke yra zonos kurios prasideda if(!(EP2468STAT & bmEP2EMPTY))… ir if(!(EP2468STAT & bmEP4EMPTY))… va jas pilnai perdarom į nepriklausomas:
if(!(EP2468STAT & bmEP2EMPTY)) { ... } // bulk endpoint 0x02
if(!(EP2468STAT & bmEP6FULL)) { ... } //bulk endpoint 0x86
if(!(EP2468STAT & bmEP4EMPTY)) { ... } //bulk endpoint 0x04
if(!(EP2468STAT & bmEP8FULL)) { ... } //bulk endpoint 0x88
Šios zonos iškviečiamos kai gaunamas užklausimas iš hosto kaip “Bulk in endpoint” ir “Bulk out endpoint” su atitinkamai numeriais. Tie patys endpoint aprašyti “dscr.a51” faile. Bet kol kas neliečiai nei VID/PID nei USB aprašymo.
Kitų paprogramių kol kas neliečiam. Dar į pimpis.c įmečiau kelis globalius kintamuosius, kad persinešinėti informaciją.
Programos veikimo principas toks, kad pagal išorines užklausas atliekam veiksmus su buferiais EP2, EP4, EP6 ir EP8. Dėmesio yra dvigubas buferizavinas, todėl nereikia stebėtis, kad kai kurie informacijos pokyčiai atsiranda “pavėluotai”, tik po antro užklausimo. Nugi dvigubas buferis.
Eksperimentinė programa daro tai:
Host rašymo užklausa 0x02 papračiausiai pasiima vieną baitą iš USB paketo ir paruošia buferį naujam darbui. Aš nesu tikras, ar tik nereikia du kartus pakartoti “rearm” komandos?
Host rašymo užklausa 0x04 irgi protingo nieko nedaro- bando nusiskaityti siustų duomenų ilgį ir šiaip skaičiuoja užklausų kiekį. Informacija pasideda į globalius kintamuosius.
Host skaitymo užklausa 0x86 paprasčiausiai kopijuoja tekstą į USB buferį ir jį persiunčia į hostą.
Host skaitymo užklausa 0x88 paprasčiausiai išspjauna “XXX” seriją, tik keli baitai pakeisti į įvairius seniau surinktus globalius kintamuosius.
Tai tik tiek. Bendravimas su hardware daromas su Cypress USB Control Center
Dabar galima pagal USB užklausas atlikti kokius nors primityvius paskaičiavimus. Tačiau tai softwarinis sprendimas, čia nėra atliekamas tiesioginis GPIO valdymas (Ports mode). Visgi tik antra- pirma pamokėlė. 🙂
SIAscope
Kažkada ieškojau žmonių kurie padėtu suremontuoti apgamų mikroskopą SIAscope. Ten kartu su ASTRON Clinica softu toks šūdinas USB mikroskopas su R, G, B, W, IR LED pašvietimu. Viskas padaryta ant Cypress EZ – USB FX2LP čipo ir dar stove ATMEGA48 kuri gal valdo LEDus… o gal užsiima kenkėjiška veikla.
Dabar kai daug kas paaiškėjo, norėtusi biški pabambėti ir gal kam nors bus sutaupyti pinigai. Nes šito prietaiso esmė- pinigai.
Continue reading →