Pages: [1]   Go Down
Author Topic: Ich brauche eine Ausgangsfrequenz von 2MHz, kann mir da jemand helfen?  (Read 511 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 38
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:

Code:
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
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 137
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mit der Funktion tone() müsste das gehen
http://arduino.cc/en/Reference/Tone
« Last Edit: July 01, 2011, 12:28:16 pm by thewknd » Logged

duemilanove / OSX & WIN
Arduino & Teensy: http://bit.ly/13rbdtQ

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 251
Posts: 21219
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mit der Funktion tone() müsste das gehen
http://arduino.cc/en/Reference/Tone
Tone kann keine so hohen Frequenzen erzeugen.
Quote
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
« Last Edit: July 02, 2011, 06:28:06 am by uwefed » Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Z%C3%A4hler_des_AVR
Logged

Check out my experiments http://blog.blinkenlight.net

0
Offline Offline
Full Member
***
Karma: 6
Posts: 153
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielleicht geht auch ein vom Arduino programmierter Oszillator ...

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

Eine sehr preiswerte Variante.

Gruss Kalli
Logged

0
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3470
20 LEDs are enough
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

http://de.rs-online.com/web/search/searchBrowseAction.html?method=retrieveTfg&tfgSearch=Y&Ns=stockPolicy_de|1||new_de|1&Ne=4294398274&Nr=AND%28avl%3ade%2csearchDiscon_de%3aN%29&N=4294398022+4294300370&multiselectParam=4294398022&selectAttribute=2.000MHz#breadCrumb

http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=X940-ND

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

Check out my experiments http://blog.blinkenlight.net

Pages: [1]   Go Up
Jump to: