Frequenz Modulation mit phase Akkumulator

Gast #2549996
Hallo ! zusammen

ich muss ein Funktion Generator, der die Frequenz-Modulation eines 
Sinus-signals führt, implementieren.
dieses soll mit hilfe ein Phase-Akkumulator gebastelt werden.
- der Ausgangssignal hat ein 16 bit Auflösung
- beim jedem Interrupt auftaucht ein werte der sinus Tabelle
- beim jedem interrupt wird der Phase Akku mit ph_inkr inkrementiert.
- die normale(ursprüngliche)sinus wird mit ein frequnz von 1 KHz 
berechnet.

ich habe so eine kleine Idee gehabt aber weiß ich nicht, warum es nicht 
klappt. ob jemand ein anderen Vorschlag hätte.
1
#define freq 1000            /*freq 1kHz */
2
uint16 counter = 10µs      /* Timer0 womit jeder wert der Sin auftaucht */ 
3
uint16 Sin[50]={};            /*sinus 50 werte look up Tabelle */
4
uint16 mod[150]={};           /* für 3 hintereinander modulierten Sinus */
5
uint16 ph_akku ;               /* phase akkumulator  */
6
uint16 ph_inkr  ;             /* phase inkrement */
7
uint8  start_ph;               /* start phase in grad */
8

9
void akk(void)
10
{  
11
   int i=0;
12
   ph_inkr  = counter; 
13
   start_ph = 0;               /* o° phase  */
14
   ph_akku  = start_ph;
15
     while(i < 150)
16
      {
17
            for(i=0;i<50;i++)
18
               { 
19
                   mod[i]= sin[i];
20
               }
21
        ph_akku = ph_akku + ph_inkr ;     /* ph_inkr = counter*/
22
            for(i=0;i<100;i++)
23
               { 
24
                   mod[i+50]= sin[i];
25
               }
26
        ph_akku = ph_akku + ph_inkr ;     /* ph_inkr = counter*/
27
            for(i=0;i<150;i++)
28
               { 
29
                   mod[i+100]= sin[i];
30
               }
31
        ph_akku = ph_akku + ph_inkr ;     /* ph_inkr = counter*/
32
      }
33
}
34
/********************************************************************
35
Ausgeben am DAC output für die 3Sinus-Darstellung am Oscilloscop ****/
36

37
void v_sin_tabel(void)
38
{ 
39
     
40
  if (counter <= (149))     
41
  { 
42
     
43
  LPC_DAC->DACR = (mod[counter] << 6) | DAC_BIAS;  //DAC-OUTPUT
44
    if(counter == 149)
45
    {
46
      counter = 0;
47
    }
48
    else
49
    {
50
      counter++;
51
    };
52
    
53
  };
54

55
};
Gast #2550125
DIRK schrieb:
> Hallo ! zusammen
>
> ich muss ein Funktion Generator, der die Frequenz-Modulation eines
> Sinus-signals führt, implementieren.
> dieses soll mit hilfe ein Phase-Akkumulator gebastelt werden.
> - der Ausgangssignal hat ein 16 bit Auflösung
> - beim jedem Interrupt auftaucht ein werte der sinus Tabelle
> - beim jedem interrupt wird der Phase Akku mit ph_inkr inkrementiert.
> - die normale(ursprüngliche)sinus wird mit ein frequnz von 1 KHz
> berechnet.



das ist machbar denke ich !ich kucke mal , aber wenn ein anderer Gast 
ein vorschlag hätte , wäre gut. dann  könnten wir die vergleichen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.