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模式