In order from 8 bit to 32 bit:
PIC16F1789
(it has the Programmable Switch Mode Controller)
Product Page:
http://www.microchip.com/wwwproducts/en/PIC16F1789Datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/40001675C.pdfErrata:
http://ww1.microchip.com/downloads/en/DeviceDoc/80000575B.pdfdsPICs with the *complete* high speed PWM module. Each HSPWM channel has 2 PWMs which can be independent or complementary outputs, with dead time, fault inputs, overcurrent inputs and yada yada yada.
For example the MU series (e.g: the dsPIC33EP512MU814) has up to 7 channels (total 14 PWMs, 5 fixed position 2 remappable).
the GS series (such as dsPIC33EP64GS504) has 5. GS Series is designed with digital SMPS in mind so even if no DMA controller, ADC,comparators,timers,PWM,Current source have additional interconnections.
MU Page:
http://www.microchip.com/wwwproducts/en/dsPIC33EP512MU814MU Datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/70616g.pdfMU Errata:
http://ww1.microchip.com/downloads/en/DeviceDoc/80000526g.pdfGS Page:
http://www.microchip.com/wwwproducts/en/dsPIC33EP64GS504GS Datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/70005127d.pdfGS Errata:
http://ww1.microchip.com/downloads/en/DeviceDoc/80000656G.pdfRelevant Reference Manual, but be sure to double check with the datasheet for gotchas:
http://ww1.microchip.com/downloads/en/DeviceDoc/70000323h.pdfThere should be other dsPICs families with the high speed PWM module that can do what you want but i haven't used them myself.
The PIC32MK Series (such as PIC32MK0512GPD100) should be able to do what you want but i haven't used it much yet
Page:
http://www.microchip.com/wwwproducts/en/PIC32MK0512GPD100Datasheet:
http://ww1.microchip.com/downloads/en/DeviceDoc/60001402D.pdfErrata:
http://ww1.microchip.com/downloads/en/DeviceDoc/80000737C.pdfIn my experience the dspics are the most pleasant to deal with, i use them daily.
Currently i am developing a big project around the MU814 (which come in a handy 20x20mm TQFP
about 1/5th of the testing PCB area) and i suggest you read the datasheet carefully because there ARE some gotchas:
- For example ADC2 is 10 bits only, it's written on a side note in the ADC chapter
nothing wrong on writing it on the front page, come on. But that wasn't a problem.
- only IC1 through 4 can trigger a DMA transfer. I thought about it and decided that wasn't a problem either because i can use the buffer and trigger the interrupt ever 2-3-4 events instead.
- ICx can't reset themselves reliably because there isn't an option to reset the internal timer on interrupt event (yes, each IC and OC module has its own independent timer, and period registers) while other dspic families can. so if you want absolute time, you have to reset the timer manually at each capture.
On the good side, there isn't something as idiotic as "you can use either CAN or USB" a-la stm32f1 so that's good
and the canbus is the kvaser-based ECAN MODULE.