This is simple, generic AVR/USB/PC program using HID API. The PC program receive string command from standard input, parse it, then send it to MCU though USB, then the command is executed by AVR controller. Commands merely set the specified ports to HIGH for specified time. The status can be queried also asynchronously. I have already the setup for both hardware and PC projects with Eclipse CDT, using statically compiled HID API. All what needed is to implement specific command execution logic and protocol. See specification below. I can post the projects initial state and you can test if it works with your AVR/Simulator. The project is required to be finished within one week.
Here is the specification of the commands: ss [p ]+ Set port "n" to HIGH starting from for milliseconds.? For example: "ss p12 0 100 p13 50 200" will set port 12 HIGH starting from 0 mils from the beginning of the command execution for the length of 100 milliseconds and set port 13 high starting at the beginning of 50 milliseconds for the length of 200 mils. Execution of this command should keep the status busy for the length of 250 ms. st.? This command will return status code in system output. Here are the codes for the status: 0 - status OK. Last command executed OK and USB device is connected. 1 - device is not connected. Desktop part of app should be able to detect when device is not connected to USB. 2 - status busy. Last command is still executing Time accuracy requirements: Generally I expect the command to start executing with some small time latency undetectable for human perception. But the signals sequences within the command must be executed exactly with the time delay relative to the beginning of the command execution. Command return status same as for "st" command to standard output. The error message can be sent to standard error. If the command still executing next command does not execute and return status 2 (busy). Ports covered: I expect to cover all ports in atmega32u4 that possible to configure for digital output.