Forum: Digitale Signalverarbeitung / DSP / Machine Learning Problem mit updaten von pwm Werten im tms320


von Karim B. (tun)


Lesenswert?

Hallo Leute,

ich versuche alle 64µs die Werte im period register und compare register 
neuzuschreiben.

Beispiel:

TxPR = x1
TxCMPR= y1

TxPR= x2
TxCMPR = y2

Laut Datenblatt werden die neuen Werte erst dann übernommen wenn der 
Counter wieder Null ist. Leider passiert es nicht immer, denn ich 
bekomme die Kombination x1,y2 oder x2,y1. Daraus kann man schließen, 
dass nicht immer jeder Werte neubeschrieben wird.
Meine Einstellung sind:GPTCONB = 0x6046 und T4CON = 0x1042. Habe ich 
irgend eine Besonderheit vergessen?
Ich nutze parallel das capture unit. Dies dürfte aber kein Problem 
machen, da dieser mit einem anderen timer arbeitet.

ich wäre euch dankbar, wenn ihr mir weiter helfen könnt.

Viele Grüße
Tun

von Jürgen M. (Gast)


Lesenswert?

Hallöchen,
ein Stück vom Code gesehen zu haben, kann ich dir leider nicht helfen.
Wann schreibst du denn die Werte in die Register? In einer PWM_ISR? Wann 
wird die ISR denn ausgeführt? Bei Counter Compare Value, Counter null, 
counter...
Hast du die Shadow-Register enabled?

Keine Ahnung!
Ohne Infos keine Hilfe! :)

Viele Grüße

von Karim B. (tun)


Lesenswert?

Hallo Jürgen,

ich habe kein Code eingefügt, weil man mir sagt, dass es im Forum nicht 
gern geshen wird.

Also ein Ausschnitt kann ich dir liefern:


void kodierung()
{
  /*......*/

        wert = holen();

        VergleichswertA_Summe = ( (wert + 48 ) << 2);
        VergleichswertB_Summe = (  wert  << 2) - 1;

        T4PR   = VergleichswertB_Summe;
        T4CMPR  = VergleichswertA_Summe;
}

Wo kann ich die Shadow Registern denn aktivieren? -> dies nämlich habe 
ich nicht gefunden...

Gruß,
Karim

zu den Registern:

/**************     SETUP for the T3CON - Register  *************/
#define T4CON_FREESOFT   0
  /* 15-14 FREE, SOFT : 00 stop on JTAG-emulation suspend
       e.g. the PWM stops when a breakpoint is set on the
       entry of the ISR for the period-interrupt.
       but after JTAG-stop T1CNT stops with a value
        of 20 to 24, this means T1 is already inside the
       next cycle before it stops !!            */
#define T4CON_TMODE    2
  /* 12-11 : TMODE1,0   : 10
      Count mode selection: Contiuous up counting mode   */
#define T4CON_TPS    0
  /* 10-8  : TPS2-6     : 111
      Input clock prescaler CPUCLK/128                     */
#define T4CON_TSWT1    0
  /* 7     : TSWT1      0
         use own TENABLE bit , do not start with Timer T2  */
#define T4CON_TENABLE  1
  /* 6     : TENABLE    : 1
       enable GPT1,  in first instruction disable GPT1 !! */
#define T4CON_TCLKS    0
  /* 5-4   : TCLKS1,0   : 00
       Clock source select : internal
       TCLKS1,0   : 01
       Clock source select : external            */
#define T4CON_TCLD    0
  /* 3-2   : TCLD1,0    : 01
       Timer compare(active) register reload condition
       when counter value is 0 register*/
#define T4CON_TECMPR  1
  /* 1     :  TECMPR    : 0
       disable timer compare operation          */
#define T4CON_SELT1PR  0
  /* 0     :  SELT1PR     :0
          use own period register              */
/****************************************************************/

/*************     SETUP for the GPTCONB - Register  ************/
#define GPTCONB_T4STAT  1   /* 14  : T4STAT = 1 : count upward  */
#define GPTCONB_T3STAT  1   /* 13  : T3STAT = 1 : count upward  */
#define GPTCONB_T4TOADC  0  /* 10-9: T4TOADC = 00 : no ADC-Start*/
              /*        by any GPT2-Event  */
#define GPTCONB_T3TOADC  0   /* 8-7 : T3TOADC = 00 : no ADC-Start*/
              /*        by any GPT1-Event  */
#define GPTCONB_TCOMPOE 1   /* 6   : TCOMPOE = 1  : enable all  */
              /*         GPT compare outputs*/
#define GPTCONB_T4PIN  1   /* 3-2 : T4PIN = 01 : Pol. of GPT2  */
              /*        comp out=active low  */
#define GPTCONB_T3PIN  2   /* 1-0 : T3PIN = 01 : Pol. of GPT1  */
              /*        comp out=active low  */
/****************************************************************/

von Karim B. (tun)


Lesenswert?

Hallo nochmal,

p.s ich nutzte keine ISR. Ich komme alle 64µs in die Routine (s.o.) 
hinein. Ich möchte nur das sich die Werte ändern ohne dass das 
PWM-Signal zerstört wird.

Gruß

von Karim B. (tun)


Lesenswert?

ich nutzte denn tms320lf2407a

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.