Hello. I was looking through the data sheets on the Atmega168 and didn't really notice any mention of "PWM pins" nor any obvious differentiation between "them" and regular digital i/o pins. So, here I ask, what makes them special?
I've noticed that only the PWM pins seemed to be able to correctly send servo pulses at 50 Hz.. the regular pins have... too slow of a rise time? I need to put an oscilloscope to it. I just noticed that my delay-created duty cycle of 5%(1 ms every 20ms) resulted in a cap-smoothed voltage that was 20% of the voltage amplitude, whereas the PWM pins accurately produced a voltage-smooted signal of 5% of the voltage amplitude(5% of 5 volts). So, there's some difference as indicated there... but it seems the atmega168 folks believe arduino is monkeying with something as it shouldn't "normally" do that - they suggested I directly write to the registers using assembly language, except, I don't know how to do that. I was looking at the rise and fall times of the pins on the data sheet, and it seems they're "all" well within the range of creating a 1ms-high 50Hz servo pulse train so I'm guessing it's not purely hardware differences... or at least it wasn't originally.
So, what are the technical hardware differences or is it an arduino-bootloaded software hampering/enhancement? If so, is it possible to circumvent it with assembly language or would I have to remove some software? Or... what else could be done?