Forum: Mikrocontroller und Digitale Elektronik Verriegelung beider PWM-Signale beim Piccolo/Delfino


von Kaktus_11 (Gast)


Lesenswert?

Wie kann ich die beiden PWM-Signale für eine MOSFET-Brücke am 
einfachsten beim Piccolo/Delfino gegeneinander verriegeln, so dass bei 
einem Softwarefehler nicht gleichzeitig beide Transistoren 
durchgeschaltet werden?

Da es um eine 1 MHz-PWM geht, ist das exakte Timing der PWM-Signale 
zueinander bei der Verriegelung durchaus zeitkritisch.

Danke vorweg für alle Tipps.

von Le Chuck (Gast)


Lesenswert?

Im ersten Schritt würde ich vermuten, dass es dafür ein Steuerbit gibt.

Im zweiten Schritt das Kapitel im Reference Manual über die EPWM´s auf 
dieses Feature hin durchsuchen.


Im dritten Schritt die Frage im e2e Forum von TI stellen.

von Falk B. (falk)


Lesenswert?

@Kaktus_11 (Gast)

>einfachsten beim Piccolo/Delfino gegeneinander verriegeln, so dass bei
>einem Softwarefehler nicht gleichzeitig beide Transistoren
>durchgeschaltet werden?

Indem man die Module passend konfiguriert, Stichwort Dead Time 
Generator.

>Da es um eine 1 MHz-PWM geht, ist das exakte Timing der PWM-Signale
>zueinander bei der Verriegelung durchaus zeitkritisch.

WOW, wenn das mal nicht sportlich ist!

von Kaktus_11 (Gast)


Lesenswert?

Falk B. schrieb:
> WOW, wenn das mal nicht sportlich ist!

Richtig, deshalb möchte ich auch (erstmals) den Piccolo, bzw. Delfino 
einsetzen.

von Dominik (Gast)


Lesenswert?

Das geht über den Deadband-Generator. Mit dem kann man beide (PWMA + 
PWMB) von nur einem Signal ableiten.

Wie schon gesagt, musst du dich im Technical Reference Manual einlesen.

aber hier schon mal ein ein paar Hints:
1
 pwm_register->DBCTL.bit.HALFCYCLE = 0;
2
      // = 0: deadband module runs with TBCTL clock
3
      // = 1: deadband module runs with 2*TBCTL clock
4
    pwm_register->DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
5
    pwm_register->DBCTL.bit.POLSEL = DB_ACTV_HIC;
6
    pwm_register->DBCTL.bit.IN_MODE = DBA_ALL;
7
    pwm_register->DBRED.bit.DBRED = 50;
8
    pwm_register->DBFED.bit.DBFED = 50;
9
      // number of TBCTL clock ticks
10
      /* TBCTL = sysclk mit
11
       *   PERCLKDIVSEL.bit.EPWMCLKDIV   / 2
12
       *   TBCTL.bit.CLKDIV        / 1
13
       *   somit ist TBCTL = sysclk / 2 = 100Mhz
14
       *   300ns --> 30
15
       *   400ns --> 40
16
       *   500ns --> 50 --> nachgemessen... Stimmt!
17
       */
Und vergiss nicht, dass du das der PWM-Clock nur max 100 Mhz sein darf. 
Das ist im Datenblatt nur sehr schwer rauszulesen.

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.