for example :
hh.exe -decompile E:\test\output E:\test\help_demo.chm
That’s all. Check the output directory for all HTML topics, Images and other related files.
hh.exe -decompile E:\test\output E:\test\help_demo.chm
In this implementation we use Microsoft Windows Driver Development Kit (DDK) with Microsoft Visual C++ to create device driver for the system and use Delphi 7 to create front end application (printer maintenance – control panel applet). Both microcontrollers are programmed using MPLAB – ASM.
USB 1.1 : In this specification data transfer rate is 12Mbps and 1.5Mbps.
USB 2.0 : Support data transfer rate up to 480Mbps.
Both these specifications support up to 127 devices and support for hot swapping (no need to power down to remove or connect the devices). In USB devices are categorized as a classes and each class represent the functionality that target device can provided to the host device. For example:
AUDIO : Audio and related systems
HID : Human Interface Devices. (E.g: Keyboard, Mouse, etc)
POWER: Devices related with the power such as UPS systems.
IrDA: Infrared devices.
There are 4 types of transfers take place over USB,
Control transfer : Used to configure the bus and devices on the bus.
Bulk transfer : Move data asynchronously over USB.
Isochronous transfer: Transfer time critical data and support for unidirectional transfers only.
Interrupt transfer: Used to retrieve data in regular intervals. (Generally from 1 to 255ms)
In a USB architecture data is transferred using packets and each packet contains synchronization byte, Packet ID (PID), contents and CRC (Cyclic redundancy check data) There are 4 packet types available in USB and they are,
Token Packets : 24bit packet that determine the type of a transfer that is take place over the bus.
Data Packet : Can transfer between 0 to 1023 bytes and also have 16bit CRC stage.
Handshaking Packet : Which is used to acknowledge the end to end data transfer.
Descriptor : Contain the device capabilities such as product identifier, manufacture code, class type, internal configuration, etc.
USB devices uses shielded four wires, cable to interconnect the devices. Data transfer is take place at D+ and D- (similar to RS422/485 specification) and other remaining 2 wires carrying power (+5V and 0V) to the device. D+ signal has a 15K pull-down resistor to the ground and D- has a 1.5K pull-up resistor to +3.6V power line.
In embedded systems there mainly two methods to implement USB interfaces,
Using standard bus interface: Most recommended devices are FT245, FT232 and USS820.
Using USB to SPI bridge: Most recommended device is ATMEL AT76C711 AVR microcontroller.
When designing embedded systems using USB we need to take special care about,
Noise : To prevent external noises designer need to add ferrite bead to the USB cable. Generally the value of the ferrite bead is depends on the total current required by the circuit.
Power Source : Need to provide well regulated power source to the device. Generally we use 7805 regulator to provide +5V to the USB interface and LM1086-3.3 to provide +3.3V power source to the system/device.
Double check the power lines (especially if you are working with FT245, FT232 and USS820 devices) and voltage ratings. Improper power connections and voltage levels may burn the chips and ports instantly.
- IDE is very buggy and most of the times it produces "Access Violation" errors and IDE get confused. (In my computer Delphi 7 tries to debug it.)
- Help is very pour and incomplete.
- Some times it is necessary to deploy entire "VCL" directory to the web server otherwise some of the VCL components produces invalid outputs. (specially RichEdit and TrackBar components)
- MySQL integration is pour and buggy.
- Build-in Apache web server crash several times and because of that reason we may not be able to debug/run web application using IDE.
- Some times XML file (xml.php) generated by Form Designer may not compatible with VCL for PHP framework.
- Some of the controls have missing properties.Actually most of these problems are not very critical (we can fix most of them at the work) and hopefully Qadram Software will fix these problems in there next releases but at the moment Delphi for PHP is not a wise investment for PHP rapid application developments (RAD) and I’m personally recommended to use PRADO framework (http://www.pradosoft.com/) instead of Delphi for PHP. PRADO have same features as Delphi for PHP. The only thing is it does not have drag-and-drop style IDE.
According to my experiences USB devices are bit complicated to design and writing software (drivers and support applications) for USB devices are time consuming and complex process.
Most recommended (and easiest) method to design hardware interface for USB port is using Future Device Technologies FT245 or FT232 chips. At the moment both these chips support for USB 2.0 and have excellent set of APIs.
To test the performance of this device I implement some experimental version of PC oscilloscope using FT245 USB Interface, AD7575 ADC, LF347 Op-amp, 4069 Hex Inverter and array of AM7205 FIFOs. Application program is design using Delphi 7 and it is totally based on FTDI Delphi APIs. This test system is worked perfectly in Windows XP and Windows 2003 systems during my test runs and produce excellent results.
I choose FT245 for this design because it has 8 parallel input interfaces and this is perfectly matched with AD7575 ADC. (AD7575 also have 8 parallel outputs) I use 2705 FIFOs to capture the maximum number of samples.
So implementing USB system is not a big problem now, we may use
Both these chips have APIs in C++, Delphi, Visual Basic, etc. I’m choosing Delphi because of its performance, features and familiarity and I’m also use FT245 API with C++Builder 6, 2006 and Delphi 5, 6 and Delphi 2007 without any problem.
There are several interesting features available in FT245/232 chips which include,
FT245/232 generally operates with +5V and all I/O ports support standard logic voltage levels so we can interface FT245/232 with any standard digital system easily and I’m also use FT245 with PIC and ATMEL microcontrollers without any problem.
Only problem in FT245/232 is its SMD package, because of this reason it is bit difficult to use this chip with standard project boards/prototype boards.
Implementation of our new 3D computer game “Special Task Force” has been started and all the development related news are available at Special Task Force Developers Center (STFDC) at http://stfgame.wiki.sourceforge.net/.
All the applications (including libraries) in this project are published according to the specifications of GNU GPL. All the documentations, guides and text files are protected using GNU FDL, and all the models, images, voice files and music files are protected using Creative Commons License.
In this project I’m build USB sound card using single chip and it produce good audio output and compatible with Windows 9x operating systems and Windows NT family operating systems (I am not tested this circuit with Windows Vista and chip manufacturer say it is worked with Mac OS also) This is a plug and Play device and device driver is not required. Special feature of this sound card is its built-in HID controller. Using this HID controller user may be able to control Windows Volume control using 3 buttons located on the sound card. These buttons are used for Volume Up, Volume Down and for Audio Mute.
This device is based on Burr-Brown’s PCM2904 USB CODEC chip and it produces stereo output. PCM2904 operates using USB power (self powered) and external power adapter is not required.
I think this device is ideal for USB headphones or mini-speaker modules. My implementation is 10x9 cm. I spend Sri Lankan Rs. 1500 for this circuit.
We start new open source game project known as “Special Task Force”. It is a FOSS project and hosted at sourceforge.net. At the moment project is in planning stages. Some of the finalized features of this game are,
Still we are collecting information and getting ready for the implementation, Source code implementations are planned to start at the mid of June 2008. For more information please checkout http://sourceforge.net/projects/stfgame
I design this alarm clock using CMOS chips; due to the fact that power consumption is very low and may be able to operate with 3 penlight batteries. At the moment this device is working with mains power (230V AC) and has battery backup facility.
Size of the entire device is 11x11x4 cm.
As shown by the photograph device have 3 push buttons and 1 SPDT slide switch. These push buttons are used for,
This system use following chips for its operation,
Microcontroller is programmed using MPASM and it is the most critical part of the implementation. (I spend 1 week for this)
I got seven segment display module from old satellite receiver and to build the entire system I spend Sri Lankan Rs. 500.00.