首页资源分类嵌入式处理器其它 > 传感器中的应用

传感器中的应用

已有 445125个资源

下载专区

文档信息举报收藏

标    签:传感器应用

分    享:

文档简介

传感器中的应用0S-Ⅱ

文档预览

第 12期  2008年 12月  · 技术经验 ·  山 西 焦 煤 科 技  Shanxi Coking Coal Science& Technology  uC/0S一11在角位置传感器中的应用  王 志坚① 梁 军龙  (国营大众机械 厂 第一研 究所)  NO.12  Dec.2o08  摘 要 介 绍 了微 内核 实时嵌 入 式操 作 系统 uC/OS— lI的 工作 原 理 及 C8051F206单 片机 的工  作特点 ,讨论 了将 uC/OS一11移植到 C8051F206单片机应 用系统 中的原理、方法及其 实现。并通过  一 个 实际 的应 用 系统一 角位 置传 感 器测 试 系统 的 实现 ,详 细说 明 了 系统 中各任 务 的分 解 方 法及 其 实  现 。  关键 词  实 时 多任 务操 作 系统 ;uC/OS—II;C8051F206;移植  中图分 类号 :TD679  文 献标 识码 :A  文章编 号 :1672—0652(2008)12—0003一o4  随着 微机 系 统 的进 一 步 复 杂 化 和 系 统 实 时 性 需  核 。C8051F206具有 如下 优点 :  求 的不 断 提高 ,以及应 用软 件 向 系统化 方 向 的快速 发  1)运行 速 度 快 。该 芯 片 采 用 流 水 线 指 令 结 构 ,  展 ,应 用 实时 多任 务 操 作 系统 (RTOS)作 为 嵌 入 式 设  70%指令 的执行 时 间为 1个 或 2个 系 统时钟 周 期 ,执  计 的基 础 和 开发 平 台 已逐 步 成 为 嵌 入 式 应 用 设 计 的  行 速度 最 高可达 25 MIPS。  主流 。 当前较 流 行 的 RTOS有 :RtxTiny、uC/OS—II、  2)ADC输人 口较多 。最多 8个采样速率为 100  uCLinux、RTLinux等。其 中,uC/OS—II是 Jean J.La—  ksps的 l2位 ADC输入 ,不必外加 ADC芯片就能满  brosse所写 的一个基 于优 先级 抢 占式 实 时 内核 、源 码  足 大多数 设 计需 要 。  公开 、可剪裁 、免费 的嵌入式操作 系统 内核 ,支持 56  3) 片 内 存 储 空 间 大 。 该 芯 片 具 有 8kB 的  个用户任务 ,90%的代码使用 ANSI C书写 ,程序可读  FLASH 存 储 器 ,256 B 数 据 SRAM 和 1 024 B 的  性 强 、移植 性好 。并且 它 已通 过美 国 的军 方 认 可 ,足  XRAM 。  以见其 内核 的稳 定 性 、强 壮 性 。uC/OS—II目前 已被  4)调试 方 便 。该  片支 持 片 内无 侵 入 的 JrrAG  移植到各种 8位 、16位 、32位单片机上 ,使用人数众  调试 功能 。  多 。尽 管在 嵌入 式 系统 中使 用 RTOS好 处 多 ,但 也 应  5)安全机制 可靠 。该 片具有 7种复位源 ,大大  看 到 由于 RTOS在 进行 任 务切 换 时 ,为保 存 当前 任 务  提高 了运 行 可 靠 性 ;利 用 JTAG 口编 程 对 芯 片 加 密 ,  环境 必 须 占用 一 定 的 RAM,并 且 在 进 行 任 务 调 度 时  提 高 了系 统 的保密 性 。  需 占用 一定 的 时 间。这 对 RAM 资 源 紧张 的 8位 机 上  6)具 有 工业 级 工 作 温 度 范 围 ,能 满 足 系 统 的使  进 行强 实 时 的嵌 入 式应 用 ,具有 不小 的难 度 。  用要 求 。  而 美 国 Silicon Labs公 司 推 出 的 8位 单 片 机  本 研 究 讨论 将 uC/OS—II移 植 到 以 Silicon Labs  C8051F206却 由于 自身 的特 点 ,使 得 在 强实 时 的嵌 入  公 司的高 性能 8位 单 片机 C8051F206组成 的应 用 系  式应 用 环 境 中 使 用 RTOS成 为 可 能 。 这 是 因 为  统 中的方 法及 过程 。在 移植 成 功 的基础 上 ,编写 了角  C8051F206单 片机是 完 全 集 成 的混 合 信 号 系统 芯 片  位置传感器检测软件。从结果上看 ,角位置传感器检  (SoC),具 有 与 8051指 令 集 完 全兼 容 的 CIP一51内  测 软件 在 uC/OS—II内核 环境 中 ,实 时性 、可 靠 性 得  ①  作者简介 :王志坚 男  1969年出生  1993年毕业于太原工业大学 工 程师 邮编 030024  山 西 焦 煤 科 技  2008年第 12期  到 了保证 。  1  uC/OS一11工作原 理  1.5 任务 调度  任务 调度是 通 过 OSSched()函数 完 成 的。任 务  uC/OS—II的工 作 原 理是 让 最 高 优 先 级 的 就 绪  任务 处于运 行状 态 。它在调 用 系统 任务 函数 、中断结  束 、定时 中断结束 时 执 行任 务 调 度算 法 ,通 过 事 先 设  计好 的任务 就绪 表 ,使 得任务 调度 延时 可预 知 。  1.1  uC/OS一Ⅱ中任务 的特 点  1)任务为一死循环 ,可 以有形参 ,但不能有返 回  值 。2)任 务可通 过 OSTaskDel()函数删 除 。3)任 务  必须 调用 uC/OS—II的 以下 某 种 系 统 服务 :OSMbox—  Pend()、OSQPend()、OSSemPend()、OSTimeDly()、  OSTimeDlyHMSM()、OSTaskDel(OS—PRIO—SELF)、  OSTaskSuspend(OS—PRIO—SELF)。4)uC/OS—II可  管 理 64个任 务 ,其 中用 户可定 义 至多 56个 任务 。5)  uC/OS—II中的任务 优先 级号 即是任 务编 号 (ID),因  此 每个任 务 的优先 级 不 能相 同 ,任 务 优 先级 号 越 低 ,  任务优 先级越 高 。6)uC/OS—II总 是运 行 就绪 态 中  优先级 最高 的任务 。7)任务 必须 用 OSTaskCreate()  或 OSTaskCreateExt()创 建 。  1.2 任 务状 态  uC/OS—II中的任务有等待 、休眠 、就绪 、运行 4  种状态 ,当所 有 任 务 均 处 于 等 待 时 ,uC/OS—II执 行  空 闲任务 OSTaskldle()。各 状态 关 系见 图 1。  切换 的整 个过程 是 :用户任 务程 序调 用任务 调度 函数  OSSched(),OSSched()首 先 从 就 绪表 中查 找 优 先 级  最 高的任 务 ,如果优 先 级 最 高 的任 务 是 当前 任 务 ,则  退 出 OSSched()函数 ,继 续执 行 当前任务 ;否则 ,取 得  优 先级最 高任务 的任 务控 制块 ,将 任 务切换 计数 器加  1,调用任 务切换 函数 OS_TASK—SW ()进 行任 务 的切  换 。  任务 切 换 函数 OS—TASK—SW ()实 际 上 是 通 过  OSCtxSw()函数 进行 任 务切 换 的 ,OSCtxSw()函数 完  成 的 主要 任务 是 :将 被 挂 起 任 务 的寄 存 器人 栈 ,将 优  先 级最 高任务 的寄 存器 出栈 。  1.6  中断 处理  当产 生 中断 时 ,先关 中断进 行 中断处 理 ,中断处  理过程 如下 :  1)保存 全部 MCU的 寄存 器 内容 。2)调用 0s-  IntEnter()函数或 OSIntNesting一 。3)用 户 中断服务  程序 。4)调用 OSIntExit()函数 。5)恢 复 所 有 寄存  器 。6)中断返 回 (IRET)。  OSIntExit()函数进 行任 务调 度 ,如 有更 高优先级  任务 在等 待状 态时 ,调 用 OSIntCtxSw(),它 与 OSCtx—  Sw()类似 ,只是对 堆栈 指针 做 了简单 调整 ,以保 证所  有挂 起任 务 的栈 结构 看起来 是相 同 的。  2  uC/OS一11的移植  实现 uC/OS—II的移植 ,要求 所 用 的 C编译器 支  持混 合编 程 。在此 选 用 KEIL7.50a UV3开 发 环境 ,  图 1 任 务 状 态 转换 图  1.3 任务控 制 块(OS_TCB)  保存任 务状 态 的上下 文 ,该 任务在 建立 时被初 始  化 ,所 有任 务 的 TCB(Task Control Block)均驻 留在 内  存 中 。  uC/OS—II根据 OS—MAX—Tasks(OS—CFG.H)来  确定 OS—TCBs的 最 大 数 目,所 有 的 TCB均 被 放 在  硬件 开发 环境 为 自己设 计 的基 于 C805 1 F206 MCU的  多 路数据 采集板 。  2.1  uC/OS—II的移植条 件  要使 uC/OS—II正常运 行 ,处 理器 必须满 足 以下  要 求 :  1)处理器的 C编译器能产生可重 人代码。2)  用 C语 言就 可 以打 开 和关 闭 中断 。3)处 理器支 持 中  断 ,并且 能产 生定 时 中断 (通常 在 l0~100 Hz之间 )。  4)处 理器 支持能 够容纳 一定 量数据 的硬 件堆 栈 。5)  OSTCBTbl中。  1.4 就 绪表  处 理器 有将 堆栈 指针 和其 他 CPU寄存 器读 出 和存 储  到堆栈 或 内存 中的指令 。  存放 各 就绪 状 态 任务 ,便 于 任务 切 换 时 ,最 高优  根 据 以 上 的移 植条 件 ,对 C8051F206 MCU考 核  先级 任务 的查 找 。  .  可知 :C8051F206 MCU有 8 kB的程 序 空 间 ,1 kB的  2008年 第 12期  王 志 坚等 :uC/0S一 Ⅱ在 角位 置传 感 器 中的应 用  XRAM 数 据 空 间和 256 B 的 片 内 RAM 区 和 3个 l6  之后 将 新 任 务 的 上 下 文 环 境 PSW 、ACC、B、DPL、  Bit定 时 器/计 数 器 ,21个 中断 矢 量 。程 序 的堆 栈 可  DPH、R0一R7、SP进 行恢 复 ,再将 PC恢 复 即可 。  以位于 256 B内部数据存储器 中的任意位置 ,堆栈最  2)OS—CPU.H 的移植 。  大深度为 256 B,堆栈指针 sP可读 取 ,可使用 PUSH  OS CPU.H声 明 了各 种 与 硬件 相关 的数 据 类 型  — 和 POP指令 进 行 人/出栈 操 作 。满 足 uC/OS—II移  和宏 ,改 动如 下 :  植要 求 。  2.2  uC/OS一11移 植 时所 需修 改 的文件  typedef unsigned char OS STK;/  定义 堆 栈 的宽  — 度 为 8位  /  uC/OS—II的移植 只与 3个 文 件 相 关 :汇 编 文 件  OS CPU EXTINT8UIE BAK;/:l:设 置 变 量 ,用  — — — (OS—CPU—A.ASM)和 处 理 器 相 关 C文件 (OS—CPU.  于备份 IE  /  H、OS CPU C.C)。各文 件移 植修 改 如下 :  — — 1)OS—CPU—A.ASM 的移 植 。  OS CPU A.ASM 中 主 要 有 4 个 函 数 :OS—  — — /  关 中断  /  #define OS ENTER CRITICAl()IE—BAK =IE;  — — IE& =0x7f  StartHighRdy()、OSCtxSw ()、OSIntCtxSw ()、OS—  /:f:开 中断 /  TieklSR(),用来 完 成 时间 中断 、用 户 堆栈 和 系 统堆 栈  #def ine OS~EXIT CRITICAL()IE :IE—BAK  之 间 的数 据 交换 ,中 断 程 序 一 般 在 OS—CPU—A.ASM  /  定 义堆栈 增 长方 向为 :由低 向高  /  中 ,也可 以 在 C 中 嵌 入 汇 编 ,为 了提 高 系 统 的 实 时  性 ,一般 在 中断程 序 中 只是 发 送 信 号 量 ,具 体 操 作 在  #define OS STK GROW TH O  — — /  定 义任务 切换 函数  /  任 务 中执 行 ..  编译 器将 每 个 文 件 作 为 一 个 模 块 ,用 NAME来  #define OS TASK SW ()OSCtxSw()  — _ 3)OS—CPU.C的移植 。  声 明 ,因此 ,应 在 文件 头部 声 明 “NAME OS—CPU—A”。  OS CPU C.C包 含 6个 简 单 的 c函数 :OSTask—  — — 函数 有程 序 部 分 和 局 部 变 量 部 分 。它 们 分 别 放  Stklnit()、OSTaskCreateHook()、OS FaskDelHook()、  在独立 的段 中 。在 大模 式 下 ,段名 声 明 的固定格 式 为  OSTaskSwHook()、OSTaskStatHook()、OSTime—Tick.  “PUBLIC ? PR? 函 数 名 ? 模 块 名 SEGMENT  Hook()。实际 上需要 修 改 的只 有 OSTaskStklnit()这  CODE”。 因 此 ,需 要 将 OSStartHighRdy()、OSCtxSw  个 函数 。该 函数 用来 初 始化 任 务 的堆 栈 。初 始 化 状  ()、OSIntCtxSw()和 OSTicklSR()用 上 面 的 格 式 声  态 堆栈 只须初 始 化 ?C—XBP(仿 真 堆 栈 指 针 )、任 务  明 。女口“? PUBLIC?PR?0SStarIHighRdy?OS~CPU  地 址及 堆 栈 的长度 。 由于 C8051F206只 有 1NC DFrR  A SEGM ENT CODE”。  — 指 令 ,返 回堆栈 的最 低 地 址 ,且 最 低 地 址 处 存 放 栈 的  由于 C8051F206的 堆 栈 指 针 只 有 8位 ,只 能 指  长 度 ,以方 便用 汇编 语 言实 现任 务 的切换 。  向内部数 据 区 的 256个 字 节 。因此 ,将 运行 任 务 的堆  4)系统时 钟定 义 。系 统 的时钟 节拍 通 过定 时 器  栈放 在 IDATA 区 ,堆 栈 大 小 为 48字 : ,堆 栈 的起 点  O来控 制 ,设置 每 10 ms产 生 一 次 定 时 中断 ,因 此 时  可 由 ORG指 令 指 定 ,例 如分 配 任务 A 的堆栈 地址 在  钟节 拍是 100 Hz,必须 注 意 的是 ,定 时器 0的 中断 必  90H处 ,其 汇 编代 码如 下 :  0RG 0090H  须 在调 用 OSStart()之后 才 能打 开 ,否则 ,系 统容 易 崩  溃 ,因此 ,中断必 须 在第 一 个任务 中打 开 。  ? STACK SEGMENT IDATA  另 外 ,由于 系 统 需 每 毫 秒 进 行 一 次 角 位 置 的 转  RSEG ? STACK  换 ,所 以时钟 节拍 实 际 上并无 用处 。因此 在角位 置 转  OSStackA :  换任 务执 行结 束 时 ,将 定 时 器 0计 数 器 清零 ,以 阻 止  DS 30H  时 间片 的产 生 。如程 序跑 飞 ,则 系统 的时钟 节拍 到达  OSStkAStart IDATA OSStackA 一 1  时 ,对 整 个 系统进 行 复位 。此 时系 统 的时钟 节拍 用做  在 进行 任 务切 换 时 ,须 将 当前任 务 的上 下 文环境  软看 门狗 。  PSW 、ACC、B、DPI 、DPH、R0~R7、sp、Pc进 行 保 存 ,  5)可重人函数 。另外 ,多个任 务同时调用 的函  山 西 焦 煤 科 技  2008年第 12期  数必须具有可重人性。因此 ,自己编写的函数一般都  需带 有可重 人性 ,在 函数定义 后 面加 reentrant关键 字  即可 。KEIL 51中有 些 C语 言通 用 函数 并 不 支 持 重  人。例如 ,与 串行 通 信 相 关 的 prinf()、getchar()等  函数就不 支持重 人 。 因此 ,在 任 务 中发 送 、串 口数 据  不能用 printf()等 函数 ,只能 自己编写发送函数 。  3 基 于 uC/OS—lI的开发应 用  挂 起  移植 基 于 uC/OS—II的 C8051F206的 每个 功 能  都 可 以作 为一个 独立 的任务 在 系统 中运行 ,每个任 务  都 有 自己的堆栈 空 间 ,可 以被其他 任 务和 中断服 务程  序挂 起 。  应用程序实现了 4个任务 :Taskl是每毫秒产生  一 同步时钟 ,并发送一信号量让 Task2运行 ;Task2是  发送 上拍计 算 出的角 位置数 据 ,同时 发送一信 号量 让  Task2运行 ;。。 I'ask3对 四路 角位置 进行 A/D转 换 ,并 在  转换结束后发送一信号量让 Task4运行 ;Task4是对  图 2 系统程序结构框 图  4 结 束语  将 编写 的角 位 置 转换 程 序 下 载 到 C8051F206应  用 系统 中进行 实际运 行测试 。测 试表 明 ,基 于 uC/OS  一 Ⅱ的 C8051F206应 用 系 统 中 的各 任 务 工作 正 常 ,  系统运行 稳定 可靠 。  转 换数据 进行 计算 ,求 出当前 的角 位 置 ,清 零定 时器  0,并将 自身挂起 。程 序 中设 置 4个 任 务 的优 先级 依  次为 10,11,12,13,因此 ,Taskl的优先 级 最 高 。整个  应用程 序 的结 构 见图 2。  收稿 日期 2008—09—24  参 考 文 献  1]  邵 贝贝.uC/OS—II源码公 开的实时嵌入式操作系统 M].北京 :中国电力出版社.2001:28—30.  2] 江平新 ,容太平.uC/OS—lI枉 C8051F上 的移植 [J].单 片机 Lj嵌入式系统应用.2003(5):15—18  Application of uC/OS一 Ⅱ in Angular Position Sensor  Wang Zhijian  Liang Junlong  Abstract  Micro——kernel real——time embedded operating system uC/OS-— II principle and the work of the  C805 1 F206 MCU features,will be discussed in detail uC/OS一 1I into C805 1 F206 MCU application of the principle,  methods and its iinplemen|ation.And through a practical application — angle position sensor test system ,the system  descr ibes in detail in the task of decomposition method and its implementation.  Key words  Real—time multi—tasking operating system ;uC/OS一 11;C805 1F206;Transplant 

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。