pit计时器位于不同的wlan通道上通道有什么区别

后使用快捷导航没有帐号?
只需一步,快速开始
扫一扫,访问微社区
查看: 2876|回复: 9
K60的PIT有几个定时器
主题帖子精华
高级会员, 积分 613, 距离下一级还需 387 积分
高级会员, 积分 613, 距离下一级还需 387 积分
在线时间62 小时
K60的PIT有几个定时器
主题帖子精华
金牌会员, 积分 1909, 距离下一级还需 1091 积分
金牌会员, 积分 1909, 距离下一级还需 1091 积分
在线时间232 小时
这个资料应该有吧
主题帖子精华
高级会员, 积分 613, 距离下一级还需 387 积分
高级会员, 积分 613, 距离下一级还需 387 积分
在线时间62 小时
资料上好像没有提
主题帖子精华
中级会员, 积分 228, 距离下一级还需 272 积分
中级会员, 积分 228, 距离下一级还需 272 积分
在线时间19 小时
不清楚啊。小刘
主题帖子精华
常驻嘉宾, 积分 4969, 距离下一级还需 1031 积分
常驻嘉宾, 积分 4969, 距离下一级还需 1031 积分
在线时间524 小时
主题帖子精华
常驻嘉宾, 积分 5119, 距离下一级还需 881 积分
常驻嘉宾, 积分 5119, 距离下一级还需 881 积分
在线时间737 小时
看datasheet
主题帖子精华
高级会员, 积分 613, 距离下一级还需 387 积分
高级会员, 积分 613, 距离下一级还需 387 积分
在线时间62 小时
主题帖子精华
金牌会员, 积分 2876, 距离下一级还需 124 积分
金牌会员, 积分 2876, 距离下一级还需 124 积分
在线时间355 小时
帮顶一下下
主题帖子精华
中级会员, 积分 465, 距离下一级还需 35 积分
中级会员, 积分 465, 距离下一级还需 35 积分
在线时间46 小时
主题帖子精华
中级会员, 积分 462, 距离下一级还需 38 积分
中级会员, 积分 462, 距离下一级还需 38 积分
在线时间38 小时
毕业学校滁大
PIT0/PIT1/PIT2/PIT3/四个
优秀会员奖章
注册后积极参与论坛讨论
活跃会员奖章
经常参与各类话题讨论,发贴较有主见
论坛元老奖章
会员等级达到元老
在线王奖章
在线时间长,且活跃度高
站长推荐 /1
智能车制作四轮类
智能车制作直立类
智能车制作追逐类
智能车制作电磁节能组
智能车制作双车对抗组
智能车制作四旋翼组
Powered by为什么我的计时器用不了,求大神_泰拉瑞亚pe吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:94,980贴子:
为什么我的计时器用不了,求大神
为什么我的计时器用不了,求大神指导
{转}:以往只是在新闻网...
兄弟的BB女出生了,求大...
告别死工资:送150美金,可提取
新版本延时器有bug不能用
让机关党情何以堪
新版本有BUG,用不了床好像也用不了
可啪这还用水吗
药水怎么合成
贴吧热议榜
使用签名档&&
保存至快速回贴计时器_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
上传于||暂无简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢单片机两个PIT中断不能同时运行的解决方法
20:00:02来源: eefocus
基于以下的事实:
①中断子程序中,清楚中断标志位时,如果使用BSET位操作指令,PITTF清零,PIT1的中断标志位也被清零;(《与开发方法》P238)
②优先级通道0大于通道1;
③1s恰好是10ms的整数倍。
所以,每到1s的时候,通道0和通道1同时发生中断,由于通道0优先级高,先进入通道0的中断子程序,而通道0的中断子程序中的清中断动作把通道1的中断标志位也清零,这样等通道0的中断程序返回时,通道1就不能发生中断了,这样通道1的中断子程序就永远不能运行。
我查看了PITTF_PTF = 1;的汇编代码为C083 BSET 0x0345,#2。
当然这只是猜想,验证如下:
1)针对③,把PIT1中断时间改为979.975ms,200*0=0.979975s,可以运行。
2)针对②,PIT0清中断的方式是关闭PIT通道后再开启,PIT1清中断的方式是&PITTF_PTF1 = 1;&,可以运行。解释如下:通道0的中断程序运行后,马上关闭通道0,这时CPU响应通道1的中断,通道0的中断程序被中断,等到通道1的中断程序返回后,再运行通道0的中断程序。如果把PIT1清中断的方式变为关闭PIT通道后再开启效果相同。
3)针对②,将PIT0和PIT1的中断时间反转,PIT01s中断一次,PIT110ms中断一次,这样,运行1s,PIT1失效一次,可以运行。
4)把清中断的C语句改为不编译为BSET指令的语句,由于我对汇编不太懂,暂时不试验。
这样就可以证明猜想正确,同时也得出了解决方法。
关键字:&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
<img src=".cn/files/course//e0239453.png?4.9.0"
width="140" height="90"
alt="CapTIvateTM 技术软件设计快速指南" />
CapTIvateTM 技术软件设计快速指南
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。2551人阅读
Ubuntu&Linux(36)
一、提要 & & &
& & & & 计时器属于操作系统中的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持。使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。
& & & & 本文首先讨论了在 Linux 环境下,计时器的分类与实现,并对相应的接口函数进行使用。
二、计时器的种类
RTC(Real Time Clock)
实时时钟,独立于CPU和其他所有芯片,能够在IRQ8上发出周期性的中断,频率在2Hz-8192Hz之间。
TSC(Time Stamp Counter)
时间戳计时器,主体是位于CPU里面的一个64位的TSC寄存器。每个CPU时钟周期其&#20540;加一。可以通过汇编语言指令rdtsc读这个寄存器。
PIT(Programmable Interval Timer)
可编程间隔定时器,通过发出一个特殊的中断来通知内核一个时间间隔过去了,PIT永远以内核确定的固定频率不停地发出中断。
APIC - CPU本地定时器
HPET - 高精度事件定时器
ACPI 电源管理定时器
三、计时体系的结构
内核会周期性地做下面的事:
1)更新系统启动以来所经过的时间;
2)更新时间和日期;
3)处理时间片的分配;
4)更新资源使用统计数;
5)检查每个软定时器的时间间隔是否已到。
计时器的初始化
1)初始化xtime变量(存放当前时间和日期);
2)初始化wall_to_monotonic变量;
3)如果内核支持HPET,它将调用hpet_enable函数来确认ACPI固件是否探测到了该芯片并将它的寄存器映射到了内存地址空间中;
4)调用select_timer()来挑选系统中可利用的最好的定时器资源(精度优先),设置cur_timer变量指向该定时器资源对应的定时器对象的地址;
5)调用setup_irq(0,&irq0)来创建与IRQ0相应的中断门,IRQ0引脚连接着系统时钟的中断源(PIT或者HPET).
时钟终端处理程序的执行
1)在xtime_lock顺序锁上产生一个write_seqlock()来保护与定时器相关的内核变量;
2)执行cur_timer定时器对象的mark_offset方法。cur_timer指向的定时器在计时器的初始化已确定;
3)调用do_timer_interrupt()函数;
4)调用write_sequnlock释放xtime_lock顺序锁;
5)返回1,报告中断已经有效处理了。
Linux考虑两种类型的定时器,动态定时器(dynamic timer)和间隔定时器(interval timer)。第一种类型由内核使用,后者可以由进程在用户态创建。
创建动态定时器的步骤
1)创建一个新的timer_list对象(静态全局变量、定义局部变量、动态分配);
2)调用init_timer(&t)初始化这个对象;
3)把定时器到期时要激活的函数地址放入function字段;
4)如果动态定时器还没有被插入到链表中,如expires字段赋一个合适的&#20540;并调用add_timer(&t)把t插入链表;
5)如已插入,调用mod_timer()来更新expires字段。
三、计时器的使用
unsigned int alarm(unsigned int seconds);
函数说明: alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下的时间返回。
返回&#20540;: 返回之前闹钟的剩余秒数,如果之前未设闹钟则返回0。
alarm()执行后,进程将继续执行,在后期(alarm以后)的执行过程中将会在seconds秒后收到信号SIGALRM并执行其处理函数。
#include &stdio.h&
#include &unistd.h&
#include &signal.h&
void alarm_handler(int a){
printf(&Timer is up!\n&);
int main()
signal(SIGALRM,alarm_handler);
while(1) {};
执行 结果:
int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue));
setitimer()比alarm功能强大,支持3种类型的定时器:
ITIMER_REAL : 以系统真实的时间来计算,它送出SIGALRM信号。
ITIMER_VIRTUAL : -以该进程在用户态下花费的时间来计算,它送出SIGVTALRM信号。
ITIMER_PROF : 以该进程在用户态下和内核态下所费的时间来计算,它送出SIGPROF信号。
setitimer()第一个参数which指定定时器类型(上面三种之一);第二个参数是结构itimerval的一个实例;第三个参数可不做处理。
setitimer()调用成功返回0,否则返回-1。
相关结构体:
struct itimercal:
& & & & & &struct itimerval {
& & & & & &struct timeval it_ /* timer interval */
& & & & & &struct timeval it_ /* current value *
struct timeval {
    long tv_
    long tv_
itimerval结构中的it_value是减少的时间,当这个&#20540;为0的时候就发出相应的信号了. 然后再将it_value设置为it_interval&#20540;.这样就实现了轮询的定时,而不是想alarm那样只能定时一次,而且其精确度也很高。
#include &stdio.h&
#include &unistd.h&
#include &signal.h&
#include &sys/time.h&
void alarm_handler(int sig){
switch(sig)
case SIGALRM:
printf(&Catch a SIGALRM!\n&);
case SIGVTALRM:
printf(&Catch a SIGVTALRM!\n&);
int main()
struct itimerval value, ovalue, value2;
signal(SIGALRM, alarm_handler);
signal(SIGVTALRM, alarm_handler);
value.it_value.tv_sec = 1;
value.it_value.tv_usec = 0;
value.it_interval.tv_sec = 1;
value.it_interval.tv_usec = 0;
setitimer(ITIMER_REAL, &value, &ovalue);
value2.it_value.tv_sec = 0;
value2.it_value.tv_usec = 500000;
value2.it_interval.tv_sec = 0;
value2.it_interval.tv_usec = 500000;
setitimer(ITIMER_VIRTUAL, &value2, &ovalue);
understanding the kernel&&3rd Edith
linux应用层定时器与休眠 -&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1179538次
积分:16705
积分:16705
排名:第437名
原创:404篇
译文:29篇
评论:602条
文章:19篇
阅读:89078
(3)(4)(3)(1)(10)(4)(6)(5)(3)(3)(5)(2)(5)(5)(2)(2)(2)(3)(5)(4)(6)(1)(1)(3)(4)(10)(4)(9)(11)(10)(6)(8)(14)(4)(5)(14)(18)(12)(6)(12)(16)(19)(18)(27)(28)(3)(1)(10)(8)(1)(6)(4)(5)(19)(9)(8)(12)(1)(1)(2)(4)(2)(1)

我要回帖

更多关于 计时器和定时器的区别 的文章

 

随机推荐