Ich brauche eine Ausgangsfrequenz von 2MHz, kann mir da jemand helfen?

Hallo,

ich benötige eine feste Ausgangsfrequenz von 2MHz. Allerdings benötige ich für SPI die Pins 10 bis 13.

Ich habe bereist folgenden Code aber ich weis nicht was ich daran ändern muss, dass dieser auch mit einem anderen Pin funktioniert:

const int freqOutputPin =11;  
const int prescale  = 1;
const int ocr2aval  = 3; 

const float period    = 2.0 * prescale * (ocr2aval+1) / (F_CPU/1.0e6);


const float freq      = 1.0e6 / period;

void setup()
{
    pinMode(freqOutputPin, OUTPUT);
    Serial.begin(9600);
 

    TCCR2A = ((1 << WGM21) | (1 << COM2A0));


    TCCR2B = (1 << CS20);

    
    TIMSK2 = 0;
 
    OCR2A = ocr2aval;

    Serial.print("Period    = ");
    Serial.print(period); 
    Serial.println(" microseconds");
    Serial.print("Frequency = ");
    Serial.print(freq); 
    Serial.println(" Hz");
}


void loop()
{
   
}

Es wäre also super wenn entweder jemand diesen Code ändern könnte, dass ich auch auf einem anderen Pin 2MHz ausgeben kann oder mir jemand ein anderes Programm schreiben kann mit dem ich eine feste Ausgangsfrequenz von 2MHz ausgeben kann.

Danke

mit der Funktion tone() müsste das gehen
http://arduino.cc/en/Reference/Tone

thewknd:
mit der Funktion tone() müsste das gehen
http://arduino.cc/en/Reference/Tone

Tone kann keine so hohen Frequenzen erzeugen.

frequency: the frequency of the tone in hertz - unsigned int

Ein unsigned int hat maximal eine größe von 65535.

@ref110
Für was brauchst Du diese Frequenz?
Ist ein Quarzoszillator nicht die einfachste Lösung?
Grüße Uwe

Der Code erzeugt die Frequenz direkt aus einem Timer. Das geht nicht mit allen Pins sondern nur mit denen die direkt von Timern versorgt werden. Und dann hängen die Details noch davon ab welcher Timer mit welchem Pin verbunden ist. Findet sich alles im Datenblatt oder hier: AVR-GCC-Tutorial/Die Timer und Zähler des AVR – Mikrocontroller.net

Vielleicht geht auch ein vom Arduino programmierter Oszillator ...

http://www.watterott.com/de/DS1077-Breakout

Eine sehr preiswerte Variante.

Gruss Kalli

Da wäre es aber besser gleich einen fertigen 2 MHz Quarzoszillator zu kaufen. Das ist absolut idiotensicher:

Nur leider nicht synchron. Keine Ahnung ob das nötig ist.