不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏
yudewen0128 等级: 结帖率:0% | 楼主 发表于: 2009-09-14 21:36:11 [size=14px]这是我的程序:当定时器打开后就接收不到数据了,屏蔽掉定时器就可以了!请大侠指教原因所在!
分享到: |
回复次数:18 |
DISINHUI 等级: 结帖率:100% | #1得分:0 回复于: 2009-09-15 09:57:11 定时器中断占用CPU资源太多,应该只在定时器服务代码中设置计时标志字,在主代码中计时判断动作,否则定时器中断服务代码影响串口通信. |
参与Linux应用有奖调查,赢取MAC笔记本、HTC One手机! |
changingfu 等级: 结帖率:0% | #2得分:0 回复于: 2009-09-17 20:08:25 我没看你的程序 |
zhoushunda960 等级: 结帖率:100% | #3得分:0 回复于: 2009-09-18 10:14:24 问题出在你的init_timer0函数里,每次启动定时器中断后会执行init_timer0中的TMOD=0x01,这样定时器1的模式就不是串口模式下所需模式了,自然串口接收不到数据。应该成 TMOD |= 0x01; |
huqiming588 等级: 结帖率:0% | #4得分:0 回复于: 2009-12-14 00:11:23 学习了! |
ZEROLELOUCH 等级: 结帖率:87.5% | #5得分:0 回复于: 2010-10-20 22:04:31 我暑假做一个单片机控制串口和一个舵机角度的东西,结果加入串口后对舵机角度的控制很不稳定。 |
ningshao1945 等级: 结帖率:100% | #6得分:0 回复于: 2010-10-21 11:10:51 正解,这是最基本的操作啊。
|
yangminghua6 等级: 结帖率:100% | #7得分:0 回复于: 2010-10-22 22:10:38 该回复于2010-10-23 10:01:44被版主删除 |
dereckgail 等级: 结帖率83.33% | #8得分:0 回复于: 2010-10-22 22:26:30 支持一楼和六楼,串口用定时器1设置波特率,在中断程序中应该尽量简洁,设置一下标志位就行了 |
AjunlintianxiaA 等级: 结帖率:100% | #9得分:0 回复于: 2011-02-11 13:51:25 引用 5 楼 zerolelouch 的回复:
我现在也正急需做一个这样的东西,电脑通过串口给单片机数据,控制舵机角度,不知道您当时怎么做的,为什么我同时开串口和定时器,定时器就不受控制呢?51串口占用计数器1,定时占用计数器0,是不是相互影响了? |
cgsoftware 等级: 结帖率:0% | #10得分:0 回复于: 2012-10-26 23:19:50 问题找到了,定时器0的重装计数值千万不能太大。 |
cgsoftware 等级: 结帖率:0% | #11得分:0 回复于: 2012-10-26 23:57:38 又试了一个多小时,关键还是在中断里的程序不能太大。一定要把大的处理程序(非即时的)放到主循环里去。 |
aydf1 等级: 结帖率:0% | #12得分:0 回复于: 2012-10-27 10:06:46 问题出在你的init_timer0函数里,每次启动定时器中断后会执行init_timer0中的TMOD=0x01,这样定时器1的模式就不是串口模式下所需模式了,自然串口接收不到数据。应该成 TMOD |= 0x01; |
gaopeng090610 等级: 结帖率:0% | #13得分:0 回复于: 2012-10-27 11:00:47 该回复于2012-10-27 11:13:18被版主删除 |
ymm198606 等级: 结帖率:66.67% | #14得分:0 回复于: 2012-11-01 17:22:55 定时器的定时时间太短了,程序跑进定时中断程序太频繁,导致其占用时间太多,无法执行UART的相应程序了;把定时时间调长点看看 |
of123 等级: 7 6 | #15得分:0 回复于: 2012-11-02 09:00:56 定时器的长短不是关键,它只能改变两种中断冲突的概率。 |
fang等级: 结帖率:100% | #16得分:0 回复于: 2012-11-02 11:31:06 引用 15 楼 的回复:
怎么定时器的时间长短不是关键想不明白,如果中断处理过程的处理时间要长过于定时器所设的时间,那问题不就来了啊。还请楼上的帮忙解释解释。 |
of123 等级: 7 6 | #17得分:0 回复于: 2012-11-02 14:18:19 实际上,没有影响接收实时性的,是串口发生接收事件时,无法正常进入串口中断服务,也就是说它被“挂起”了,因为另外一个中断正在服务中。而此时,主机端传输是照样进行的。因此丢失数据了。如果丢失的是协议的起始字符,就失去了这次事务。 |
cyymycc 等级: 结帖率:100% | #18得分:0 回复于: 2012-11-02 17:41:05
|