English version is here

Implementácia USB do mikrokontroléra: IgorPlug-USB (AVR)

  Tento článok si kladie za cieľ oboznámenie čitateľov s implementáciou rozhrania USB do jednočipového mikrokontroléra, ktorý toto rozhranie nepodporuje. Jedná sa teda o implementáciu USB na úrovni firmware (podobne ako sa rieši emulácia RS232 rozhrania v mikrokontroléroch, ktoré RS232 priamo nepodporujú). Predložený projekt zahŕňa vývoj firmware na strane mikrokontroléra, vývoj ovládača ("drivera") na strane počítača (pre operačný systém Windows) , vývoj DLL knižnice na sprístupnenie funkcií zariadenia iným programom (programátorská úroveň) a vývoj demonštračného programu (užívateľská úroveň), ktorý ukazuje všetky možnosti zariadenia. Zariadenie je pomenované IgorPlug-USB (AVR) (ako nasledovník môjho zariadenia pre diaľkové ovládanie počítača IgorPlug cez sériový port).

Úvodom:

    V súčasnosti je USB rozhranie veľmi populárne najmä medzi užívateľmi. Je to spôsobené jeho jednoduchosťou vzhľadom na koncových užívateľov (Plug and Play, bez reštartu). Pre vývojárov je však implementácia USB do ich prístrojov omnoho zložitejšia (voči RS232 je to neporovnateľne zložitejší protokol). Naviac je tu aj potreba programovej podpory na strane PC - ovládače zariadenia. Preto sa stále množstvo zariadení od malých výrobcov prikláňa ku komunikácii cez RS232. Toto rozhranie je asi najstaršie v PC histórii a má aj dobrú podporu operačných systémov. Ale v poslednom čase sa toto rozhranie vytráca zo štandartnej výbavy PC (nové počítače už rozhranie RS232 nemajú). Vtedy pomôže iba kúpa prídavnej PCI karty s týmto rozhraním.
    Implementácia USB do externého zariadenia v súčasnosti spočíva v dvoch možnostiach:
    a) Prvou je použitie mikrokontroléra, ktorý má už hardwarovo implementované USB rozhranie. Vtedy je nutné poznať ako USB pracuje a podľa toho napísať firmware do mikrokontroléra. Naviac je tu ešte nutnosť napísať ovládač (driver) na strane počítača (pokiaľ ho už operačný systém neobsahuje - napr. štandartné triedy USB). Nevýhodou (a to pre malých výrobcov a amatérov tou hlavnou) je malá dostupnosť týchto mikrokontrolérov (PIC, Cypress, Atmel, Intel, ...) a ich vysoká cena (rádovo vyššia voči jednoduchým "RS232" mikrokontrolérom).
    b) Druhou možnosťou je použiť niektorý univerzálny prevodník medzi USB a "iným" rozhraním. Toto "iné" rozhranie záleží na type prevodníka: používa sa najmä RS232, 8-bitová dátová zbernica, I2C zbernica. Tu odpadá písanie špeciálneho firmware (nemusíme dokonca ani vedieť ako USB pracuje) a ovládača (výrobca obvodu ovládače zdarma poskytuje). Nevýhodou je opäť zvýšená cena koncového zariadenia a väčšie rozmery výrobku (potreba jedného obvodu naviac).

    Moje riešenie, ktoré som si predsavzal vyvinúť - a úspešne dokončil ;-)  - je implementovanie USB do lacného mikrokontroléra pomocou emulovania USB protokolu cez firmware mikrokontroléra. Problémom pri návrhu bola rýchlosť mikrokontroléra. Rýchlosť zbernice USB je totiž vysoká: LowSpeed - 1.5MBit/s, FullSpeed - 12MBit/s, HighSpeed - 480Mbit/s. Bežné mikrokontroléry sú v maximálnych výpočtových výkonoch cca: AT89C2051 - 2MIPS = 24MHz/(12takt/inšt.), PIC16F84 - 5MIPS = 20MHz/(4takt/inšt.), AT90S23x3 - 10MIPS = 10MHz/(1takt/inšt.). Existujú síce aj mikrokontroléry s vyššími rýchlosťami, ale tie sú už ťažšie dostupné (aj cenovo) a rozmernejšie (veľa pinov - zložitejšia konštrukcia). Preto som sa rozhodol pre mikrokontroléry PIC16F84 alebo AT90S23x3, ktoré by mohli "stíhať" LowSpeed USB. Na vyššie rýchlosti USB zatiaľ toto riešenie nestačí - na spracovanie jedného "bitu" z USB linky treba totiž niekoľko taktov mikroprocesora: načítanie, otestovanie, uloženie, operácia, ... . 
    Najskôr som sa rozhodol pre PIC16F84-20, s ktorým som mal skúsenosti. Na zabezpečenie synchrónnosti s USB taktom a zvýšeniu rýchlosti som použil taktovanie 24Mhz = 6MIPS (PIC bol trochu pretaktovaný). Na spracovanie jedného bitu z USB linky som mal teda 4 inštrukcie (4=6MIPS/1.5MBit pre LowSpeed USB). Toto riešenie som ale po čase zavrhol - PIC je jednoducho pomalý (a naviac tá inštrukčná sada ...) .
    Druhým pokusom bol AT90S1200-12, ktorý ma už uspokojil s jeho rýchlosťou - bol som schopný už spracovania a vysielania signálu na rýchlosti LowSpeed USB. Ale skončil som tu pre nedostatok programovej a súčasne i dátovej pamäte - jednoducho sa to tam nevošlo.
    Tretí pokus ale už vyšiel: AT90S2313-10 (alebo AT90S2323-10, AT90S2343-10). Sú to RISC mikrokontroléry s produkcie Atmel - rodina AVR. Voči PIC-om sú síce menej taktované, ale majú 1 inštrukciu na takt hodín (pri PIC16F84 je to 1 inštrukcia na 4 takty hodín). Naviac ich inštrukčná sada a architektúra je omnoho viac bližšia RISC-ovej. Opäť som kvôli synchrónnosti s USB použil pretaktovanie na 12MHz (AT90S23x3-10 sú pôvodne iba na 10MHz). Takto som získal viac výkonu a 12MHz kryštály sú ľahko "zohnateľné" (napr. voči 10.5MHz - čo je tiež násobok LowSpeed USB 1.5MBit/s).

Konštrukcia:

    Pri mojom riešení je hardware veľmi jednoduchý a lacný (cca 200,-Sk). Celú inteligenciu zabezpečí obslužný firmware. Konštrukcia je riešená ako infračervené diaľkové ovládanie počítača cez USB (nasledovník konštrukcie na sériový port ), ale je to súčasne univerzálne USB rozhranie. 
Toto zariadenie umožňuje:

Vďaka univerzálnosti je možné použiť mikroprocesor na mieste univerzálneho prevodníka napr. v aplikácii kde chceme iba ovládať (čítať a zapisovať) niekoľko vstupno-výstupných pinov. Možné aplikácie sú napr.: k pinom priamo pripojíme I2C teplomer, vstupy a výstupy zabezpečovacej ústredne, alebo iba jednoducho LED-ky alebo LCD/LED display atď., atď., atď. .

Na nasledujúcom obrázku je schéma hardware:
    s mikroprocesorom AT90S2313-10 (univerzálne rozhranie):


alebo s mikroprocesorom AT90S2323-10 (iba na príjem IR kódu) - zatiaľ netestované, ale malo by fungovať - už to otestovali - FUNGUJE:

 

a fyzické prevedenie konštrukcie (prijímač IR kódu : diaľkové ovládanie počítača pre program Girder):

   Jednoduchosť zariadenia je naozaj obdivuhodná. A je dostupná aj amatérom aby svoje zariadenia pripojili k USB (to vždy poteší - viem to z vlastnej skúsenosti, keď mi Windows prvýkrát našli tento "New hardware found" ;-) ). Firmware, ktorý je srdcom celého zariadenia je pre obidva mikroprocesory rovnaký. V 8-pinovej verzii (AT90S2323-10) ale využijete iba príjem infra kódu a zápis/čítanie do/z EEPROM (príp. ak použijete AT90S2343 s externým taktovaním, tak aj jeden voľný pin ;-) ). Ale 8-pinová verzia je rozmerovo snáď to najmenšie čo sa dá k USB pripojiť.

Inštalácia zariadenia IgorPlug-USB (AVR):

    Aby USB zariadenie komunikovalo s počítačom, je nutné k nemu poskytnúť ovládač ("driver"). Tento ovládač si operačný systém vypýta pri prvom zapojení IgorPlug-USB (AVR) do USB konektora v počítači. V budúcnosti možno ani tento ovládač nebude potrebný : zmenou firmware je možné aby sa zariadenie prihlásilo ako štandartná USB trieda (HID class, Storage Class ,...), na ktoré má už operačný systém ovládače vstavané. Výhodou vlastného ovládača je to, že máme nad všetkým kontrolu. Pre "vlastný" ovládač som sa rozhodol iba kvôli naučeniu sa ako to funguje a najmä kvôli jednoduchosti implementácie do firmware zariadenia.
    Nasledujúce obrázky ukazujú postup inštalácie zariadenia (a ovládača) pri prvom pripojení IgorPlug-USB (AVR) do USB konektora. Ovládač je spoločný pre Windows98, WindowsME, Windows2000 aj WindowsXP  (pod Windows95 nepracuje):

Najskôr pod WindowsXP:

  Windows nájdu zariadenie IgorPlug-USB (AVR).
  Zvolíme inštalovanie z nami určenej cesty. 
Tu zadáme cestu k dodaným súborom (INF súbor a samotný SYS driver)
 Windows si urobia potrebné zmeny.
Driver síce nemá digitálny podpis od Microsoftu - ale inštaláciu neprerušíme.  Windows si urobia zálohu (aby sa vedeli bezpečne zotaviť ;-) ).
Keby nevedeli Windows XP nájsť SYS driver, ...   ... tak im opäť ukážeme kde sa daný súbor nachádza. A inštalácia je hotová: 
 

A pod Windows98:
To isté ako pod WindowsXP, iba v inej vizuálnej forme. 

     

 

    Po úspešnej inštalácii si potom môžete zariadenie pozrieť v "Device manageri":
Device Manager pod WindowsXP:

Device Manager pod Windows98:

Programová podpora:

    Ako som už spomenul - pre funkciu je nutný ovládač, ktorý si systém vypýta pri inštalácii. Tento ovládač (driver) som však nenapísal sám, ale som použil jeden freewarový USB ovladač a vlastne som mu prispôsobil aj firmware. Vďaka veľkej univerzálnosti tohto ovládača mi takýto postup vyhovoval. Ja som iba ovládač upravil. som napísal v prostredí Microsoft Windows2000 DDK (a oproti pôvodnému má malé vylepšenia). Meno ovládača je "IgorPlug.sys" a je obsiahnutý v inštalačnom balíčku.
    Pre inštaláciu je potrebný inštalačný popisný súbor INF. Práve tento súbor si Windows vypýtajú pri inštalácii zariadenia a vlastne pri zadávaní cesty pri inštalácii je potrebné zadať cestu k tomuto súboru. V tomto súbore sú informácie pre inštaláciu daného zariadenia - a vlastne na jeho podnet sa nainštaluje daný ovládač, príp. sa urobia iné akcie. Tento súbor som vytvoril podľa vzorového príkladu z knihy o USB. Keďže každé USB zariadenie musí mať pridelené číslo výrobcu (tzv.VID) od USB-organizácie (USB-IF), tak som si "vypožičal" toto číslo od firmy Atmel (dúfam, že mi to Atmel prepáči - nechce sa mi totiž platiť cca 1500 dolárov za pridelené číslo) a implementoval ho do mikroprocesora aj do INF súboru. Meno tohto súboru je "IgorPlug.inf" a je obsiahnutý v inštalačnom balíčku. Teda na inštaláciu sú potrebné iba dva súbory ("IgorPlug.sys" a "IgorPlug.inf").
    Týmto sme si úspešne nainštalovali zariadenie IgorPlug-USB (AVR). A môžeme pristúpiť k jeho otestovaniu. Na tento účel som vytvoril DLL knižnicu "IgorUSB.dll", ktorá obsahuje funkcie, ktoré zariadenie IgorPlug-USB (AVR) vykonáva. Táto DLL knižnica komunikuje s driverom "IgorPlug.sys"  a zabezpečuje serializáciu komunikácie (pri použití DLL z viacerých threadov alebo aplikácii). Knižnica DLL je teda primárne určená programátorom koncových aplikácii na prístup k ich zariadeniu: exportované funkcie z DLL sú zdokumentované.
    Nasledujúce obrázky zobrazujú informácie o DLL knižnici a SYS ovládači ako ich možno vidieť pod WindowsXP:

 

    Nakoniec som vytvoril užívateľskú aplikáciu - demonštračný program "AVR to USB tester", ktorý predvádza všetky funkcie zariadenia IgorPlug-USB (AVR). Využíva funkcie z DLL knižnice "IgorUSB.dll" a je vlastne ukážkovou koncovou aplikáciou. 
Program umožňuje:

Nasledujúci obrázok ukazuje možnosti demonštračného programu AVR to USB tester a jeho vlastnosti (v štýle WindowsXP):

 

    Pre nutnosť programovania mikrokontroléra AVR bol nutný programátor. Tento je však pre väčšinu užívateľov najmä z cenových dôvodov nedostupný  (príliš vysoká cena programátora). Preto som urobil jednoduchý programátor daných mikrolontrolérov - jednoduché pripojenie k LPT portu počítača. K nemu som napísal príslušný obslužný program -  je v ňom  už obsiahnutý aj firmware zariadenia IgorPlug-USB (AVR) (stačí iba spustiť a napáliť) a aj potrebné schémy na zostrojenie programátora (zobrazia sa po stlačení "help" - pre oba procesory: AT90S2313 a AT90S2323).
Tu je schéma zapojenia programátora a obslužný program (pracuje aj pod WinXP):

Obslužný program si môžete stiahnuť v download sekcii.

Niečo o vývoji:

    Vývoj tohto zariadenia mi trval cca 4 mesiace (každý večer po práci cca 4 hodiny - ach tie dlhé večery ;-) ) + predchádzajúce štúdium a poznatky o USB a AVR mikroprocesoroch. Takže to nebolo až také ľahké (priam som si všetko musel naštudovať, odsledovať a vyskúšať sám). Ale teraz je už hračkou pozmeniť funkciu mikrokontroléra (napr. vynechať "infra-buffer" a namiesto neho implementovať RS232 buffer). A USB nie je pre mňa už nič neznáme (od fyzickej úrovne až po koncovú aplikáciu).
Námet na tento projekt som už nosil v hlave cca 2 roky (po tom, čo som stiahol prvú USB dokumentáciu) - znovuoživenie však došlo pri publikovaní podobného projektu jedného nemenovaného Ruského "vývojára", ktorý to vraj urobil - nakoniec to však bol prvoaprílový žart (vtedy som to však odhalil na prvý pohľad). Ale aj tak ma tento jeho "projekt" popohnal k činnosti že to nie je nemožné ;-) .
    Najväčšou neznámou bolo zvládnutie celej špecifikácie USB (ale naozaj celej - od fyzickej úrovne až po koncového užívateľa). Preto štúdium USB bolo veľmi dôležité. Hlavným zdrojom informácii bola USB špecifikácia (voľne prístupná na http://www.usb.org) a v poslednom čase kniha "USB  Měření, řízení a regulace pomocí sběrnice USB" od nakladateľstva BEN . A samozrejme rôzne internetové zdroje.
    Pri vývoji som na testovanie používal rôzne "testovacie" a "informačné utility" opäť stiahnuté z internetu (USBcheck, DisplayUSB, SnoopyPro, Fiddler, ...). Na vývoj firmware som použil voľne dostupné "AVR Studio 4" (zo stránok Atmel-u) a programátor "T51prog" (od firmy Elnec). Pre "fyzické nahliadnutie" som použil "Scopemeter FLUKE 123" (zázračný to prístroj) od firmy FLUKE . Ako inšpirácia a ukážkové USB zariadenie mi slúžila USB myška "Genius NetScroll+" od firmy Genius (kúpená v Agem-e). Samotný mikroprocesor (a aj tie "neúspešné") som kupoval v GM-electronic . Vďaka teda týmto všetkým za pomoc.
    Na vývoj som použil nasledovné programy a veľmi ďakujem ich tvorcom:

 A kto by chcel vidieť viac obrázkov z môjho "vývojového pracoviska" , tu sú: DevelopmentBoard1, DevelopmentBoard2, DevelopmentBoard3, DevelopmentBoard4, DevelopmentPlace1.JPG, DevelopmentPlace1, DevelopmentTools1, DevelopmentToolsElnecProgrammer, TargetDeviceAtmelAVR, TargetDeviceToUSBcable, LiteratureAndInformationSource.
A zopár informácii o mojom zariadení IgorPlug-USB (AVR) ako ich zobrazili rôzne testovacie utility: USBDesignByExample, USBCheckFullTest, USBCheckDeviceDescriptor, USBCheckConfigurationDescriptor, USBCheckInterfaceDescriptor, USBCheckEndpointDescriptor, USBCheckViewDescriptors, USBCheck, SnoopyProDeviceDescriptor, SnoopyProConfigurationDescriptor, SnoopyProVendorCommand, ......stačilo (aj tak to neznalým veľa nepovie).

Pre záujemcov o stavbu USB prijímača v tvare malého USB kľúča USBkey remote receiver som pripravil dokumentáciu: plošný spoj, schéma a rozloženie súčiastok. Túto dokumentáciu si môžete pozrieť tu ako PDF súbor

Download:

    Firmware do mikroprocesora je prístupný vo forme HEX-súboru a teraz už aj ako zdrojový kód (na veľké žiadosti od užívateľov-vývojárov som ho uvoľnil - pre doplnenie vlastných funkcií). A teraz uvoľňujem aj dokumentáciu programovej podpory na strane počítača PC (čo bolo v minulosti tiež platené). Samozrejme: komerčné využitie produktu je platené. Ako freeware som uvoľnil napr. diaľkové ovládanie počítača cez sériový port , a hoci som spomenul dobrovoľný príspevok od spokojných užívateľov, tak z cca 20 000 stiahnutí (o ktorých viem) sa mi ponúkol iba jeden človek (200,-Sk - ale aj tak vďaka (hoci už len čas strávený nad cca 1500 odpovedanými e-mailami za niečo stojí). Teda platí - ak dáš niečo free za dobrovoľný príspevok - nečakaj nič. 
    Nakoľko chcem, aby sa zariadenie rozšírilo, tak k stiahnutiu je : IntelHEX súbor pre AT90S23x3-10, driver , DLL-knižnica pre prístup k IgorPlug-USB (AVR) a ukážkový program ovládania IgorPlug-USB (AVR) (teda všetko :-o ).
    Ďalej som uvoľnil aj zdrojový kód firmware mikrokontroléra a aj dokumentáciu k DLL knižnici (pre tvorbu vlastných aplikácii). Dokumentácia je pre Delphi, C++Builder/Visual C++, Visual Basic. Takže každý si môže odskúšať ako zariadenie pracuje.
    Pre rýchlu stavbu zariadenia je dostupný aj jednoduchý LPT programátor daných mikrokontrolérov (AT90S2313-10 a AT90S2323-10). A pre menej znalých koncových užívateľov aj malá inštalačná príručka (krok za krokom).
    Jediným obmedzením tejto "free" verzie bude, že DLL knižnica zobrazí pri prvom volaní informačné okno (inak je plne funkčná). Pre vlastné aplikácie bude teda lepšie si kúpiť ostrú verziu DLL knižnice. Pre distribučné firmy, ktoré by chceli zariadenie distribuovať kompletne: naprogramovaný mikroprocesor + CD s ostrými verziami a dokumentáciou, poskytnem ostré verzie na distribúciu (samozrejme s mojimi autorskými právami). Takto chcem odstrániť problémy s platbou - budete nakupovať cez internetové obchody distributérov vo Vašom okolí (a štáte - už aby bola EU ;-) ). 
Cena pre koncového zákazníka je cca 150,-Sk (Slovensko) alebo 150,-Kč (Česká republika) alebo 4,-Euro (Európa) alebo 4,-US$ (svet). Pre distribučné firmy sú možné samozrejme zľavy (po dohode).
    Záujemcovia o dokumentáciu a komerčné využitie produktu ma môžu kontaktovať e-mailom .
    Pre využitie produktu ako diaľkového ovládania počítača - odporúčam si prečítať článok IgorPlug .

   DOWNLOAD:
    Tu je k stiahnutiu ZIP archív:   IntelHEX do AT90S23x3-10, inštalačné súbory (ovládač), DLL knižnica (free), ukážková aplikácia . Tieto súbory sa môžu časom meniť (podľa požiadaviek sa bude asi meniť iba DLL knižnica, SYS driver však asi zostane rovnaký).
Pre naprogramovanie mikrokontroléra cez LPT port je potrebné stiahnuť IgorPlugUSBprogrammer.
A vývojárov bude istotne zaujímať balík: zdrojový kód firmware do AT90S23x3 + rozhranie k DLL knižnici IgorUSB.dll (prosím nezneužívať). Popis funkcií DLL je pre Delphi, C++Builder/Visual C++, Visual Basic.
Pre koncových užívateľov sa istotne hodí detailný inštalačný postup (taká malá inštalačná príručka - krok za krokom: zasuňte zariadenie do USB, objaví sa ... , potom vložte CD ... , atď)
    Záujemcom, ktorí nemôžu zohnať procesor, pošlem naprogramovaný procesor na dobierku za cca 300,-Sk (150,-Sk stojí samotný procesor + poštovné a balné + niečo pre mňa). Môžete ma kontaktovať e-mailom.
    Rozhodujem zverejniť (záujemcovia ozvite sa - robím prieskum):
  
- dokumentáciu k DLL knižnici : aby mohli programátori napísať vlastné aplikácie - UŽ SA STALO
  
- zdrojový kód v mikroprocesore : pre upravenie firmware na vlastné funkcie - UŽ SA STALO
   - ale iba na nekomerčné účely!!! - TO STÁLE PLATÍ

História:
- január 2003 : dokončenie, zdokumentovanie a publikovanie projektu
- máj 2003 : začatie práce na implementácii do ATmega8 ako RS232+ prevodník (pozrite si moje projekty)
- júl 2003 : ukončenie implementácie vylepšeného RS232+ interface do ATmega a AT90S2313 (viď. IgorPlug-USB (AVR) RS232.htm)
- august 2003 : vytvorenie vlastného ovládača v DDK s rôznymi vylepšeniami (efektívnejší prenos, odstránený problém pri hybernácii počítača, ...)
- september 2003 : upravený interface DLL knižnice pre použitie v C++ a Visual Basic (upravená dokumentácia k DLL)
- May 2003 - 2004 : nový projekt založený na IgorPlug-USB : Application Note pre Atmel Company USB to RS232 converter

V prípade problémov s downloadom - navštivte moje zrkadlo : http://members.chello.cz/cesko, alebo ma kontaktujte e-mailom a ja Vám to pošlem e-mailom.

 Testovane na operačných systémoch:
  - Windows95 - nefunkčné (potreba prepísať driver)
  - Windows98, Windows XP, Windows 2000 : plne funkčné a testované
  - Windows ME : malo by byť plne funkčné avšak netestované (môžete otestovať - a dajte mi vedieť e-mailom)
Hardvérove požiadavky:
  - minimálna testovaná konfigurácia : Intel Pentium 120MHz bez MMX, 32MB RAM (Windows 98) (moje staré PC)

 

FAQ:

Q: After device plugin into USB port is the device not recognized - recognized only as "Unknown USB device".
A1: Problem of bad device detection is in hardware. In schematic you must add series resistors into USB data lines - see schematic on my website. You can increase the resistors from 68R up to 330R. And additionally you can connect Zener diodes (3.6V) to USB D+ and D- data lines. Problem appears mainly on notebooks and new computers. Usually is there no problem when you plug device into external USB hub. Problem is caused by high voltage coming from microcontroller to USB lines - allowed max. 3.6V (input current into computer USB port).
A2: If you are using ATtiny2313 you must set fuses during programming: disable division the external clock by 4 and enable high speed XTALL.
Note: No driver update helps ;-) .

Q: Is possible to use ATtiny2313 instead AT90S2313?
A: The device is compiled for AT90S2313 but works also on ATtiny2313 - same HEX file (binary compatible). For correct operation on ATtiny2313 you must set fuses during programming: disable division the external clock by 4 and enable high speed XTALL. The HEX file is in download package on my website.

Q: Is possible to program ATtiny2313 with LPT programmer?
A: The programmer is designed for 2313 only. For another AVR use please another simple programmer - for example from http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html or http://www.serasidis.gr/circuits/avrprog/avrprog.htm . The HEX file is in download package on my website.

Q: How to order full version of driver - without the popup window on startup?
A: Please firstly pay 4,-EURO on www.moneybookers.com to my account: cesko@internet.sk . Then I will send to you the full version of software by email. Thanks.

Q: How to port existing firmware (USB for AVR) to another AVR device?
A: Look here - it is better for porting - written C-language and more more flexible: http://www.obdev.at/products/avrusb/index.html. Based on my idea but written from scratch in better way. I suggest this ;-)   -  perfect work

Q: How to use IgorPlug-USB device in own software?
A: Use "IgorUSB.dll" DLL library from my driver package. This library contains functions for access this USB device and is installed into system during device driver installation (no need to distribute it with your software). Documentation to this functions you can download here. Device offers received IR signal in oscilloscopic form (times between logic signal changes). For decoding this oscillograph is up to you (e.g.: my Girder plugin "IgorPlug.dll" decodes this) - but some know how needed about IR signal used in remote controls.

Q: Where to obtain source codes of driver?
A: Driver "IgorPlug.sys" has no free sources - as protection for commercial use. But this driver is very similar to my second driver for  RS232 to USB converter which is free. Source codes of this driver you can find on page for  IgorPlug-USB to RS232 converter +   - in download section here in this zip file.

Q: How to obtain source codes of firmware which has comments in English?
A: Source codes are commented in Slovak language (sorry ;-) ). But there exists also source codes with English comments for similar device:  IgorPlug-USB to RS232 converter +   - based on same core.

Q: How fast is the IO access of IgorPlug-USB device?
A: Each USB command takes min. 2ms: this is from USB principle. USB1.1 has time slot 1ms - so we need 1ms for sending request to device and next 1ms for answer from device (plus additional time for execution on device and PC software). For example if you are toggling IO pin on device the max. frequency of LED blinking will be 250Hz (LED is 2ms ON and 2ms OFF =>  f = 1/(4ms) = 250 Hz). Therefore - from principle - is USB fast only if large data block will be transferred in this 1ms slot (but response time is 1ms on USB1.1). 

Q: Another problems?
A: Write me email - but I am busy ;-) .


Zoznam známych predajcov:

Odmena a podpora !!! : Ak sa Vám tento nápad páči a ste s ním spokojný - môžete mi prispieť dobrovoľnou sumou (podľa Vášho vkusu): 
   Použite internetovú platbu na objednávku plnej verzie software:     - tu použite môj e-mail: cesko@internet.sk  ako príjemcu a nechajte mi správu čo si objednávate cez tento formulár. Po obdržaní Vašej objednávky Vás budem informovať a plnú verziu software Vám pošlem na e-mail uvedený v objednávacom formulári.

SLOVENSKO:
    - (pripravuje sa Pavol Bielopotocký)

    - Vrták František ponúka na svojej stránke tri verzie prijímača. V ponuke má USB v krabičke, USB v 3.5/5.25 paneli do PC a USB key. Po dohode možná zmena v dĺžke kábla alebo pridať na panel ďalší USB port. Dalšie podrobnosti na vrtak.webpark.sk/usb.htm alebo mailom na frantisek.vrtak@semecs.sk.

    - Branislav Rozbora: Ponúka: 
Verzia na USB port: 2 typy prevedení:
 1) Snímač v krabičke s elektronikou - dĺžka USB kábla voliteľná. 1-3m
 2) Snímač na kábliku (ako pri COM prevedení), elektronika schovaná v krabičke pri konektore - dĺžka USB kábla voliteľná 1-3m. 
Foto: http://sektor-x.wz.cz/irusb.htm.
Dodanie: odoslanie do 5 pracovných dni od podania objednávky: telefonicky: 0904/503424, e-mailom: sektormaster@atlas.sk alebo vyplnením formulára na: http://sektor-x.wz.cz ,(kde sú aj fotografie). Dodanie na dobierku, prípadne osobne v Trenčíne po tel. dohode.

    - Pirický Peter ponúka na svojej stránke www.piricky.szm.sk verzie IR prijímača cez USB na kábli alebo interné riešenie do 3,5/5.25 slotu pre mechaniky.

ČESKÁ REPUBLIKA:
    - Lukáš Dziadkowiec ponúka na svojej stránke pekne spracovaný USB prijímač spolu so všetkým potrebným softvérom na diaľkové ovládanie počítača. Záujemcovia nájdu všetky informácie na jeho stránke (nechýba ani foto). Dodanie je možné v Českej republike na dobierku.

  - Jiři Kalkus : nabízí USB i sériovou verzi. Délku kábliku si můžete zvolit sami (0-10 m). Cena USB verze je 350,-Kč (1.5m káblik). Dodání je možné poštou v celé České republice nebo osobně v městách České Budějovice a Praha. Kontakt: tel: +420721758094, e-mail: djbj@volny.cz , ICQ: 230642851, web: www.volny.cz/djbj

SINGAPORE (ASIA PACIFIC REGION):
  - Han Loke Su : zo stranky v Singapure  ponúka USB aj Serial verziu. Viac informácii na stránkach: http://www.alldiy.info. Dodávka je možná v oblasti Ázie - Pacificky región poštou.


  V prípade Vášho záujmu predávať tento "výrobok" (naprogramovaný mikroprocesor + CD s dokumentáciou a software) uverejním Vašu adresu na tomto mieste. Podmienkou je spoľahlivosť u Vašich zákazníkov. Cenu zariadenia pre Vás dohodneme (pre malé série zdarma!!!). Môžete ma kontaktovať e-mailom.  

Internetové odkazy:

www.cesko.host.sk - sekcia Hardware
www.cesko.host.sk/girderplugin_sk.htm  - diaľkové ovládanie počítača pomocou infračerveného ovládača
www.appliedp.sk - firma v ktorej pracujem a vyvíjam niečo z inej brandže 
www.usb.org - všetko o USB zbernici
a iné: ...

Obsah:

Úvodom
Konštrukcia
Inštalácia zariadenia IgorPlug-USB (AVR)
Programová podpora
Download
FAQ
Predajcovia
Internetové odkazy

Stránka bude priebežne dopĺňaná o nové informácie (o ktoré bude záujem).


autor: Ing. Igor Češko:
            e-mail: cesko@internet.sk
            domovská stránka: www.cesko.host.sk