TI中文支持网
TI专业的中文技术问题搜集分享网站

G2的pwm程序中把1.6的灯换成1.0的就不好使了为什么啊?

msp430G2pocket程序的6_PWM_LED中TA输出口从1.6变成了1.0灯就变成一直亮了,而不是按一下按键频率增强

#include "msp430g2553.h"
#define DEADTIME 20 //预设死区时间,以TA的clk为单位
/*******设定TA输出IO口,目前设定为MSP430G2553,20Pin封装无TA0.2********/
#define TA01_SET P1SEL |= BIT6; P1DIR |= BIT6 //P1.6

就是把上面最后一句的BIT6换成BIT0之后1.0的灯就是常亮。

user5274669:

回复 Hao Mengzhen:

您好,想请教您一个问题。

代码如下。请问下比较功能下八种输出的时钟可以用SMCLK吗?下面代码,我把TACTL = TASSEL_1 + MC_1中TASSEL_1改为TASSEL_2后,灯不在闪烁,一直保持发光状态。根据我的实验,我认为在下面代码中,adc采样的是这个outmod4产生的PWM,如果可以用时钟SMCLK的话,那为什么灯不再保持与输出波形相符合的闪烁状态。谢谢你!

#include <msp430.h>

int main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTADC10CTL1 = INCH_1 + SHS_2 + CONSEQ_2; // TA0 triggerADC10CTL0 = ADC10SHT_2 + MSC + ADC10ON + ADC10IE;ADC10DTC1 = 0x20; // 32 conversionsP1DIR |= 0x40; // Set P1.0 outputADC10AE0 |= 0x02; // P1.1 ADC10 option selectTACCR0 = 1024-1; // PWM PeriodTACCTL0 = OUTMOD_4; // TACCR0 toggleTACTL = TASSEL_1 + MC_1; // ///////////////////////////////////////////////////////

for (;;){ADC10CTL0 &= ~ENC;while (ADC10CTL1 & BUSY); // Wait if ADC10 core is activeADC10SA = 0x200; // Data buffer startADC10CTL0 |= ENC; // Sampling and conversion ready__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interruptsP1OUT ^= 0x40; // Toggle P1.0 using exclusive-OR}}

// ADC10 interrupt service routine#pragma vector=ADC10_VECTOR__interrupt void ADC10_ISR(void){__bic_SR_register_on_exit(LPM3_bits); // Clear LPM3 bits from 0(SR)}

Hao Mengzhen:

回复 user5274669:

你生成的PWM波的频率变快了,LED应该是闪烁的但是人眼已经观察不到了而已。

user5106918:

看下G2的datasheet的定时器输出引脚吧

灰小子:

回复 user5106918:

楼主没用定时器的pwm模式

赞(0)
未经允许不得转载:TI中文支持网 » G2的pwm程序中把1.6的灯换成1.0的就不好使了为什么啊?
分享到: 更多 (0)