簡體   English   中英

使用筆記本電腦控制MSP430 PWM

[英]Controlling MSP430 PWM with a Laptop

我編寫了一個代碼,該代碼從筆記本電腦獲取兩位數字並將PWM占空比更改為該數字。 這是我需要通過UART控制電機速度的更大要求的一部分。

#include "io430g2553.h"
#include <stdint.h>


void PWM(uint8_t duty_cycle);
void PWM_Config();


int main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
   WDTCTL = WDTPW + WDTHOLD;
  BCSCTL1 = CALBC1_1MHZ;                  // Run at 1 MHz
  DCOCTL = CALDCO_1MHZ;                   // Run at 1 MHz

   PWM_Config();
   PWM(5);
   __delay_cycles(5000000);
   PWM(15);
    __delay_cycles(5000000);
   PWM(25);
   __delay_cycles(5000000);
   PWM(50);
    __delay_cycles(5000000);
    PWM(25);
    __delay_cycles(5000000);
     PWM(15);
    __delay_cycles(5000000);
     PWM(5);
   while(1)
   {}


}


void PWM_Config()
{
  P1OUT &= 0x00; // Clearing P1OUT 
  P1SEL |= BIT6 ;
  P1SEL2 &= ~BIT6 ;
  P1DIR |= BIT6; // Configuring P1.6 as Output

}

void PWM(uint8_t duty_cycle)
{
 TA0CTL =0;
 TA0CTL |= TACLR; 
 TA0CCR1 |= (duty_cycle*100);
 TA0CCR0 |= 10000; 
 TA0CTL |= TASSEL_2 + MC_1 + ID_0;// Register TA0CTL -> SMCLK/8, Up mode
 TA0CCTL1 |= OUTMOD_7 ;//Set/Reset Mode
 TA0CCTL0 &= ~CCIE; // Interrupt Disabled}

void PWM(uint8_t duty_cycle)函數的問題在於,它第一次在P1.6處生成正確的PWM,然后給它一個值,它將PWM更改為該DC,但我不能返回到較低的DC。

代碼中的第2個PWM函數將更改為正確的占空比PWM(5),PWM(15),然后其余的PWM值不會產生所需的占空比。

我無法解決我哪里出問題了,可以幫忙嗎?

謝謝

看來我這是一個愚蠢的錯誤。

TA0CCR1 | =(占空比* 100);

代替

TA0CCR1 =(占空比* 100);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM