mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430 PWM Ausgang umschalten Strom auf P1.2


Autor: Ben P. (ben5en)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

ich möchte einen H-Brücke aufbauen und nutze dafür zwei IR 2104 MOSFET 
Treiber. Der angeschlossene Motor soll die Drehrichtung ändern können. 
Der Betrieb ist wie folgt gedacht: Einer der unteren (abhängig von der 
gewünschten Drehrichtung) MOSFETs ist dauerhaft an. Hierfür muss SD high 
und IN low sein (PWM Signal aus). Eine Seite der H-Brücke schaltet dann 
im Wechsel den HS - und LS MOSFET (abhängig von der gewünschten 
Drehzahl).

Mir reicht also ein PWM Signal, welches ich auf zwei unterschiedlichen 
BIT's ausgeben könnte. Ich nutze einen MSP430 G2553 - dieser kann auf 
P1.2 & P1.6 das (PWM) TA0.1 Signal ausgeben. Via Befehl möchte ich 
zwischen den Ausgängen umschalten:

Einmal soll bspw. an BIT6 das PWM Signal anliegen und BIT2 soll low 
sein.
Für einen Drehrichtungswechsel kehrt sich die eben genannte 
Konstellation um.
//Der Wert von "y" wird via Taster geändert  
switch(y)
          {
            case(0):
              {
              P1DIR &= ~BIT6;        // P1.6 Input
              P1SEL &= ~BIT6;        // P1.6 Option select
              delay_ms(10);
              P1DIR |= BIT2;                          // P1.2 Output
              P1SEL |= BIT2;                          // P1.2  Option select
              lcdSetText("Drehrichtungs-",0,0);
              lcdSetText("wechsel",0,1);
              delay_s(2);
              lcdClear();
              }
            break;

            case(1):
              {
              P1DIR &= ~BIT2;        // P1.2 Input
              P1SEL &= ~BIT2;        // P1.2 Option select
              delay_ms(10);
              P1DIR |= BIT6;                          // P1.6 Output
              P1SEL |= BIT6;                          // P1.6  Option select
              lcdSetText("Drehrichtungs-",0,0);
              lcdSetText("wechsel",0,1);
              delay_s(2);
              lcdClear();
              }
            break;
          }

Testweise habe ich keinen Motortreiber sonder 2 Led's angeschlossen. 
Leider musste ich feststellen, dass auf P1.2 ein geringer (bislang noch 
nicht gemessener) Strom fließt. Die LED leuchtet glimmt. Der elektrische 
Aufbau ist auf einem Steckboard erfolgt und wurde mehrfach überprüft.


Auch habe ich gesondert versucht die PWM einzeln auf die Bit's auzugeben 
und komme zu selbigen Resultat.

Folgend:
Aufbau auf Steckboard. LED an P1.2 und P1.6 mit dem Launchpad verbunden 
und im Wechsel mit BIT2 und BIT6 debuggt. LED an P1.2 glimmt wenn kein 
PWM Signal anliegt. Lege ich das PWM Signal auf P1.2 und ist das 
Tastverhältnis 0, erlischt auch die LED

#include "msp430g2553.h"

unsigned long duty_cycle=0;
void main(void)
{
   WDTCTL = WDTPW  + WDTHOLD;        // stop WDT

   TACTL=TASSEL_2 + TACLR;        // SBCLK + TA Reset
   P1DIR  |=    BIT6;               // P1.2 -> output
   P1SEL  |=    BIT6;            // P1.2 option select
   TACCR0  =    1023;               // CCR0 -> cycle time (10ms)
   TACCR1  =     duty_cycle;         // CCR1 -> duty cycle
   TACCTL1  =     OUTMOD_7;           // reset/set
   TACTL   |=     MC_1;              // up-mode


   // ADC configuration,V+ref=3V,V-ref=0V,Channel=A0

   ADC10CTL0  = ADC10ON + ADC10IE;

   ADC10AE0   |= INCH_0;           // channel A0

   ADC10CTL0 |= ENC + ADC10SC;       // Start Conversion

   _BIS_SR(LPM0_bits +GIE);          // Go to LPM0,interrupts enabled
}

// interrupt

#pragma vector = ADC10_VECTOR
__interrupt void adc10_interrupt(void)
{
__delay_cycles(5);
  ADC10CTL0 |= ENC + ADC10SC;  // Start Conversion again
  duty_cycle=(unsigned long)ADC10MEM;
              TACCR1=duty_cycle;

}



Ist ein Fehler im obigen Code oder woran könnte es liegen?
Vielen Dank.

Autor: Clemens L. (c_l)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um einen Pin auf Low setzen zu können, muss er als Ausgang konfiguriert 
sein.

Ein Input-Pin kann die LED nicht glimmen lassen, außer du hast noch 
einen Pullup/-down konfiguriert.

Wenn sich P1.2 und P1.6 bei gleicher Konfiguration verschieden 
verhalten, dann ist das entweder ein Fehler in deiner Schaltung, oder 
ein defekter Pin.

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.
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.

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