智能车制作

标题: LPTMR 野火 [打印本页]

作者: 我是LGB191    时间: 2013-2-24 13:51
标题: LPTMR 野火
请问在野火的《LPT、PWM、输入捕捉、PIT 中断综合测试》试验中
#define INT_COUNT  100是干什么用的
我正在用LPTMR测速。谢谢。


作者: 野火    时间: 2013-2-24 14:29
你好,请看例程注释:

    lptmr_counter_init(LPT0_ALT2,INT_COUNT,2,LPT_Rising);
                            //初始化脉冲计数器,用 LPT0_ALT2,即 PTC5输入
                            //每隔 INT_COUNT个脉冲产生中断,延时 2个时钟滤波,上升沿触发
作者: 野火    时间: 2013-2-24 14:30
对代码进行搜索,看看工程里哪里调用的,就可以很快熟悉这个变量的作用。
你看其他的代码,也是用这种方法,比较容易学习的
作者: 我是LGB191    时间: 2013-2-24 16:19
野火 发表于 2013-2-24 14:29
你好,请看例程注释:

    lptmr_counter_init(LPT0_ALT2,INT_COUNT,2,LPT_Rising);

1、  "//每隔 INT_COUNT个脉冲产生中断,延时 2个时钟滤波,上升沿触发”这句话,用pit定时产生中断,干嘛还用每隔 INT_COUNT个脉冲产生中断
2、//printf("脉冲数:%d个\n",LPT_INT_count*INT_COUNT+count);,脉冲数是根据这样计算,原理是什么,我相信很多用野火的车友都有这样的疑惑。
谢谢。

作者: 野火    时间: 2013-2-24 16:41
我是LGB191 发表于 2013-2-24 16:19
1、  "//每隔 INT_COUNT个脉冲产生中断,延时 2个时钟滤波,上升沿触发”这句话,用pit定时产生中断,干嘛 ...

假设你用lpt来累加脉冲。在一段时间内,中断 n 次,每次累加 C 就产生一次中断,然后重新计数,结束计数时, 计数到 L ,则在这段时间内 的计数为 n * C + L
这个是数学问题而已

作者: 我是LGB191    时间: 2013-2-24 16:46
野火 发表于 2013-2-24 16:41
假设你用lpt来累加脉冲。在一段时间内,中断 n 次,每次累加 C 就产生一次中断,然后重新计数,结束计数时 ...

谢谢,我数学不好。

作者: 吢冇紷蒠    时间: 2013-2-25 13:31
野火 发表于 2013-2-24 16:41
假设你用lpt来累加脉冲。在一段时间内,中断 n 次,每次累加 C 就产生一次中断,然后重新计数,结束计数时 ...

能不能告诉我下 怎么样不让他产生中断啊
作者: 雪娃    时间: 2013-2-25 16:51
野火 发表于 2013-2-24 16:41
假设你用lpt来累加脉冲。在一段时间内,中断 n 次,每次累加 C 就产生一次中断,然后重新计数,结束计数时 ...

火哥  你这样用有什么特殊的好处么??为啥不禁止LPT的中断  直接在PIT中断里读计数值?
作者: 我是LGB191    时间: 2013-2-26 01:04
吢冇紷蒠 发表于 2013-2-25 13:31
能不能告诉我下 怎么样不让他产生中断啊

同用野火K60,交流一下。916606979

作者: 我是LGB191    时间: 2013-2-26 01:05
雪娃 发表于 2013-2-25 16:51
火哥  你这样用有什么特殊的好处么??为啥不禁止LPT的中断  直接在PIT中断里读计数值?

同用野火K60,交流一下。916606979

作者: exiao    时间: 2013-2-26 07:20
野火好忙
作者: 我是LGB191    时间: 2013-2-26 12:21
exiao 发表于 2013-2-26 07:20
野火好忙


作者: exiao    时间: 2013-2-26 13:03
我是LGB191 发表于 2013-2-26 12:21

都在找他

作者: 野火    时间: 2013-2-26 21:43
雪娃 发表于 2013-2-25 16:51
火哥  你这样用有什么特殊的好处么??为啥不禁止LPT的中断  直接在PIT中断里读计数值?

可能会溢出啊!
你能确保不溢出,就可以禁用LPT中断


作者: 野火    时间: 2013-2-26 21:44
吢冇紷蒠 发表于 2013-2-25 13:31
能不能告诉我下 怎么样不让他产生中断啊

有个 disable_irq 函数


作者: sdlibin007@qq.c    时间: 2013-3-15 23:16
这个,火哥真的很忙啊!!
作者: xiao_che    时间: 2013-3-17 12:18
吢冇紷蒠 发表于 2013-2-25 13:31
能不能告诉我下 怎么样不让他产生中断啊

在void lptmr_counter_init(LPT0_ALTn altn, u16 count, u8 PrescaleValue, LPT_CFG cfg)这个函数里,把最后一个语句:
enable_irq(LPTMR_irq);  //开引脚的IRQ中断 给注释掉,就可以不让他产生硬件计数中断。
作者: 霸气外露    时间: 2013-4-7 00:24
学习了
作者: 我是谁2011    时间: 2013-4-21 21:18
大家讨论才能进步
作者: Idenktsie    时间: 2013-4-24 20:21
貌似  多懂了一点
作者: 光平衡    时间: 2013-5-8 21:23
这么多用野火的
作者: 剑指苍天11    时间: 2016-4-23 12:20
野火 发表于 2013-2-24 14:29
你好,请看例程注释:

    lptmr_counter_init(LPT0_ALT2,INT_COUNT,2,LPT_Rising);

你好,这个必须要在中断里计数吗,直接读取CNR寄存器的值行不行





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2