11415|50

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

编写wince的底层驱动应该如果实现比较精确的uS、mS级延时呢? [复制链接]

比如我想一个GPIO先设为高电平,2uS后就变成低电平。

最新回复

建议建立一个isr来实现  详情 回复 发表于 2009-11-3 08:40
点赞 关注

回复
举报

90

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
LZ想要精确到什么程序

在CE下精确度不高,但2us的延时精确度应该问题不大
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 91program 的回复:
LZ想要精确到什么程序

在CE下精确度不高,但2us的延时精确度应该问题不大


怎么做?如果不用定时器能够精确吗?
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 
2US?CE下估计能做到
 
 
 

回复

57

帖子

0

TA的资源

一粒金砂(初级)

5
 
使用RTC或PWM的硬件中断,在中断中直接响应。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 2 楼 gooogleman 的回复:
引用 1 楼 91program 的回复:
LZ想要精确到什么程序

在CE下精确度不高,但2us的延时精确度应该问题不大


怎么做?如果不用定时器能够精确吗?


LZ的要求,不涉及中断处理的过程,这样是可以做到的
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 
sleep函数可以精确到微秒
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 wdw1600 的回复:
sleep函数可以精确到微秒


sleep最小就是sleep(1)是1ms的
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
因为有些芯片既不是IIC控制方式,也不是SPI方式,这种情况我应该怎么样编写WinCE驱动呢。这样我就需要一个uS级的延时,当然延时时间太长和太短都不行。
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
用Winbase.h中的QueryPerformanceFrequency、QueryPerformanceCounter 试试看。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 9 楼 constantine 的回复:
用Winbase.h中的QueryPerformanceFrequency、QueryPerformanceCounter 试试看。


记得好像是它们更精确一些,不确定
LZ去查查啦
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
1.Sleep尽量不要用。。。。Sleep休眠的时候进程貌似会被关掉,再起来可能导致芯片功能丢失。
2.自己写个循环函数来控制一个IO口拉低拉高,然后做个AP测试程序,同时用示波器抓一下波形就可以做一个us时间的延时
   比如说
    usDelay(long Val){for(int i =0 ; i     然后
    while(count){GPIOx_High(); usDelay(1670); GPIOx_Low();count--;}
    然后用示波器看了。。。。


 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

13
 
1. WinCE 下是沒有 us 等級的 delay function.
2. Sleep(X) 只能保證最短 delay X ms, 沒法保證一定是剛好是 X ms (與 thread priority 有關).
3. 用一個 for loop 做 delay, 建議在 loop 中加讀取 io 的程式碼, 它的 delay 時間較不會隨最佳化或是 core clock 變更而改變.
4. 若真是那麼 time critical, 建議用一個 hardware timer, 將其寫成 installable isr, 在 driver 中將資料準備好, 在 iisr 中將資料的每個 bit 送出, 待 packet 送完後再返回 sysintr, 通知 driver 的 ist 己將該 packet 送出完成.
5. 接收要怎麼做呢?? 直接拉 gpio 中斷好了.

Paul, Chao @ Techware

 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 8 楼 cy757 的回复:
因为有些芯片既不是IIC控制方式,也不是SPI方式,这种情况我应该怎么样编写WinCE驱动呢。这样我就需要一个uS级的延时,当然延时时间太长和太短都不行。

这个只是说时序是以US级别为单位的,没有说一定要精确到US级别吧?阿肆的办法可用!用IO口模拟时序。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

15
 
看看CPU有没有us级的定时器,如果没有只好模拟了。上面说的读取IO应该是可行的做法。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

16
 
//****************************************************************************
// DelayInuSec
//****************************************************************************
// Delay a certain number of microseconds.
//
//
//
void DelayInuSec(DWORD uS)
{
    DWORD passed, startTime;

    startTime= *TIM_DEBUGVALUELOW;
    passed=0;
   
    //
    // Get stuck in this loop until
    //
    while ( passed < uS)
    {
       passed = (*TIM_DEBUGVALUELOW - startTime);
    }
}

TIM_DEBUGVALUELOW是定时器寄存器
EP9315的板子
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

17
 
引用 12 楼 paul_chao 的回复:
1. WinCE 下是沒有 us 等級的 delay function.
2. Sleep(X) 只能保證最短 delay X ms, 沒法保證一定是剛好是 X ms (與 thread priority 有關).
3. 用一個 for loop 做 delay, 建議在 loop 中加讀取 io 的程式碼, 它的 delay 時間較不會隨最佳化或是 core clock 變更而改變.
4. 若真是那麼 time critical, 建議用一個 hardware timer, 將其寫成 installable isr, 在 driver 中將資料準備好, 在 iisr 中將資料的每個 bit 送出…


这个方法好!!!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

18
 
引用 16 楼 Seven_zhangxw 的回复:
引用 12 楼 paul_chao 的回复:
1. WinCE 下是沒有 us 等級的 delay function.
2. Sleep(X) 只能保證最短 delay X ms, 沒法保證一定是剛好是 X ms (與 thread priority 有關).
3. 用一個 for loop 做 delay, 建議在 loop 中加讀取 io 的程式碼, 它的 delay 時間較不會隨最佳化或是 core clock 變更而改變.
4. 若真是那麼 time critical, 建議用一個 hardware timer, 將其寫成 installable isr, 在 driver 中將資料準備好, …
顶这个
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

19
 
study
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

20
 
怎么下在不了啊
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表