0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaMoj preprost logični analizator

    Moj preprost logični analizator

    Pred kratkim sem potreboval logični analizator: opazoval naj bi nivoje digitalnih signalov na 8-bitnem vodilu neke naprave, jih shranjeval in kasneje tudi analiziral. Najprej sem skočil na ebay.com, kjer sem takoj našel ogromno ustreznih izdelkov, ki imajo nenavadno širok cenovni razpon od deset pa vse do nekaj tisoč EUR. Vsekakor je zelo sprejemljiva naložba, če plačate deset EUR za USB dodatek, s katerim bi lahko izpolnili vse te zahteve, čeprav bi takšen izdelek resnično potrebovali in uporabili samo enkrat, vendar je bilo v „drobnem tisku“ tudi pomembno dejstvo, da bi bilo treba na dobavo čakati kar nekaj tednov! Spet sem se znašel pred izzivom z istim vprašanjem: »Pa bi lahko takšen izdelek naredil tudi sam?«… No, pri tem izdelku, ki ga bom sedaj opisal, se je vse skupaj začelo tako.

    Osnovna zamisel napravice je takšna: mikrokontroler v enakomernih časovnih intervalih bere logične nivoje na enih od svojih vrat in jih shranjuje v svoj SRAM pomnilnik. Ko je serija vzorčenja končana, je potrebno podatke na nek način izvoziti iz mikrokontrolerja in jih potem na primeren način obdelati: tu si lahko pomagamo z uporabo orodij v MS Excelu. Pri roki sem imel ravno ATmega8515 s 512 bajti SRAM pomnilnika – ravno dovolj za shranjevanje nekaj sto 8-bitnih vzorcev!Slike ni

    Shema logičnega analizatorja z mikrokontrolerjem ATmega8515 je prikazana na Sliki 1. Shema je združljiva z razvojnim sistemom MiniPin, tako da lahko logični analizator naredimo kot samostojno napravico ali pa le na tej razvojni ploščici. V primeru, da lahko napetost 5 V za napajanje mikrokontrolerja in alfanumeričnega prikazovalnika vzamemo iz naprave, na katere vodilu vzorčimo digitalne signale, postane nepotreben celo napetostni regulator IC1, s čemer postane izdelek še bolj enostaven. Naj vas ne zavede enostavnost sheme: prava moč napravice se skriva v programu znotraj mikrokontrolerja. Del programa je napisan s programskim jezikom Bascom-AVR, del pa je napisan v zbirniku. Poglejmo, kako naj bi program deloval!Slike ni

    V uvodnem delu rezerviramo polje spremenljivk »Snimke« velikosti 400 bajtov za shranjevanje podatkov, mimogrede pa definiramo še spremenljivko Indeks, ki nam bo omogočala dostop do teh podatkov:

    Dim Snimke(400) As Byte , Indeks As Word

    Sledi nastavitev vhodnih vrat A, prek katerih bomo s posameznimi priključki brali logična stanja na vodilu:

    Config Porta = Input
    Porta = 0

    Pull-up upori niso priključeni, saj želimo, da mikrokontroler s svojimi priključki ne bi niti najmanj vplival na logična stanja na vodilu. Na drugi strani pa je pull-up upor na priključku PD2 priključen, da bi program lahko bral stanje tipke TP3:

    Config Pind.2 = Input
    Portd.2 = 1

    Imena tipk in njihova priključitev so zaradi združljivosti enaki kot pri razvojni ploščici MiniPin.

    Tukaj se začne resni del programa, vzorčenje! Ta del je napisan v zbirniku. Čeprav smo določili spremenljivko »Indeks« za naslavljanje polja »Posnetka«, bomo takšen pristop uporabili le pri branju in prenosu zajetih podatkov, ki se izvaja v Bascom delu programa. Vzorčenje podatkov mora biti hitro in enostavno in najbrž bi nam manipulacija z naslovi s pomočjo spremenljivke »Indeks« vzela preveč časa. Zato za naslavljanje v zbirniškem delu programa uporabimo par registrov R30 in R31 (tako imenovani Z register). Najprej bomo vanj zapisati naslov prvega bajta polja »Snimke«:

    Loadadr Snimke(1) , Z

    nato pa prebrali stanje na vhodih vrat A in ga shranili v registrih R24 in R25, ter na prvo lokacijo polja »Snimke«:

    in r24,pina
    mov r25,r24
    st z+,r24

    Opazimo lahko, da je ukaz »ST z+« v zbirniku poleg tega, da zapiše podatek na naslov, kamor kaže naslov v Z registru, poveča tudi vrednost Z registra za 1: vrednost v registru sedaj kaže na naslednjo lokacijo polja »Snimke«.

    Celotni članek

    Moj preprost logični analizator

    2014_SE220_51