Overview:
The general idea is to have 4 outputs the can either be configured to drive a PWM (to drive a DC-Motor) or a servo.
The AVR16EA32 provides 2 16-bit timers and 4 8-bit timers which are used in this project.
While the 16-bitters provide a fast clock and a slow clock (which end up as 50Hz for servo or 1,6KHz for PWM at the output)
Each of the 8-bit clocks control the PWM outputs depending on the configuration.

-
This way i can use one module to build a small RC car.
1 servo, 1 DC motor (in 2 directions) and one free output for maybe lights.
All via simple TWI commands. no need to use the precious Arduino pins or processing time.
-
The general purpose output driver:
What makes this device so handy, is the possibility to control 4 of these output drivers via easy TWI commands:

This allows us to configure each output as one of 3 Modes:
- Servo Mode
The pinout is already setup to easily connect any servo motor. Pin 3 outputs the 50Hz signal while the power pin can be switched off for a poser-saving mode possibility. - PWM Mode
In this mode, pin 3 is functionless. But the middle/power pin will toggle with a ~1.6KHz PWM - Output Mode
Of course a simple output mode is possible. You can constantly pull pin 2 to PWR, GND or just let it float.
Power input

Generally, the µC is controlled by the TWI connector. Thus the system can be powered by 5V or 3V3.
Also, this allows the Output to go up to 24V (Limited by OP-amp for overcurrent detection)
The Voltage on the Servo outputs will still be 5V. Alternatively, if only 5V for power are used, a solderjumper can connect the TWI Power.
Overcurrent detection
Over a shunt and OP-amp the current is constantly measured.
-> Still WIP
By now the controller just shuts down when >2A is detected
TWI Commands
The command system is set up in 2 Bytes.
First a command byte, then a data byte.
See the TWI-Commands.h for further info