Teensy 4.0 How to use flexPWM

Hallo zusammen,

ich beschäftige mich momentan mit Flex PWM (mit Timern...) am Teensy. Ich orientiere mich hierfür an einem Beispielskript und Skripten aus dem Internet, das ich über 4 Ecken privat bekommen habe. Die Grundfunktionen und so machen so langsam Sinn, jedoch komme ich so nicht wirklich weiter.

Ich suche jetzt schon seit Stunden im Internet, um ein Paper oder einen Forenbeitrag zu finden in dem das mit dem PWM schön erklärt wird, bin aber nicht fündig geworden.

Hat da jemand zufällig eine Idee wo das von vorneherein erklärt wird?

VG Puce137

PS: Beispielskript (nicht von mir), dass ihr wisst um was es geht:


//Methoden Definitonen:
void configurePWM(const int cells) {
  FLEXPWM1_MCTRL = FLEXPWM_MCTRL_RUN(0);
  FLEXPWM2_MCTRL = FLEXPWM_MCTRL_RUN(0);
  FLEXPWM3_MCTRL = FLEXPWM_MCTRL_RUN(0);
  FLEXPWM4_MCTRL = FLEXPWM_MCTRL_RUN(0);
  for (int i = 0; i < cells; i++) {
    pinMode(pins[i][0], OUTPUT);
    uint16_t mask = 1 << module[i][1];
    IMXRT_FLEXPWM_t *p = 0X403DC000 + (module[i][0] - 1) * 0x4000;
    p->SM[module[i][1]].CTRL = FLEXPWM_SMCTRL_LDMOD | FLEXPWM_SMCTRL_PRSC(0);
    p->SM[module[i][1]].VAL1 = 7500;
    p->MCTRL |= FLEXPWM_MCTRL_RUN(mask) | FLEXPWM_MCTRL_LDOK(mask);
  }
}

void setPWM(float shareFloat, const int i) {
  uint16_t mask = 1 << module[i][1];
  IMXRT_FLEXPWM_t *p = 0x403DC000 + (module[i][0] - 1) * 0x4000;
  if (module[i][2] == 2) {
    p->SM[module[i][1]].VAL2 = tick;
    p->SM[module[i][1]].VAL3 = tick + 7500 * shareFloat;
  }
  if (module[i][2] == 4) {
    p->SM[module[i][1]].VAL4 = tick;
    p->SM[module[i][1]].VAL5 = tick + 7500 * shareFloat;
  }
  tick = tick + 7500 * shareFloat;

  p->OUTEN |= FLEXPWM_OUTEN_PWMA_EN(mask);
  p->OUTEN |= FLEXPWM_OUTEN_PWMB_EN(mask);
  p->MCTRL |= FLEXPWM_MCTRL_LDOK(mask);
  *(portConfigRegister(pins[i][0])) = pins[i][1];
}

Es kann sein das das Programm falsch oder sinnfrei ist, mir gehts nur um die Befehle...

Nur zur Info: Evtl. bist Du mit Deiner Frage im Teensy-Forum näher an Antworten dran.

Gruß Tommy

Danke, ja ich weiß. Bekomm mich da zurzeit aber irgendwie nicht eingeloggt. Bzw. kann warum auch immer nichts posten...

Gruß Puce137

Hast Du Dir Using FlexPWM on Teensy 4.0 for Interleaved PWM Signals with deadtime in between... angesehen?

Ja. Aber ich bin nicht schlau draus geworden...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.