Igor-Plug USB
IgorPlug is an USB-Software-Slave for AT90S2313, ATMega8 or others build by Ing. Igor Cesko.
The Author:
- Ing. Igor Cesko
- E-Mail: cesko@internet.sk
- WWW: http://www.cesko.host.sk
About IgorPlug:
I’ve tried the IgorPlug USB-RS232 Converter on an ATMega8 running with 12MHz for better USB Timing. As reference I used the information on Igor’s Homepage and the Application Note from ATMEL.
Features:
- 800 Byte FIFO Buffer
- Baudrates from 300 to 115200
- Databits: 5,6,7,8; Stopbits: 1,2; Parity: none, even, odd, mark, space
- Three 8-bit I/O Ports
- Direct Interface to internal EEProm
- eventually possibility to use ATmega8 peripherals (not yet implemented)
- Possibility to add own function
See my IgorPlug:


Just connected everything on the fly and IT WAS WORKING! I plugged in the USB Cable to my WinXP Computer and it detected the IgorPlug Device. Next i started to write my own userfunction.
Step1:
I wrote a function that should be able to switch on and off the red LED you can see on the pictures.
DoUserFunction3:
lds temp0,InputBufferBegin+4 ;first parameter Lo into temp0
;lds temp1,InputBufferBegin+5 ;first parameter Hi into temp1
;lds temp2,InputBufferBegin+6 ;second parameter Lo into temp2
;lds temp3,InputBufferBegin+7 ;second parameter Hi into temp3
;lds ACC,InputBufferBegin+8 ;number of requested bytes from USB host (computer) into ACC;Here add your own code:
out PORTC,temp0
mov ZL,temp0 ;will be sending value of RAM – from address stored in temp0 (first parameter Lo of function)
mov ZH,temp1 ;will be sending value of RAM – from address stored in temp1 (first parameter Hi of function)
inc RAMread ;RAMread=1 – reading from RAM
ldi temp0,255 ;send max number of bytes – 255 bytes are maximum
rjmp ComposeEndXXXDescriptor ;a prepare data
Add the Userfunction above line 1218:
;—————— END: This is template how to write own function —————-
To tell IgorPlug to call the function go to line: 1159 where it looks like:
NoDoUserFunction0:
cpi temp1,USER_FNC_NUMBER+1 ;
brne NoDoUserFunction1
rjmp DoUserFunction1 ;execute of user function1
NoDoUserFunction1:
cpi temp1,USER_FNC_NUMBER+2 ;
brne NoDoUserFunction2
rjmp DoUserFunction2 ;execute of user function1
NoDoUserFunction2:rjmp ZeroDATA1Answer ;if that it was something unknown, then prepare zero answer
And change it to:
NoDoUserFunction0:
cpi temp1,USER_FNC_NUMBER+1 ;
brne NoDoUserFunction1
rjmp DoUserFunction1 ;execute of user function1
NoDoUserFunction1:
cpi temp1,USER_FNC_NUMBER+2 ;
brne NoDoUserFunction2
rjmp DoUserFunction2 ;execute of user function1
NoDoUserFunction2:
cpi temp1,USER_FNC_NUMBER+3 ;
brne NoDoUserFunction3
rjmp DoUserFunction3 ;execute of user function1
NoDoUserFunction3:rjmp ZeroDATA1Answer ;if that it was something unknown, then prepare zero answer
Step2:
To get access to the Userfunction i had to manipulate the IgorPlug DLL. Because of my poor Delphi knowledge i “copy and paste” an other function and changed the function adress.
Step3:
Igor provides the declaration of his DLL for VB. To get them working with VB.NET i had to modify them and to add my UserFunction.
Step4:
Now i was able to use IgorPlug + my own Function from VB.NET! GREAT
September 2nd, 2008 at 05:18
Hello, I’m trying to receive information from an GPS, and my problem is that I could not make Igor’s DLL work in VB, so please could you help me with an example on how to use that DLL on VB6 or VB.NET
July 29th, 2010 at 06:10
…
As usual this was a thoughtful article these days. You make me wish to maintain coming back and forwarding it my followers…….