there are a number of registers in the Atmega 328 that allow control of the duty cycle (Compare registers) and also pre-scale registers that will control crude frequency ranges (A division of the CPU clock (none, 2, 4, 8, 16, 32, 64)
the two compare registers will control when the output goes high and low
timer C can be configured to work in 16bit mode allowing more refined control of the output
so one option is to use these registers to generate the output you need and allow the atmega to do other things
the other option is to use the timer to create interrupts at the frequency you want and then have the interrupt routine directly change the output pin using a simple delay function to manage the pulse,
A simple bit of math can factor for the pulse width to keep the frequency correct and to ensue the pulse width does not exceed the period of the frequency.
based on this explanation I hope you can put a working sketch together, if not then post what you can get going and ill help more with some examples of my own that i will create to aid you.
Peter
CAN U PLZ GIVE ME EXAMPLES THAT CAN HELP ?
I had a quick google, ended up on the actual Arduino Site and found this great article describing all sorts of PWM stuff including 16 Bit and fast PWM
http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM
I hope it provides what you looking for