AVR, usb

Ebben a cikkben fogunk összpontosítani ezen a felületen nagyon népszerű, mint az USB, vagy inkább hogyan kell használni az USB interfész a AVR mikrovezérlő család. Az interneten ebben a témában egy csomó információt, de a legtöbb képviseli egyes töredékek, és nem ad teljes képet, hogyan kell használni ezt a felületet, hogy mikrokontroller AVR.

Az ilyen felületek, mint a COM, MIDI, LPT széles körben használják egy időben, de most már elavult, és egyre kevésbé gyakori a modern számítógépek elsősorban a számítógépek ipari és nagyon speciális berendezések. Kapcsolat az összeszerelt készüléket a számítógéppel, akkor mindenféle adapter és konverterek emulátorok, de a gyakorlat azt mutatja, az általuk generált egy csomó probléma.

Ahhoz, hogy a USB barátkozni és AVR mehet 3 módja van:

Poddrezhku hardveres USB interfész, például AT90USB * mikrokontroller. Használatához meg kell írni speciális firmware érte. És ha a gyülekezet nem egy szabványos USB-eszköz osztály lesz, hogy levelet illesztőprogramot a számítógép, amely elmagyarázza, hogy a PC foglalkozó egységet.

Az USB átalakító, amit néhány más interfeyst (például USB-UART on-chip FTDI FT232RL). RS232 működhet más felületek, I2C vagy mások. Ezzel a megközelítéssel, hogy nem kell zamarachivatsya, és tudja, hogyan kell dolgozni az USB interfész, valamint annak szükségességét, hogy a vezető a számítógép már nem ugyanaz, mint a vezetők ilyen konverterek írtak a gyártó.

Akkor lehet, hogy a trükkösebb take AVR mikrovezérlő és írjon neki egy programot, amely utánozza USB munkát. Ezzel a megközelítéssel van nehéz végrehajtásában a nagy sebességű adatátvitel. Az USB interfész működik, nagy sebességgel, amely lehet: kis sebességű - 1,5 Mbit / s, FullSpeed ​​- 12 Mbit / s, HighSpeed ​​- 480 Mbit / s, míg az USB 3.0 interfész sebesség lehet még magasabb. Ezért az AVR eszköz lehet csak kis sebességű sebességet. A legtöbb házi készítésű eszközök sebessége elég.

Fogjuk használni a módszert az emulátort. Jelenleg már három befejezett projekt keretében AVR eszközök felülmúlni az USB interfész.
  • USBtiny;
  • V-USB;
  • Igor Cesko.

Igor Cesko első, aki nem egy ilyen projekt, azt írta az assembly nyelven.

Egyszer volt egy projekt V-USB van írva C nyelvet assembler kódot a V-USB IR vevő a projekt tette a számítógép.

USBtiny viszont proizvolnym egy korábbi változata a projekt V-USB. Ha lehetséges, akkor rosszabb, mint a V-USB, de garazdo elméletileg könnyebb és viszonylag könnyen elsajátítható.

Fogjuk használni a projekt V-USB

AVR, usb

A kísérleteikben, USB, flash mikrokontroller C-nyelven írt környezetben AVR-Studio 4 + WinAVR, PC szoftvert fejlesztettek Borland C ++ Builder környezetet, mint a legegyszerűbb és hustry opciót. Ezért az összes alábbi példák ugyanaz lesz. A helyes választás eszközök számától függ a fejfájás, a következő lépéseket. Over-e jobb, ha a C vagy assembler is sokat beszélnek. Ami engem illet, hogy szükség van a saját összes szerszámot, néhány nagyobb mértékben néhány kevésbé, és használja egyik vagy a másik függően az adott feladathoz.

Próbáljuk összegyűjteni az első USB HID eszközt mikrokontroller Atmega8 és tanítani neki, hogy kommunikálni a számítógéppel az USB interfészen keresztül. Felmerülhet a kérdés, hogy „miért HID eszközt." A válasz a legtöbb prostoy- mert nem akarjuk, hogy zamarachivatsya, hogy magát az agyat és a levelet az összes ott illesztőprogramok a Windows. És amikor podklyuchaetm HID eszközt az operációs rendszer választja, és magában foglalja a szükséges drivereket. A program a számítógép nem kell telepíteni és konfigurálni, hogy vagy lesz azonnal használatra kész az algoritmus, hogy működjön együtt a HID eszközt.

Mert a munka, szükségünk van a következő programokat:
  • Borland C ++ Builder 6 -sreda alkalmazások fejlesztéséhez Windows programozási nyelv C ++;
  • V-USB - a program AVR mikrokontroller, amely végrehajtja a munkát az alacsony sebességű USB 1.1, skachatvusb.tar.gz;
  • WinAVR - készlet AVR fejlesztők, mi kell ide árak GNU GCC fordító, amely automatikusan beépül a stúdióban;
  • AVR Studio - kiváló környezetet biztosít! Fejlesztő program a mikrokontroller AVR.

Kapcsolási rajz AVR USB

AVR, usb

ATmega8 mikrokontroller összeköti a klasszikus 5 voltos áramkört. Más rendszerek megtalálható az archívumban a V-USB cirtuits könyvtárban. Az USB interfész vonalak D + és D- jelszint 3,3 V, és a mi teljes áramkör hajtja a feszültség 5 V. Ezért, annak szükségességét, hogy igazítsa USB szintek a mi rendszer ez a készlet a D1 és D2 Zener, hogy csökkenti a jelet a mikrokontroller lehűtésére R3 és R4 ellenálláson, hogy a kívánt szintű 3,3 V szükséges szabvány. Annak megállapításához, a protokoll változata által használt feszültségosztó ellenállások R1 és R2, mely generál on line D- szintjén 3.4 V alapjárati üzemmódban. Ha egy másik ellenállási értéke 1,5 kOhm helyett az említett R1 2,2 kOhm, vagy ha nem, hogy állítsa be az összes R2 ellenállás helyett 3,4 V 3,7 V viszont nyitást eredményező a D1 Zener-dióda, amely csökkenti azt a nyitott feszültség 3.4 V - 3,5 V eredményeként, mi pedig előfeszítő áram alapjáraton (zener dióda D2 nincs betöltve egyáltalán, és a D1 már áram folyik), és ez tükröződik a hossza az USB kábelt. Az értékek a ellenállások R3 és R4 oprelyayutsya aktuális, USB AVR ebben a séma megegyezik az értéke 68 ohm.

Assesmblernaya része V-USB-kompatibilis van írva következő sorozat a frekvenciák 12 MHz, 12,8 MHz, 15 MHz, 16 MHz, 16,5 MHz, 18 MHz, 20 MHz. Más frekvenciák nem támogatott. Ez a frekvencia manuálisan sehol előírt, ez határozza meg a konfigurációs AVR Studio projekt. Proget> Configuration Options> General (fül)> Frekvencia (mező). A frekvenciát meghatározott Hertz, ha nem megfelelően beállítani a frekvenciát a felugró amikor fordítod egy csomó figyelmeztetések és a programot, és nem lesz skompelirovanna. A stúdió sschestvuet F_CPU változó, amelyet a fordító, és rendelkezésre áll az egész projekt, V-USB is használja azt. A megfelelő működéshez a kvarc helyesen be kell állítani FUSE bit mikrokontroller.

AVR, usb

12 MHz - chastoispolzuemaya frekvencia V-USB, ez a minimális frekvencia, amelynél a emulációs az összes szükséges időt USB leírás;

15 MHz - 12 MHz közel van, néha mutatott NOP-s. Az E frekvencia használatának teszi a kód kevésbé annak a ténynek köszönhető, hogy a nagyfrekvenciás teszi a tálat használni ciklus;

16 MHz - ezt a frekvenciát a hozzá Arduino felhasználók és más lapok, amelyek kvarcrezonátor 16 MHz. A szerelő végrehajtásának frekvencia napisno néhány finomságok, hogy alkalmazni lassulás ciklus. Ez azért van, mert a 16 MHz-es nem lehet egyenletesen elosztva az USB alacsony fordulatszámon kicsit órát;

12,8 MHz és 16,5 MHz - gyakorisági adatok szánt időmérő belső RC oszcillátor pontossága 1%.

18 MHz - ez a frekvencia a legközelebb az USB szabványoknak. Az E frekvencia használatának lehetővé vizsgálata bejövő csomagokat CRC menet közben. Ha a csomagok nem helyes checksum azok otklonyayutsya.TAkzhe van Adatérvényesítési lehetőség integritását a program szintjén.

20 MHz - azoknak, akik szeretik a nagy sebességet. Mivel 20 MHz nem osztható USB sebesség bit órajel 1,5 MHz. Ez érvényes lassítási ciklust, valamint frekvenciája 16 MHz-es.

Hozzon létre egy projekt környezetre AVR Studio

Készítsen AVR GCC projekt, hívjuk az ilyen Hid_example_firmware. És írjuk a firmware-t.

AVR, usb

Ezután kell másolni a fájlokat korábban letöltött arhivavusb.tar.gz a projektben könyvtárban. Ezután adjuk hozzá a következő fájlokat a projekthez:
  • usbdrv.c;
  • oddebug.c;
  • usbdrvasm.s.

Fájl hozzáadásához válassza ki a helyi menü „Add létező forrás fájl (ok)”

AVR, usb

az algoritmus

Mielőtt írni a programot az MC, meg kell érteni az alapvető működési elvek. HID eszköz kommunikál hotom kapott adatokkal fix méretű adatblokkok - vagy MRC. Szerkezetük leírt diskriptore HID, ez diskriptor olyan gazdasejteket biztosít, amikor csatlakoztatva. Inizializatsiyu fogadása és továbbítása adatokat nyújt számos tervezet programot a számítógépen. Ha a gazda akar küldeni az adatokat a készülék, először küld HID_SET_REPORT csapat, a V-USB függvénye usbFunctionRead ().

Adatsort D + csatlakozik a megszakítás INT0 mivel ez a megszakítás a legmagasabb prioritást. A folyamat során a adatcsere USB mikrokontroller INT0 folyamatosan megy a feldolgozás, ami csak csatlakoztatott V-USB. És csak azután, hogy az irányítás átkerül a fő program. Ha szükség van a készülék és még kezeli a megszakítás, akkor be kell állítani a globális megszakítás flag segítségével sei () parancsot annak érdekében, hogy képesek legyenek együttműködni a céllal INT0 V-USB a megfelelő működést.

Ilyen funkció például a usbPoll () azt mondja a gazda, hogy a csatlakoztatott eszköz még az élő állapotban, és használatra kész, ezt a funkciót kell hívni nem kevesebb, mint 50 ms. Ha nem teljesíti ezt a feltételt a Windows operációs rendszer, hogy írjon a következő „Connected ismeretlen eszköz”

Intervalluma 50 ms - ez az USB-timeout hogy befogadjon egy telepítő üzenetküldéses egy különleges csapat, a fogadó ebben a példában HID_SET_REPORT és HID_GET_REPORT.

usbFunctionSetup () függvény már beállító üzenetek, itt jön feldolgozás USB vezérlő parancsokat, indítsa usbFunctionRead funkció odébb van () vagy usbFunctionWrite () függvényt.

USB HID jelentés leírása

Magyarázata érthetőbb szavakkal azt összegyűjtötték az állandó tömb és varrt memóriára van szükség, és írja le a szerkezet az adatcsomagok (HID jelentés). Ez tartalmazza inforamatsiya csomagok számát, hogy a készülék támogatja. Mindegyik bit minden bájt a csomag megvan a saját célja. Miután a készülék a számítógéphez csatlakozik, a leíró tájékoztatja valamennyi paraméterét, annak viszont, az operációs rendszer tudja, hogyan kell kommunikálni az eszközzel, például tudni fogja, hogy melyik bit felelősség gombnyomásra joystick.

Megváltoztatása leíró leírható egy adott HID eszköz, például billentyűzet vagy valami mást. Érdekes példa erre a témára: Kis USB csúnya Ithe Haunted USB kábel!. Intresno sok példát a honlapon V-USB.

Hogy az adatátvitel folyamatát

Annak érdekében, hogy az adatátvitel szerkezete, használata teszi a kód könnyebben és rugalmasabb, mint egy egyszerű változtatásokat a használata a tömb. Ha szüksége van egy tömb, akkor felveheti azt, és használja a szerkezeten belül. Ebben a leíró egyik típusú jelentés, amely a mérete 8 bit - REPORT_SIZE, akkor ennek mennyisége megegyezik a méret az átruházott szerkezet - REPORT_COUNT. Kiderült, hogy az adatokat továbbítják részletekben 8 bit. Alapértelmezett V-USB támogatja továbbítása és fogadása a mérete 254 bájt. Ha szükségünk van egy nagyobb méretű togla minket nuzheno a usbconfig.h vystavitUSB_CFG_LONG_TRANSFERS fájlba 1, de ebben az esetben növeli a méretét a vezető.

Feldolgozni a bejövő és a továbbított adatok a mikrokontroller vállalnak két funkciója van:
  • usbFunctionRead (uncachar * adatok, unchar LEN);
  • usbFinctionWrite (uncachar * adatok unchar len).

Az egyszerűség kedvéért az adatstruktúra tele vnturi ezeket a funkciókat, de nem feltétlenül, akkor töltse ki őket más a kód, amely esetben be kell jelenteni, mint ingadozó.

Ilyen paraméterek például a * az adatok egy mutató egy puffer, ahol a V-USB proiskhoid olvasási és írási adatokat, amelyek len felbontás. Ilyen adat puffer maximális mérete uchar típusú 1 byte, és ez az érték megegyezik a mérete a jelentés. És a mérete a szerkezet imee Ramer egynél több bájtot, emiatt az adatátvitel történik részek. Ehhez vannak változók és currentAddress bytesRemaining hogy információkat tárolni az aktuális programot.

Kiderült, hogy már bejelentett egy mutatót nevű uchar * puffer egy meghatározott helyre a memóriában, ha a (tárolt), a szerkezet. Az átutalás a darab uchar.

AVR, usb

A program a mikrokontroller

Ezután le kell fordítanunk a programot, és rögzíti azt a mikrokontroller. Ha minden állítva, és helyesen tette csatlakoztatása után a mikrokontroller USB, a számítógép meg kell találnia a ustroystov mint HID.

AVR, usb

AVR, usb

Írása a program a számítógép

AVR, usb

Ez biztosítja a kényelmes és egyszerű felület dolgozik HID. Hasznos lesz „kommunikál a vezérlővel USB-n keresztül.” A projekt a telepítést és adatátviteli hosszú időt vett igénybe, amíg ő jött ez a könyvtár.

A kód nem bonyolult, vannak connect () függvény szükséges csatlakoztatni a készüléket, és eseménykezelőkkel adatokat küldeni és fogadni adatokat. Ezekkel a gombokkal lehet most villogó LED kapcsol be és ki a terhelést. Az adatátvitel segítségével dataexchange_t szerkezet, a mikrokontroller leírt pontosan ugyanazt a szerkezetet.

Annak érdekében, hogy írjon nekünk PROGRAM munka más kompbyuterah ahol nincs telepítve Borland C ++, meg kell, hogy a projekt beállításait és ott kikapcsolni a dinamikus könyvtárakat. Ehhez az alábbiak szerint járjon: Project> Options. A fülek Linker Csomagok és törölje a „Use dinamikus RTL” és a „Build with runtime csomagot.

AVR, usb