Yes I am. Given the current discussion here about AVR and Arduino, the technical details are probably of some interest.
Timer 0 is set up as fast PWM on the undivided 8MHz clock, with PWM output to the OC0B pin (PORTD.5 in this case). The register settings are TCCR0A = 0x23, TCCR0B = 0x09. I have the output compare register A (OCR0A) set at 250 – this is the top limit of the counter and sets the PWM rate about 40kHz. You can make it lower for higher frequency operation. Output compare register B (OCR0B) sets the pulse width and is initially set low, around 40. The OC0B pin goes high when the counter resets to 0 from 250, and goes low again when the count matches OCR0B. The FET gate is connected to this OC0B pin and turns on when the output is high. This counter is completely free running and never stops, but the OC0B pin only drives the FET when its port pin is set as an output, so the converter can be suspended without disturbing the PWM by changing the port to an input. The port is initialized as an input to avoid accidents, and is only set as an output by the regulating routine once this is on the job.
Regulation is performed with ADC channel 0. This is set to interrupt on completion. The register settings are ADMUX = 0xE0, ADCSRA = 0xDE, ADCSRB = 0. The high voltage is divided down with a couple of resistors – 200k to the high voltage, 1k to ground, with the ADC input connected to the junction. The ADC then reads 1/200 of the high voltage, comparable with the ADC internal reference of 1.25V. The interrupt routine compares the read value to a constant setpoint value, determined by experiment (200 for 175V in my circuit). If the voltage is lower it increments the value of OCR0B, and if higher, decrements it. If OCR0B is ever decremented to zero it sets the OC0B port pin as an input to suspend the PWM, otherwise it sets it as output. Finally it triggers a new conversion. Everything then happens automatically, with no program intervention. Timer 0 OCR0B ramps up until the set point is reached and thereafter hunts around that point as the load changes, giving essentially constant voltage output.
For switching, I use an IRL640 MOSFET. This is a logic level FET with a 200V rating, about the highest voltage rating you can get in logic level devices. Its gate is connected directly to the AVR OC0B pin, with a 2.2k resistor to ground to make sure it stays turned off when the pin is set as input. The inductor is a Coilcraft MSD-1278-224 – this is a 220uH SEPIC choke with dual coils. In my application the coils are connected in series. The FET drain is connected to one end of the pair, the other end to the rectifier, and 12VDC comes in at the junction. With this arrangement the FET only sees half the peak voltage, so it has a good overload margin.