These seem to be the remaining ADC errata as of revision A4. Would you mind sharing what makes these a deal breaker for you? I've been evaluating the pic32mm with a usb dev board and just curious what your thoughts are, thanks!
Simply put, i require the 12bit resolution. In the meantime, my goto has become the PIC24FJ GU series (specifically the parts in the 40x sub family)
With Microchip parts its often worth reading the errata first
with all parts, read the errata first
no errata available, you're in for a bad time..
almost two years later, i finally had to work on a new usb gadget for which HID wouldn't cut it, thanks to your pointers earlier i managed to make windows enumerate the device without a driver.
It's actually easier than i thought.
Taking the "USB Device - Vendor Throughput Test" in the MLA as an example, one just have to remove the GUID part from the extended property windows descriptor.
const MS_EXT_PROPERTY_FEATURE_DESC ExtPropertyFeatureDescriptor =
{
//----------Header Section--------------
sizeof(ExtPropertyFeatureDescriptor), //dwLength
0x0100, //bcdVersion = 1.00
EXTENDED_PROPERTIES, //wIndex
0x0000, //wCount
};
Assign a new PID, the device will enumerate.
In case one doesn't want to use MCC and keep using the MLA code (it's actually exactly the same but i don't want to use that slow useless plugin) with the PIC24FJ GU series, this is the code to initialize the FRC for active clock tuning - no crystal requried
//Set up PLL - PLL parameters are already set in hardware
CLKDIVbits.RCDIV = 1; //FRC divided dy 1:2
CLKDIVbits.CPDIV = 0; //PLL Output Divide by 1:1
CLKDIVbits.PLLEN = 1; //PLL always enabled
__builtin_write_OSCCONH(0x01);
__builtin_write_OSCCONL(0x01);
while(!OSCCONbits.LOCK);
//Enable Active Clock Tuning
OSCTUNbits.STSRC = 1; //Tuning Soruce is USB
OSCTUNbits.STEN = 1; //Enable Active Clock Tuning
and in order to use the MLA one has to add these lines in the usb_hal_pic24f.h file, in the IFDEF block that selects the processor type (i only added one of the chips, the rest is left as an exercise to the reader)
#elif defined(__PIC24FJ256GU406__)
#define DEVICE_SPECIFIC_IEC_REGISTER_COUNT 7 //Number of IECx registers implemented in the microcontroller (varies from device to device, make sure this is set correctly for the intended CPU)
#define USB_HAL_VBUSTristate() {TRISFbits.TRISF7 = 1;}
That's it