A vmlab fájlok előkészítése

1. Hozzon létre egy szövegfájlt, például a z5_start.txt fájlt, amely a VMLAB projektfájlja lesz.

2. A mért feszültséget a változó ellenállású motorról a MK PA0 bemenetére (ADC0 - pin 40) táplálják. A változó ellenállás kimenetei nullára és az MC áramellátására vannak kapcsolva. Így emuláció alatt az ADC0 ADC bemeneten levő feszültséget 0 és 5 volt között változtathatjuk.







3. A B-port mérési eredményét 5 emulátor LED-re bocsátjuk ki - világít az "1" nem világít "0" - pontosabban csak az eredmény 5 alsó bitjét látjuk.

; Cím :; ********* www.avr123.nm.ru *********; ; feladat 5. ADC MK AVR AT90S8535; ; összeállítás on - CodeVision C fordító demo; ; A VMLAB emulátornak szüksége van a .hex .cof __. C fájlokra; az összeállítás eredményeként kapott. ; ; *********************************; Az ADC használatához az MK-t kell benyújtani; referenciafeszültség a kimeneten AREF - mi; 5 Volt MC-t szállítunk. De! a VMLAB-ban; nem tud két csomópontot közvetlenül összekötni; 1 ohmos ellenállást használunk: R1 VDD AREF 1; az R1 ellenállás csatlakozik; csomópontok VDD és AREF. 1 Ohm ellenállása; a Vref referenciafeszültségnek 5 voltnak kell lennie -; azt jelenti, hogy 5 V-ot alkalmaznak az ADC bemenetére; kapjuk az eredményt: 11111 11111 (ADC, AT90S8535 10-bit); és a konverziós lépés lesz; Vref / 1024 = 4,883 miVolta; Input0 ADC (ez a PA0 MK kimenete), amelyhez csatlakozni fogunk; változó mozgatható érintkezése; Ellenállás (az 1. csúszka a "Vezérlőpult" ablakban) -; a mért érték megváltoztatása emuláció alatt; feszültség az ADC bemeneténél. V1 PA0 VSS SLIDER_1 (0 5); a változó végein; 0 és 5 volt; 5 LED -; kapcsolódni, hogy a polaritásuk, hogy a B port D1 VDD PB0 D2 VDD PB1 D3 VDD PB2 D4 VDD PB3 D5 VDD PB4 .PLOT V (PA0); Az Oszcilloszkóp képernyőn (ablak, "SCOPE") fogjuk a feszültséget; a potenciométer motorján; Minden, a VMLAB projektfájlja készen áll.

Kérjük, vegye figyelembe, hogy a VMLAB lehetővé teszi a LED-ek közvetlen csatlakoztatását a + tápegységhez és az MK csatlakozókhoz. A valóságban 430 - 910 Ohm áramkorlátozó ellenállást kell előírni, sorba kapcsolva az egyes LED-ekhez!

MK program létrehozása:

1. A D: CVAVR mappában (ahol meg kell adni a CodeVisionAVR fordítót) létre kell hoznia az Atmega16 mappát a projektfájlokhoz.

2. Indítsa el a fordítóprogramot.

3. Projektfájl létrehozásához válassza a Fájl -> Új -> Projekt -> OK -> Nem parancsot

4. Menjen a projekthez létrehozott Atmega16 mappába, és írja be az "Atmega16" nevet a "fájlnév" mezőbe.

5. Kattintson a "Mentés" gombra a projektkonfigurációs ablak megnyitásához.

6. Nyissa meg a "C Compiler" fület, és állítson be mindent így:

Vegye figyelembe a kimeneti fájlformátumokat:

Szükségünk lesz a szokásos módon .HEX, de most is .COF fájl - tartalmazza a firmware-kötést az MC-nek a program szövegéhez a C-ben szimulátorokhoz!

ADC példa az AT90S8535 esetében

AVR "a semmiből" a C - feladat 5

CodeVisionAVR C fordító

Kimeneti feszültség AREF = 5.0V
A kvarc frekvencia 3,69 MHz
A mért feszültséget a PA0 terminálra alkalmazzák
Az eredmény (kis byte!) Kimenet PORTB
A LED-ek a 0_4 PORTB bitre vannak csatlakoztatva.
* /

#include <90s8535.h> / * fájl a "vas" MK AT90S8535 leírással. Ennek a fájlnak a szövegét egyszerűen beilleszti a fordítóprogram előfeldolgozója helyett a * /

#include // kész késleltetés funkciók

#define ADC_VREF_TYPE 0x00 / * Most az előfeldolgozó az "ADC_VREF_TYPE" helyére "0x00" mindenhol a program szövegében.


A #define irányelv nagyon hatékony és kényelmes.

/ * A konverzió befejezése után megszakadunk, és az eredményt kiadjuk.

Ehhez egy funkciókezelőt kell írni
megszakítások - írj: * /

ADCW;
/ * kimenet az ADC PORTB eredményéhez.

Elemezzük ezt a programot.


Regisztráció ADCW akkor nem fogja megtalálni ADATLAP de CVAVR fordító tudja használni - ez egy virtuális 16 bites regiszter, ez tartalmazza az összes 10 bites az eredmény - ez kényelmes, de lehet használni a regiszterek DATASHEET, nevezetesen: ADCL és ADCH

Aztán jön a művelet:

- ez az inverzió: az egységek zéróvá válnak és fordítva, ezt úgy kell megtenni, hogy az "1" megfeleljen az égő LEDnek - végül is a bekötési rajz szerint világít, ha az MK "0"

Egy másik fontos pont: (unsigned char) - így az adatok típusát - két bájtos érték (.! ADCW - virtuális 16 bites regiszterek már csak a „fej” KodVizhn compiler) adtunk egy olyan típusú előjel nélküli jelleg - egy 8 bites - ez adattípus „mászni” MK * /







delay_ms (20); / * 20 milliszekundum késleltetés

Figyelem! Nem ajánlott szünetet használni a megszakításkezelőben, ha nem szabályozza a megszakítást okozó események előfordulásának pillanatát, és többször is megszakítja a programot.

ADCSR | = 0x40; // futtassa a következőket
// AC átalakulás.
// olvassa el az ADCSR regiszter adatlapját!

> // a függvény-záró zárójel,
// a megszakításkezelő


érvénytelen fő (üres)

PORTB = 0xFF; / * Az egységek a "B" MK "port" reteszelőihez vannak írva - de az MK terminálokon csak akkor jelennek meg, ha ezek a lábak KIMENETEK. * /

DDRB = 0xFF; / * Regisztráljon az irányt a kikötői terminálok „B” MK - felvettük nyolc „1” - így most minden lába kezdtek megjelenni, és rajtuk voltak a jelek, a pillanat PORTB, és az előző sorban a program keretében kap dobott edinichki - most a lábakon PB0_PB7 MK. * /

A magas szintek szinte az MK tápfeszültsége - akkor a LED-ekön keresztül folyó áram nem áramlik, és kialszik. A többi terminálhoz tartozó LED-ek az ellenállásokon keresztül csatlakoznak az áramellátáshoz! Tehát a LED-es potenciálkülönbség eltűnik, és nincs áram - nem ég. Ez olyan egyszerű.

ADCSR = 0x8E; / * az ADCSR-ben rögzítettük a 0x8E vagy 1000 1110 számot

7. bit - ADEN: írva '1' - kapcsolja be az ADC-t (feltételezzük, igen, igen. `0` - kapcsolja ki az ADC-t)

6. bit - ADSC: '1' - elindítja az AC átalakítást, és számunkra `0` azt jelenti, hogy a konverzió még nem indul el.

5. bit - ADFR: "1" - az ADC átalakítása automatikus folyamatos működésbe - az "autonóm". Számunkra Bit 5 = `0` - azt jelenti, hogy az ADC mindegyikét külön-külön átalakítja a parancsunkon.

Bit 4 -ADIF: Interrupt flag - az ADC végén az '1' lesz, és alaphelyzetbe állítása megszakítási feldolgozással, vagy ezzel a bitegységre írva!

3. bit - ADIE: '1' - lehetővé tette a megszakítást az ADC végén.

2..0 bitek - ADPS2..ADPS0: Az ADC működési frekvenciájának beállítása - 110 - akkor az együttható. 64 körzet - az ADC 57.65625 kHz működési frekvenciája. * /

#asm ("sei") // megengedett globális megszakítások

ADMUX = 0; // Válassza ki az ADC bemenetet, a feszültséget, amelyen át digitalizálódik.
// olvassa el az ADMUX regiszter adatlapját
// Meg kell értenie, hogyan kell kiválasztani az ADC csatornát

ADCSR | = 0x40; / * Indította el az első konverziót az `1` bit_6 értékkel az ADCSR regiszterben

Ahhoz, hogy az "egyik" regiszter bármely bitjét a regiszter többi bitje megváltoztatása nélkül is elvégezhesse, akkor a regiszter "vagy" (jelöli) | A maszk olyan szám, amelyben az összes bit nulla, és az "1" értéket csak a bitek állítják be.

* /
miközben (1); / * végtelen hurok - ott ülünk benne, amíg MK tápegység van, és az ADC befejezésekor belépünk a megszakítás feldolgozásába és visszatérünk itt * /

> // konzol zárása a fő számára

#include <90s8535.h> #include #define ADC_VREF_TYPE 0x00 megszakítás [ADC_INT] void adc_isr (void)


Mentse a fájlt a program kezdeti tesztjével - kattintson a "hajlékonylemezre".

Azt is fel kell venni a projektben: kattintson a „kalapács-key-csavarhúzó” - a projekt konfigurációs ablakban kattintson - az Add - Válassza ki a Atmega16.c - és „Open” - most A8535.c fájl részeként a projekt, kattintson az „OK” . Do: Fájl - mentse mindent.

Mindössze 3 fájl szükséges a fordítási folyamatból:
A8535 __
A8535.hex
A8535.cof

Új projektet kell létrehoznia

kattintson: Projekt - Új projekt

volt egy ablak, "Új projekt létrehozása" - alaposan megvizsgálja - számos lépést tartalmaz a projekt konfigurálásához - csak szépen kell kitöltenie őket.

1. lépés - adja meg ad_test.prj projektünk nevét, győződjön meg arról, hogy az általunk létrehozott mappában található!

2. lépés - Válassza az MC: AT90S8535 lehetőséget

3. lépés - jelölje meg a harmadik elemet - az A8535.cof fájlt

4. lépés - a felső mezőben írjuk be a forrásfájl nevét a C A8535 __ cc c -ra és kattintsunk a jobb oldali gombra: "add this".
Most a "Célfájl [HEX]" mezőben írunk: A8535.hex

Bontsa ki a projektfájl ablakot ad_test.prj - a projekt csontváz készen áll! Most meg kell nyitnunk a z5_start.txt szöveges fájlt, amelyet a feladat elején hoztunk létre.

Az emulátor nyelvén leírtuk az eszköz elrendezését az MC-n - most már hozzá kell adnunk néhány sort az emulátor által generált projektfájlból:

Illessze be a következő sort a "Használathoz" sor előtt:

TARGET "a8535.hex"; emulált firmware MK

COFF "a8535.cof"; a fájl kötelező érvényű
; a [.hex] tartalmának a [__.c]

SOURCE "a8535 __. C"; a C forráskódja, amelyre
; a [.cof] fájl összehangolt.
; ez a CodeVision hozzáadta a "__" kifejezést a fordítás során


.TRACE; kimeneti hibakeresési információ az ablakban
; SCOPE - rózsaszín (lásd HELP emulátor)

CLOCK 3.69meg; a használt kvarc gyakorisága

; ---------------------------------------------
; Elektromos "érintkezők" megnevezése -
; csomópontok MK, amelyekhez "csatlakozhat"
; emulátor: RESET, AREF, ACO, TIM1OVF
; PA0-PA7, PB0-PB7, PC0-PC7, PD0-PD7,
;
; az információ referencia - a
; minden MK rendelkezik saját!

Most: Fájl - mentse mindent.

A "Build project" -ból - nyomja meg az F9 billentyűt

Itt az ilyen feliratnak tetszik neked:

Minden készen áll a program futtatására az emulátorban.

De mielőtt elindulna, még mindig be kell állítania az ablakokat a számítógép képernyőjén, hogy megfigyelje az emulációs folyamatot. Windows-ra lesz szükségünk:

· Vezérlőpult - ezen a panel változónál változtathatja meg az ADC és a LED-ek bemeneti feszültségét
Perifériák - nyomja meg a "+" A / D átalakítót - látni fogjuk, mi történik az ADC regisztereiben.

· Üzenetek - mindenfajta messagi tekercs az emuláció útján - tegye le és alacsony és széles legyen.
Alkalmazási kör - virtuális oszcilloszkóp - az ADC bemenetén megjelenő feszültséget láthatja - állítsa be a függőleges 1 V-os skálát osztásonként.

· Kód - ebben az ablakban meg fogjuk jeleníteni a forráskódot a C-ben és a program előrehaladását a munkafolyamatban.

A Nézet menüben láthatja, hogy milyen más ablakok állnak rendelkezésre - és a Súgóban olvasható.

Nyomjuk a közlekedési lámpát. Az emulátor okos és esküszik: azt mondják, hogy a Watchdog Timer (a kutya közös szóhasználatában) a barátomnak vissza kell állítania! bekapcsolás előtt!

Szereti a veszekedést - de nem használjuk a CEE-t - nézzük meg a fájlt a program összeszerelési listájával (ez a projekt mappájában található a fordítóban) - van ilyen fad:




Kapcsolódó cikkek