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
#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 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: Ú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". 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ű SOURCE "a8535 __. C"; a C forráskódja, amelyre CLOCK 3.69meg; a használt kvarc gyakorisága ; --------------------------------------------- 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 · Üzenetek - mindenfajta messagi tekercs az emuláció útján - tegye le és alacsony és széles legyen. · 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:
Mentse a fájlt a program kezdeti tesztjével - kattintson a "hajlékonylemezre".
A8535 __
A8535.hex
A8535.cof
Most a "Célfájl [HEX]" mezőben írunk: A8535.hex
; a [.hex] tartalmának a [__.c]
; 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)
; 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!
Perifériák - nyomja meg a "+" A / D átalakítót - látni fogjuk, mi történik az ADC regisztereiben.
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.Kapcsolódó cikkek