ref110

I know that the Arduiono is running with a 16 mhz frequency.  I want to connect the Arduino to the DDC 101.  This element needs a frequency of 2 mhz.  Now my question is, how can I create a 2mhz frequency?Another possibility would be, that I take the 16 mhz and with ICs I chance this frequency into 2 mhz.  But I do not really know where can I get the 16 Mhz pulse. 

davekw7x

To create a jitter-free constant frequency like that ADC likes to see, you can use one of the ATmega Output Compare register output pins.  The exact frequency isn't terribly critical, but you want the clock to be as "clean" as possible.  I mean, this is a 20-bit converter for goodness sake! 

Understanding the timer registers from the data sheets takes a little (maybe more than a little for some of us) study, but the knowledge will make stuff like this "easy." 

To get you started, here's a program that I use to create 2 MHz on Arduino Pin 11 of my Duemilanove.  Experiment with the timer register settings to see some of the things you can do with the simplest timer in its simplest mode.  Larger values of ocr2aval slow the clock down.  Sometimes that makes things quieter. 

// If you change the prescale value, it affects CS22, CS21, and CS20// For a given prescale value, the eight-bit number that you// load into OCR2A determines the frequency according to the// following formulas://// With no prescaling, an ocr2val of 3 causes the output pin to// toggle the value every four CPU clock cycles.  That is, the// period is equal to eight slock cycles.//// With F_CPU = 16 MHz, the result is 2 MHz.//// Note that the prescale value is just for printing; changing it here// does not change the clock division ratio for the timer!  To change// the timer prescale division, use different bits for CS22:0 belowconst int prescale = 1;const int ocr2aval = 3; // The following are scaled for convenient printing//

void loop(){ // Do (almost) anything you want here.  Just don't do analogWrite to // pins controlled by Timer 2.  In fact, don't do anything that messes // with the registers in Timer 2.} 

In addition to creating a jitter-free clock, using this method requires no program intervention after the initial setup, so the "good stuff" in your program will not be bothered by anything here. 

I recommend a small resistor between the Arduino Pin 11 output and the external device.  I usually use 100 Ohms or so to keep the ringing off of the output clock for short runs.  Don't forget to connect the external device ground to Arduino ground. 

ref110

I´m not really sure if the clock is very solid if I take your advice.  What do you think? 

The other possibility would be, that I create the 2MHz frequency with FlipFlops (ICs).  A friend told me, that that would be better.  Where can I get an 16MHz frequency?  Has the Arduino Uno a clock output, or how can I create 16MHz at a pin?# 

I was not necessarily offering advice. ( I'll save that for the end of this post.)  You asked for a way to get a 2 MHz clock.  I showed how you can generate a 2 MHZ clock using an Arduino timer. 

Quote from: ref110

The other possibility would be, that I create the 2MHz frequency with FlipFlops (ICs).  A friend told me, that that would be better. 

Define "better."  Has your friend ever used this ADC?  Where did he/she get the clock?  Has your friend ever created a clock using an Arduino timer for any purpose?  Any purpose at all? 

I would be interested in knowing in what way a "clock created with flip-flops" is "better."  I mean, I can see where a clock generated by a properly specified oscillator module rather than one derived from the Arduino clock might have better frequency stability and accuracy and better jitter characteristics, but would this necessarily make it "better" for your application than a clock generated with an Arduino timer??? 

Quote from: ref110

Where can I get an 16MHz frequency? 

Ask your friend to show you what he/she has in mind and to cobble one up for you

Quote from: ref110

.  Has the Arduino Uno a clock output, or how can I create 16MHz at a pin? 

If you are going to use the Arduino clock as a source for your derived 2 MHz output, what's the point?  If you don't need Timer 2 for other things, it costs nothing and requires no external circuitry to create a 2 MHz clock on pin 11. 

If you need pin 11 for something else, you can consult the ATmega data sheet to find what other pin can be used with Timer 2. 

If you need Timer 2 for something else, you can, maybe, use Timer 1 with either of its Output Compare pins. 

If you need both Timer 1 and Timer 2 for other things and/or you need the associated Output Compare pins for something else, or if the Arduino-generated clock is not, for any reason, suitable for you application, then my advice is to buy a 2 MHz oscillator to connect to your ADC.  See Footnote. 

Regards,

Dave

Footnote:Bottom line: Good advice from a good friend may be more valuable than advice from a stranger on the Internet.  My advice is free and is freely given.  It is worth exactly as much as you want it to be worth. 

davekw7x: "Over and out." 

ref110

ok I have to say sorry.  Your solution is better than the other.  Because I´m new, I do not really understand which other pins are also possible.  I need pin 10 to 13 for SPI.  So how can I get 2MHz frequency on another pin than these?