旋转编码器使用方法_

旋转编码器使用方法_

ID:1829476

大小:133.00 KB

页数:4页

时间:2017-11-13

旋转编码器使用方法__第1页
旋转编码器使用方法__第2页
旋转编码器使用方法__第3页
旋转编码器使用方法__第4页
资源描述:

《旋转编码器使用方法_》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、上海禹萌控制系统设备有限公司查看更多资料请登录www.yumeng-sh.com旋转编码器使用方法本文来源:www.yumeng-sh.com咨询电话:021-54136071一个具体的流接口驱动程序和注册表是密不可分的。向WinCE内核添加注册表项的方法有两种:一种是直接修改PlatformBuilder下的reg文件;另一种是自己编写一个注册表文件,通过添加组件的方法将动态链接库文件添加到内核中。这里用第2种方法,将OpticalEncoder.dll添加到内核中。编写的注册表文件内容如下:3光电编码器驱动程序的设

2、计  3.1光电编码器与S3C2410的硬件接口  光电编码器与S3C24lO的接口电路如图4所示。光电编码器的A、B相为集电极开路输出,由于S3C2410的I/O口电平为3.3V,所以将其通过电阻上拉到3.3V后再分别接到CPU的EINT0和EINT1上;将Pl直接接到3.3V,P2通过电阻下拉到GND。当旋钮按下时,P2口输出为高电平,否则输出为低电平。  上海禹萌控制系统设备有限公司查看更多资料请登录www.yumeng-sh.com上海禹萌控制系统设备有限公司查看更多资料请登录www.yumeng-sh.com

3、  工作状态下,将EINTO、EINTl配置成上升沿和下降沿均触发的外部中断,将EINT2配置成上升沿触发的中断,旋钮按下时EINT2引脚产生上升沿触发中断。  3.2外部中断初始化及中断服务程序的编写  首先必须完成CPU的I/O口和中断的初始化工作,然后再编写中断处理程序。具体分为4个步骤:  初始化I/O口。在Port_Init()函数中,将EINT0和EINTl初始化为上升沿和下降沿均触发的中断。将EINT2初始化为上升沿触发的中断。  添加中断号。在oalint.h下添加光电编码器中断向量的宏定义。代码为#d

4、efineSYSINTR_OED(SYSINTR_FIRMWARE+20)  添加中断的初始化、禁止、复位等函数,分别在OEMInterruptEnable()、OEMInterruptDisable()、OEM-InterruptDone()等函数中加入相关代码。  返同中断标识,由OEMInterruptHandler()函数返回中断标识(SYSINTR_OED)。  3.3编写流接口驱动程序  WindowsCE.net把中断处理分成两个部分:中断服务程序(ISR)和中断服务线程(IST)。TSR通常要求越短、越

5、快越好,它的唯一任务就是返回中断标识。正由于ISR很小,只能做少量的处理,因此中断处理器就调用IST执行大多数的中断处理。中断服务线程(IST)在从waitForSingleObject()函数得到中断已经发生的信号前一直保持空闲;当接收到中断信号后,它就在本机设备驱动程序的PDD层调用子程序,这些程序反过来访问硬件以获得硬件的状态。IST使用InterruptInitialize()函数来注册自己,然后使用WaitForSingleObject()函数等待中断信号。如果这时中断信号到来,则应将光电编码器的状态记录下来

6、,保存在变量OED_Status中。OED_Status=1表示旋钮按下,OED_Status=2表示旋钮逆时针旋转,OED_Status=3表示旋钮顺时针旋转。  这里还有一种比较简单的鉴相规则,具体步骤是,当创建线程时读出EINTl的电平状态并保存在变量PreEINTl中,每次中断到来时首先判断EINT2是否为高电平。如果为高电平,则说明按钮按下;如果EINT2为低电平,则判断EINTO电平是否与PreEINTl相同。如果相同,则说明旋钮逆时针旋转;反之,旋钮顺时针旋转,判断的流程如图5所示。  上海禹萌控制系统设

7、备有限公司查看更多资料请登录www.yumeng-sh.com上海禹萌控制系统设备有限公司查看更多资料请登录www.yumeng-sh.com WindowsCE流接口驱动程序模型要求驱动程序开发者编写10个接口函数,针对光电编码器的驱动主要应完成设备初始化和数据读取2个函数的编写。WindowsCE设备文件名前缀由3个大写字母组成,操作系统使用这3个字母来识别与流接口驱动程序相对应的设备。这里定义设备文件名前缀为“OED”(OptICalEncoder),其中设备初始化函数OED_Init()在WindowsCE装载

8、驱动程序时用于创建中断事件和中断服务线程。在函数OED_Read()中将光电编码器的状态(OED_Status)返回。  3.4封装驱动程序并加入到WinCE中  根据上述方法编译出动态链接库(DLL)还不够,因为它的接口函数还没有导出,还需要告诉链接程序输出什么样的函数,因此必须建立一个后缀名为def的文件。在本设计中为Opti

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。