DAC bzw. DAU - ausgegebene Frequenz ist zu niedrig!

Gast #2148092
Hallo,

ich habe ein kleines Problem. Und zwar errechne ich mir Werte im DSP und 
gebe diese dann über den DAC aus. Z.B. Sinusschwingung. Soweit 
funktioniert alles, nur ist meine Frequenz niedriger als ich sie 
erwarte.

Hier der Pseudocode:

i=0;
updateRate=93000; // 0.093 MSPS
f=50;             // 50 Hz

while(i<93000){
   Wert= 1024 * sin(2*PI*f*i/updateRate)+1024;
   Ausgabe über DAC mittels SPI;
   i++;
}


Vielen DANK schonmal für eure Hilfe.


Gruß Frank
Exakte Frequenzen erhältst du nur mit ordentlichen Timing. Schon die 
Angabe

updateRate=93000; // 0.093 MSPS

ist nicht korrekt, da du nicht genau weißt wie viele CPU-Takte für den 
kompletten Schleifendurchlauf benötigt werden.

Generell wird so etwas über Timer-Interrupts gelöst. Allgemein würde das 
so aussehen:
1
frequenz = 50;    //Frequenz fs des Ausgangssignals in Hertz
2
samples = 1000;   //Anzahl der Samples pro Periode
3
CPU = 50MHz;      //CPU Frequenz
4

5
sample_ctr = 0;   //globaler sample counter = 0
6

7
int(main)
8
{
9
SetTimer = CPU/(frequenz*samples);    //Setze Teilerverhältnis des Timers  
10
                                     // zu CPU Takt
11

12
while(1;)                             //Endlosschleif
13
}
14

15
//Timer Interruptroutine
16
ISR(TIMER)
17
{
18
 //Sinus mit 1000 Samples berechnen
19
 value = 1024*sin(2*pi*sample_ctr/samples);
20
 Write_DAC(value);                //aktuellen Samplewert an DAC schreiben
21
 
22
 //Sample-Counter bei maximalen Wert wieder auf Null setzen
23
 if(sample_ctr = samples)
24
  {sample_ctr = 0;}
25

26
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.