The project is based on a 28 pin 18F2550; about 8.5 KWords are used, so it will fit confortably into the smaller 2455.
The 2458 and 2553 have a 12 bit ADC, so only recompilation is required.
Up to version 0.8.0 I adapted the code to the 2450; since this model lacks the MSSP module I used a software implementation of I2C and SPI; it also lacks the second PWM channel, therefore it can't generate the clock for Atmel chips (for those that are configured with external clock); in this case RB3 can be used to turn on an external oscillator (which would be inserted in a modified Atmel expansion board).
The use of the corresponding 40 pin devices (4450, 4455, 4458, 4550, 4553) requires modification of the PCB.
In order to implement an USB pheripheral with a PIC micro we need very few components: the main microcontroller, a quartz, some capacitors, and a USB type B receptacle, exactly as written in application notes from Microchip.
To be able to program PIC devices we need two digital lines for clock and data and two supply voltages, VCC and VPP, which are controlled using three transistors; VPP comes from a switching voltage regulator formed by Q4, L1, D3 which is described later.