Go Down

Topic: PWM @ 4MHz (Read 653 times) previous topic - next topic

CustomDev

I hope someone can help me with this, I need to generate a 4MHz signal at 50% duty cicle using a PWM pin. It can be any of the PWM pins, can anyone help me with this. Thanks.

hickscorp

#1
Oct 19, 2011, 11:25 pm Last Edit: Oct 19, 2011, 11:27 pm by hickscorp Reason: 1
Hello CustomDev,

[Notice]Excuse me in advance if i'm out of topic, i started Electronics a week ago, and just received my Arduino 2 days ago[/Notice]

As far as i understand your question, you want to change the frequency from the actual vanilla arduino PWM frequency to a custom one? There would be two distinct solutions, which of course involves that you first look for the actual PWM frequency of an un-hacked arduino. Once you know that, here would be the two solutions which popped into my mind:
- Software hack: a fast search gave me this link: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1152547089 It apparently involves hacking a little bit of the wiring software source code and re-compiling it for your purpose.
- Hardware extension: Here, two different solutions. Lets's say the Arduino PWM native frequency is lower than the one you're trying to get, you'll need a Frequency Multiplier. If the opposite case (Which i think would be correct), you'll need a Frequency Divider. i have found one which divides by two and preserves duty cycle here: http://analog-innovations.com/SED/Div2PercentSame.pdf. You might be lucky if the native Arduino PWM frequency is a multiple of two of the one you're aiming (Eg. 8 or 16 are both luck), because then you would have to modify those schematics or chain them together.

About this matter, i don't really know where to start, but i found plenty of answers on google.

Again: Please someone not novice confirms or informs my thoughts, i never tried any of that myself.

Pierre.


CustomDev

Thanks for your help, but if anyone needs to do it, this is the code I used to get a 4MHz at 50% duty cicle on pin 3:

pinMode(3, OUTPUT);
TCCR2A = 0x23;
TCCR2B = 0x09;
OCR2A = 3;
OCR2B = 1;

With this I get a very nice square wave that I am using as a clock signal for a smart card.


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy