Forum: Mikrocontroller und Digitale Elektronik Frequenz Modulation mit phase Akkumulator


von DIRK (Gast)


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
};

von Herbert (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.