wince6.0下实现2us一次的定时中断并进行中断处理

35岁前换工作 2012-11-13 10:07:27
需要怎么做啊?大致说个思路也行!抓狂死了!
...全文
292 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
一介布衣萧萧 2012-11-15
  • 打赏
  • 举报
回复
PS,LZ搞这个GPIO模拟PWM不可用IST,这个会被其它东西抢占,产生的波形不稳定,只能用IRQ
David_Hu 2012-11-14
  • 打赏
  • 举报
回复
引用 10 楼 hudaweikevin 的回复:
引用 5 楼 hibiko 的回复:引用 3 楼 hudaweikevin 的回复:你说的这个我还是没明白为什么要2us一个中断 你是给出的中断还是给入的中断,又是仿PWM输出 这种描述不清楚的题,很多人懒得回了 要产生100hz的方波 一个波的时间是10ms 占空比0~100也就是一个方波要分成100份,1份0.01ms,也就是10us。当然10us的中断……
我明白了,6楼说得对,你应该是计时器产生的中断吧,中断注册你应该参考SPI,camera一般都有的 流程一般有下面的函数 CreateEvent KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &dwIrq, sizeof(dwIrq), &m_CAMISPIntr, sizeof(DWORD), NULL) InterruptInitialize CreateThread 按关键字搜吧
David_Hu 2012-11-14
  • 打赏
  • 举报
回复
引用 5 楼 hibiko 的回复:
引用 3 楼 hudaweikevin 的回复:你说的这个我还是没明白为什么要2us一个中断 你是给出的中断还是给入的中断,又是仿PWM输出 这种描述不清楚的题,很多人懒得回了 要产生100hz的方波 一个波的时间是10ms 占空比0~100也就是一个方波要分成100份,1份0.01ms,也就是10us。当然10us的中断也可以,但是为了以后如果方波频率更高……
你只需要翻转,为啥要中断呢 有个实时的timer的话,时间到了就可以翻转了 再个IO中断一般是输入吧,你PWM肯定是输出
35岁前换工作 2012-11-14
  • 打赏
  • 举报
回复
引用 8 楼 LouisScola 的回复:
最方便的就是硬件timer,软件的话自己写个实时性很高的软件timer(wince自带的有没有?)
谢谢 现在的问题是我不知道硬件中断怎么和应用层的中断函数联系起来
LouisScola 2012-11-14
  • 打赏
  • 举报
回复
最方便的就是硬件timer,软件的话自己写个实时性很高的软件timer(wince自带的有没有?)
paul_chao 2012-11-14
  • 打赏
  • 举报
回复
100Hz = 10mS 10mS / 100 = 100 uS, 所以 LZ 要的應該是 100 uS 一次中斷. 1. 用 CPU 內建 PWM controller 來做, 都不用產生 interrupt, 對系統 overhead 最小, 故為最佳解. 2. 用 CPU 閒置 H/W timer 來做, H->L 的時間產生一次 interrupt, L->H again, 故一秒 100Hz * 2 = 200 次 interrupt, 需修改 OEMInterruptHandler, WinCE6 應可應付. 3. 用 CPU 閒置 H/W timer 來做, 每 100uS 產生一次 interrupt, 判斷 dutycycle 到達時切換 GPIO, 需修改 OEMInterruptHandler. 4. 每 2uS 產生一次 interrupt??? 系統可能會跟烏龜在跑一樣. Paul, Chao @ Techware
简单并快乐着 2012-11-14
  • 打赏
  • 举报
回复
引用 6 楼 brantyou 的回复:
可以用gpio模拟PWM产生你需要的方波,使用PWM定时器产生定时中断,然后在IRQ中进行电平翻转,定时器的开关可以在驱动或应用层中控制。这样就可以随时控制你的方波产生,具体能产生多少Hz或KHz的方波,要看你使用的定时器和精确度
不错,我的一些时序严格要求的就是这么做的。这样用硬件保证了时序的稳定性。
David_Hu 2012-11-13
  • 打赏
  • 举报
回复
你说的这个我还是没明白为什么要2us一个中断 你是给出的中断还是给入的中断,又是仿PWM输出 这种描述不清楚的题,很多人懒得回了
35岁前换工作 2012-11-13
  • 打赏
  • 举报
回复
引用 6 楼 brantyou 的回复:
可以用gpio模拟PWM产生你需要的方波,使用PWM定时器产生定时中断,然后在IRQ中进行电平翻转,定时器的开关可以在驱动或应用层中控制。这样就可以随时控制你的方波产生,具体能产生多少Hz或KHz的方波,要看你使用的定时器和精确度
谢谢你 能再说的具体些吗?我实在没弄过操作系统。
35岁前换工作 2012-11-13
  • 打赏
  • 举报
回复
引用 1 楼 hudaweikevin 的回复:
反正不能用GPIO做中断,会慢 选个其它硬件中断,另外你的中断处理时间是多久? 很好奇楼主要干嘛
GPIO仿真pwm输出 因为pwm要求100hz 1个周期0.1s 然后又要分成100份进行占空比的分配 至少要2us一个中断 你能具体说下怎么实现吗?
David_Hu 2012-11-13
  • 打赏
  • 举报
回复
反正不能用GPIO做中断,会慢 选个其它硬件中断,另外你的中断处理时间是多久? 很好奇楼主要干嘛
一介布衣萧萧 2012-11-13
  • 打赏
  • 举报
回复
可以用gpio模拟PWM产生你需要的方波,使用PWM定时器产生定时中断,然后在IRQ中进行电平翻转,定时器的开关可以在驱动或应用层中控制。这样就可以随时控制你的方波产生,具体能产生多少Hz或KHz的方波,要看你使用的定时器和精确度
35岁前换工作 2012-11-13
  • 打赏
  • 举报
回复
引用 3 楼 hudaweikevin 的回复:
你说的这个我还是没明白为什么要2us一个中断 你是给出的中断还是给入的中断,又是仿PWM输出 这种描述不清楚的题,很多人懒得回了
要产生100hz的方波 一个波的时间是10ms 占空比0~100也就是一个方波要分成100份,1份0.01ms,也就是10us。当然10us的中断也可以,但是为了以后如果方波频率更高的话可以拓展。 比如一个pwm输出被设成了50%占空比,在中断里用一个cnt来数,数到50的时候一个GPIO电平翻转,数到100的时候也就是一个周期结束的时候再翻转。这样这个GPIO就能模拟pwm输出的方波了。
35岁前换工作 2012-11-13
  • 打赏
  • 举报
回复
引用 3 楼 hudaweikevin 的回复:
你说的这个我还是没明白为什么要2us一个中断 你是给出的中断还是给入的中断,又是仿PWM输出 这种描述不清楚的题,很多人懒得回了
是我要系统每2us去判断一次是否占空比到了需要翻转电平…… 也就是说每2us进一次中断服务函数去处理这件事,这件事就是判断是否需要输出的电平转换,如果需要就进行转换,从而按照设定好的占空比输出方波……

19,519

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧