Forum: Mikrocontroller und Digitale Elektronik Erklärung zur SVM


von jack (Gast)


Lesenswert?

Hallo,
könnte mir jemand diese Berechnung kurz erklären?
Bei einer App Notes zum XC878 von Infineon gibt es eine CORDIC 
Berechnung

Ta   = (unsigned int) ((CD_CORDY));     //ta  =m*sin(angle)

Tb   = ((unsigned int) (((7*(CD_CORDX))>>2)-(CD_CORDY)))>>1;     //tb 
=m*sin(60-angle)

Würde dies gerne durchrechnen, aber mir fehlt die Angabe zu m in der 
Formel. Könnte mir jemand erklären was m bedeutet??

  Grüße
   jack

von jack (Gast)


Lesenswert?

Noch zur Vervollständigung die kompl. Berechnung.

  Angle = Angle+Speed_Reference;

  Sector = (int)((((long)(Angle)*6)>>16) & 0x0007);

  AngleTab= (unsigned int)Angle-10922*Sector;

  //  AngleTab=(Angle*6)/6 ;


  //cordic implementation

  SYSCON0 |= 0x01;

  CD_STATC = 0x00;
  CD_CON   = 0x0A;             //Circular /Rotation Mode
  CD_CORDYL = 0x00;          //Xfinal = K[X cos(Z) - Y sin(Z)]
  CD_CORDYH = 0x00;          //Yfinal = K[Y cos(Z) + X sin(Z)]
  CD_CORDXH = (Amplitude>>8);
  CD_CORDZH = (AngleTab>>8);
  CD_CORDZL = (AngleTab);
  CD_CORDXL = Amplitude;

    while(!(CD_STATC & 0x04));


  if((Sector&0x0001)==1)
  {
  Ta   = (unsigned int) ((CD_CORDY));     //ta  =m*sin(angle)

  Tb   = ((unsigned int) (((7*(CD_CORDX))>>2)-(CD_CORDY)))>>1;     //tb 
=m*sin(60-angle)
  } // tb= (sqrt(3)*cos(angle)-sin(angle))/2

  else
  {
  Tb = (unsigned int) ((CD_CORDY));     //tb  =m*sin(angle)

  Ta   = ((unsigned int) (((7*(CD_CORDX))>>2)-(CD_CORDY)))>>1;     //ta 
=m*sin(60-angle)
  } // tb= (sqrt(3)*cos(angle)-sin(angle))/2


Ich denke das m steht für den Modulationsindex.
Ich würde aber gerne die Berechnung im CORDIC nachvollziehen können um m 
ohne CORDIC zu berechnen.

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.