mikrocontroller.net

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


Autor: Kaktus_11 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Le Chuck (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk B. (falk)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Kaktus_11 (Gast)
Datum:

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

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

Autor: Dominik (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
 pwm_register->DBCTL.bit.HALFCYCLE = 0;
      // = 0: deadband module runs with TBCTL clock
      // = 1: deadband module runs with 2*TBCTL clock
    pwm_register->DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
    pwm_register->DBCTL.bit.POLSEL = DB_ACTV_HIC;
    pwm_register->DBCTL.bit.IN_MODE = DBA_ALL;
    pwm_register->DBRED.bit.DBRED = 50;
    pwm_register->DBFED.bit.DBFED = 50;
      // number of TBCTL clock ticks
      /* TBCTL = sysclk mit
       *   PERCLKDIVSEL.bit.EPWMCLKDIV   / 2
       *   TBCTL.bit.CLKDIV        / 1
       *   somit ist TBCTL = sysclk / 2 = 100Mhz
       *   300ns --> 30
       *   400ns --> 40
       *   500ns --> 50 --> nachgemessen... Stimmt!
       */
Und vergiss nicht, dass du das der PWM-Clock nur max 100 Mhz sein darf. 
Das ist im Datenblatt nur sehr schwer rauszulesen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.