Frequenz Modulation mit phase Akkumulator

Gast #2549996
Lesenswert?

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
Lesenswert?

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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren