MSP430 PWM

Gast #403815
Lesenswert?
• ▲
▼
Hallo,


ich steuere einen L293D an. Das funktioniert auch prima. Nun wollte ich
auf den Enable-Eingang eine PWM legen, um die Geschwindigkeit des an den
L293D angeschlossenen Motors zu regeln. Dazu habe ich folgenden Code
erstellt. Bis dahin läuft das auch:

  CCR0 = 512-1;                             // PWM Period
  CCTL1 = OUTMOD_7;                         // CCR1 reset/set
  CCR1 = 255;                               // CCR1 PWM duty cycle
  CCTL2 = OUTMOD_7;                         // CCR2 reset/set
  CCR2 = 0;                                 // CCR2 PWM duty cycle
  TACTL = TASSEL_1 + MC_1;                  // ACLK, up mode
  _BIS_SR(LPM3_bits);                       // Enter LPM3

Nun wollte ich folgendes realisieren. Ich wollte an den Controller
Tasten anschließen und abhängig von Tastendrücken, wollte ich die
Drehrichtung, GEschwindigkeit usw. des Motor ändern. Ich bekomme alles
hin, bis auf die Geschwindigkeiseinstellung. Hier mal ein
Codeausschnitt:

  CCR0 = 512-1;                             // PWM Period
  CCTL1 = OUTMOD_7;                         // CCR1 reset/set
  CCR1 = 0;                                 // CCR1 PWM duty cycle
  CCTL2 = OUTMOD_7;                         // CCR2 reset/set
  CCR2 = 0;                                 // CCR2 PWM duty cycle
  TACTL = TASSEL_1 + MC_1;                  // ACLK, up mode
  _BIS_SR(LPM3_bits);                       // Enter LPM3

  for(;;)
  {
    if ((P5IN & 0x01) == 0)        // Tast 1
    {
      // Motor rechts herum drehen
      // M1en= 1, M1b= 0; M1a= 1;
      CCR1 = 255;                   // CCR1 PWM duty cycle
      P2OUT|=0x20;                  // M1a auf High
      P2OUT&=~0x40;                 // M1b auf High
    }/* if ((P5IN & 0x01) == 0) */

    if ((P5IN & 0x02) == 0)         // Tast 2
    {
      // Motor links herum drehen
      // M1en= 1, M1b= 1; M1a= 0;
      CCR1 = 255;                   // CCR1 PWM duty cycle
      P2OUT|=0x40;                  // M1b auf High
      P2OUT&=~0x20;                 // M1a auf Low
    }/* if ((P5IN & 0x02) == 0) */

mit den Zeilen:

CCR1 = 255;                   // CCR1 PWM duty cycle

wollte ich halt die Geschwindigkeit einstellen. Das funktioniert aber
leider nicht, wenn ich das oben irekt in der INitialisierung einfüge,
also über der for-Schleife, läuft das ganze.

Kann man den Wert von "CCR1" nicht einfaach so ändern oder wie muss
ich das anstellen? Jemand ne Idee?

Gruß
Marco

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.