X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[求助] 利用TIMERA产生中断让P1.6每隔1ms闪烁一次问题
WPD
2013-5-2 21:57
楼主
本人想用定时器A每1ms产生产生一个中断,让P1.6电平转换,从而是LED2每隔1ms闪烁一次
#include "msp430g2553.h"
int main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR=0x40;
P1OUT=0x00;
DCOCTL=0;
BCSCTL1=CALBC1_1MHZ;
DCOCTL=CALDCO_1MHZ; //设置DCO为1MHZ
BCSCTL2 = SELM_1; //主时钟和从时钟都选择DCOCLK
TACCTL0 = CCIE; //CCR0中断使能
TACCR0 = 1000; //设置定时器A每1ms中断一次
TACTL |= TASSEL_2 + ID_0+MC_1; //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
//打开全局中断
_EINT();
while(1)
{
}
}
#pragma vector = TIMER0_A0_VECTOR
__interrupt void TimerA_ISR(void)
{
P1OUT^=0x40; //电平翻转
TACCTL0&=~CCIFG; //清除中断标志位
}
然后下载到板子上测试发现LED2的灯一直亮着,即P1.6一直是高电平
偶尔我把上面的一句代码 BCSCTL2 = SELM_1; //主时钟和从时钟都选择DCOCLK
改成 BCSCTL2 = SELM_1+0x08; //主时钟选择DCOCLK,辅助时钟选择高频晶振
LED2灯闪烁了,这就奇怪了,我没有外接高频晶振的,但辅助时钟选择高频晶振反而使程序对了,难道辅助时钟选择DCOCLK会出问题的?这没有道理的,本人很是疑惑,希望懂的人能详细解答下,十分感谢!
[
本帖最后由 WPD 于 2013-5-2 21:59 编辑
]
点赞
回复评论 (6)
沙发
457887107
1ms取反一次
楼主你确定你的眼睛能分辨500Hz的闪烁?
板子上两个led似乎是不同颜色的吧?如果是相同颜色你可以把一个直接接高电平,看两个亮度是否一样.
最好的方法还是用示波器测一下波形,看是否有波形.
没有示波器,请将万用表调至交流档测一下P1.6,看是否有信号.
没有万用表.
我也没办法了..
点赞
2013-5-2 23:18
板凳
jqh_111
同意楼上,楼主的1ms真的太快了,你可以试着把时间设长一些。估计效果就出来了。还有,你选择的高频振荡器的频率应该没DCO高,所以能直观地看到LED闪烁。。
点赞
2013-5-2 23:25
4楼
457887107
你加了0x08 就是将BIT3 置1了,使用了VLOCLK,见下图
vloclk是12khz的,所以你的时钟为83.3us,
翻转时间则变成了83.3*1000=83.3ms, 约为12Hz, 低于25Hz,人眼可以分辨
点赞
2013-5-2 23:27
5楼
457887107
顺便修整个错误
TACTL |= TASSEL_2 + ID_0+MC_1; //设置定时器A的时钟源为MCLK,并设置为不分频(1MHZ),增计数模式
TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的
点赞
2013-5-2 23:36
6楼
WPD
十分感谢上面几楼的回答,确实如此,我把1000改成50000(50ms)之后,确实能看到闪烁了,1ms确实太快了,肉眼分辨不出来,“TASSEL2是选择定时器时钟为SMCLK, MCLK是不可能给timer做时钟源的,vloclk是12khz的,所以你的时钟为83.3us, 翻转时间则变成了83.3*1000=83.3ms, 约为12Hz, 低于25Hz,人眼可以分辨”,解决了我的疑惑!
点赞
2013-5-2 23:57
7楼
jiangrenyong
qww
示波器测试之后 以上回复正确
点赞
2013-6-5 21:29
最新活动
有奖直播报名中!抢占工业4.1先机,WT·世健科技日等你来!
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
罗姆有奖直播 | 重点解析双极型晶体管的实用选型方法和使用方法
STM32N6终于要发布了,ST首款带有NPU的MCU到底怎么样,欢迎小伙们来STM32全球线上峰会寻找答案!
免费下载 | 安森美电动汽车充电白皮书,看碳化硅如何缓解“里程焦虑”!
是德科技有奖直播 | 应对未来高速算力芯片的设计与测试挑战
随便看看
wince画图的问题!
瑞萨团购活动即将开始 大家敬请关注
RealViewMDK3.24评估版已正式发布,欢迎升级!
c语言标准与使用,以及标准库导言
基于msp430的点阵显示设计
八路彩灯程序
急問!!在WINCE6下如何利用GPRS上網
PB5下加载DLL的方法?
急!
为什么我的STM8S的AD在0V时为0X25~0X30?
转:重阳节密云小游
如何往ICM7212AM LED驱动芯片写数据?
大家好!帮帮忙!
本周精彩博文分享
从quartus到modelsim的问题
“三大运营商”没了?第四巨头出现!
LPC1500体验+(ADC例程)
请问xilinx virtex系列芯片采用的是何种封装形式?
【GD32L233C-START评测】Part2:从零开始移植RTThread
改动屏幕显示方向后笔针触摸校准程序的变化
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复