在线时间613 小时
UID252169
注册时间2010-12-5
NXP金币0
TA的每日心情 | 开心 2019-2-14 16:49 |
---|
签到天数: 296 天 连续签到: 1 天 [LV.8]以坛为家I
金牌会员
 
- 积分
- 4473
- 最后登录
- 2020-4-14
|
实验二 LPC824的2路ADC、2路PWM和时钟中断产生脉冲
按照MBED的设置,很简单的,计划:P0_20,21为ADC,P0_0,1为PWM,P0_17为脉冲输出频率为时钟的一半
先设置对象[obj]:
//Defins TIPs
Ticker tick;//不占用IO资源
//Define ADC Port
AnalogIn adc0(P0_20);
AnalogIn adc1(P0_21);
//Define PWM IO
PwmOut pwm0(P0_0);
PwmOut pwm1(P0_1);
再在IO初始化中设置PWM的周期和P0_17[蓝色的LED半亮]输出脉冲
//DigitalOut;
DigitalOut plus17(P0_17);
//Define PWM IO period
pwm0.period(0.002f);//P0_10
pwm1.period(0.001f);//P0_11
再在TIP诊断中设置程序计数器和脉冲转换极性
//Tip Initerupt
void tipInt(void){js++;plus17 =!plus17;}
最后在主函数中加入:
tick.attach(&tipInt, 0.005f);//设置中断时间0.005S
循环体中加入:
val0=adc0.read_u16();//ADC0的值
val1=adc1.read_u16();//ADC1的值
和PWM0,1的脉宽数值更改
if(pwm0>0.810f){pwm0=0;}else{pwm0 +=0.01f;}
if(pwm1>0.950f){pwm0=0;}else{pwm0 +=0.02f;}
由于板子上只有1路电源给LCD用了,所以ADC0,1为悬空
这样本次实验就完成了TIP中断,控制程序计时器+1,P0_17输出100Hz脉冲[中断周期0.005];
2路ADC从P0_20,21读取,2路PWM从P0_0,1输出。
总结:
PWM0的输出没有问题,拍款可以从0~1%,但PWM1则有问题,无论换口还是改变数值,好像只能输出1~0.5%的脉宽,0~0.5%出不来,查看过PwmOut.h和PwmOut_api.h尝试采用pwm1.pulsewidth函数也无果,不知道是什么原因?网友们做这些实验是这样吗?
见照片
|
-
2路PWM波形
-
下边是P0_17输出的100Hz脉冲
-
板子和显示,界面还是以前做KL25实验的,加速度计无数据
|