第一章越障机器人的综述_第1页
第一章越障机器人的综述_第2页
第一章越障机器人的综述_第3页
第一章越障机器人的综述_第4页
第一章越障机器人的综述_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国科学技术大学本科毕业论文项目:越障机器人研究题目:移动机器人嵌入式控制PC/104模块CDT800的性能与应用姓名:王付锐学号:PB99009015导师:杨杰时间:二零零三年六月三日在论文的写作过程中,从最初选题到具体完成中遇到的问题,得到了杨杰老师、许旻老师等的悉心帮助,耐心的指导论文的不足。在此,要对他们表示真诚的谢意。这篇论文对我是一次很好的锻炼,对以前所学知识的融合贯通,通过这篇论文,可以开阔知识面,涉足到新的知识,对我的能力是很好的培养。另外,还要感谢在论文编写过程中,卢永奎、马记、汪新等给予我帮助的同学。他们在忙碌的学习中,仍然给予我真诚的帮助。在此再次对他们表示真诚的感谢。中文内容摘要……………3英文内容摘要……………4TOC\o"1-5"\h\z第一章越障机器人及PC/104的综述 5第一节越障机器人的简介…………… 5第二节越障机器人研究计划…………6\o"CurrentDocument"第二章PC/104模块的系统介绍 8\o"CurrentDocument"第一节PC/104的简介 8\o"CurrentDocument"一、 CDT800功能 8二、 计数器/定时器……………………9\o"CurrentDocument"三、 数字量I/O 10\o"CurrentDocument"第二节PC/104模块的硬件描述 10\o"CurrentDocument"一、 Am9513A定时控制器 10\o"CurrentDocument"二、 计数器外部I/O的连接 12第三章用PC/104实现对越障机器人的嵌入式控制……… 13第一节控制原理……… 13第二节对计数器端口部分的控制字设制…………… 14一、 主模式寄存器…………………… 14二、 计数器………… 17三、 计数模式寄存器………………… 17\o"CurrentDocument"第三节PC/104的控制程序 22一、 计数器部分的控制程序……… 22\o"CurrentDocument"二、 I/O端口部分的控制程序 26第四章小结…………………29参考文献…………………30越障机器人由于其在各方面的应用意义日趋明显,其相关研究已受到了各国的高度重视。装有传感器装置的越障机器人,可以由人设置任务或直接控制,在特殊的地方进行自动或半自动的工作,完成特殊的任务。在美国对阿富汗、伊拉克的战争中,美军使用的越障机器人,成功地完成了侦察危险地域的目的。而目前,国内的越障机器人研究还处于相对落后的阶段。本文是越障机器人研究项目的一部分,主要任务是用PC/104模块实现对越障机器人的运动控制。本文概述了越障机器人领域的国内外研究情况以及我们实验室设计的越障机器人的性能、研究的内容和研究中的难点问题,简单介绍了PC/104模块CDT800的功能特点以及外部硬件连接,重点介绍了C/104的主模式寄存器、计数模式寄存器的控制字的设定,计数器、中断和数字量I/O端口部分的控制程序,最后是文本的小结。关键词:越障机器人PC/104计数器寄存器控制字AbstractBecauseofitsmoreandmorewidelyapplication,Over_obstructRobotresearchgetsmoreandmoreattention.Over_obstructRobotwithtransducerequipmentcanbesetbypeopleordirectlycontrolledbypeopletoaccomplishsomedifficulttasksautomaticallyorsemi_automaticallyinsomespecialplaces.IntheAfghanistanandIraqWar,Over_obstructRobotusedbytheUSAarmy,successfullyaccomplishedthedangerousareas'scout.ButtheOver_obstructRobotresearchinChina,isrelativelyfellbehindnow.ThispaperisapartofthestudyofOver_obstructRobot.ThemaintaskistorealizethemovementcontroloftheOver_obstructRobotbyPC/104module.Inthispaper,theauthorsummarizedtheOver_obstructRobotresearchinsideandoutsideofChina,theperformanceoftheOver_obstructRobottheydesign,thecontentandthedifficultiesofthestudy.ItintroducedtheperformanceofthePC/104moduleCDT800anditsexternalhardwareconnection.ThenitemphasizedthePC/104'scontrol_wordsofmastermodeandcountermoderegister,thecontrollingprogramsofthecounters、interruptandthedigitalI/O.Atlastisthebriefsummaryofthispaper.KeyWords:Over_obstructRobotPC/104counterregistercontrol_word第一章绪论第一节越障机器人的概述越障机器人从大型无人车到小型昆虫装置,大小不一,形状各异,由于其在各方面的应用意义日趋明显,其相关研究已受到了各国的高度重视。美国在这方面的研究尤为突出。美国在1997年开始系统研究越障机器人,发展装有传感器装置的越障机器人,由人设置任务或直接控制,在特殊的地方进行自动或半自动的工作,完成特殊的任务。例如,螃蟹型水下机器人像螃蟹一样有6个触角,每个触角有两个自由度。该种机器人可以跨越障碍物,机器上装有传感器、控制器,可以使其能够通过改变其姿势对环境变化做出迅速反应,并且在海底爬行。试验表明机器人既可以探测到水底物质,又可以在浅水中作业,机器人可以在部分入水和完全入水时行走,调整姿势和表面进行全面搜索。另外,远程控制机器人已经广泛使用,尤其是从事像农、林、矿山拆除炸药之类的危险任务,美国将在未来两三年启用500多架新的远程控制越障机器人。其最终的目标是一个人控制许多自动机器人工作,这些机器人即便在再复杂的条件下,也能领会人的旨意安全正常工作。美国已将越障机器人作为今后的研究方向,主要发展在复杂环境下高速运动和自控能力。日本、欧洲也在进行越障机器人的研究,特别是欧洲开发研究的Shrimp机器人,主要在机械结构设计方面做了很大的改进,它高260MM,可以在各种非结构化的障碍环境中移动。这种方法与以前重点控制研究入手不同,而是从变形机械的角度进行越障机器人的研究,非常成功,是今后的发展趋势。我国早在三国时期就研制出“木牛流马”,这是值得骄傲的历史。但近期与发达国家相比,在这方面的研究相对落后,介入的单位也不多。而且基本上是用步行机器人进行障碍的攀越,控制复杂,稳定性差。第二节越障机器人研究计划我们实验室所要研究试制的越障机器人,是国家高技术研究发展计划(简称863计划)先进制造与自动化技术领域、机器人技术专项中,高机动性越障机器人研制课题的研究开发任务。要求设计出既可以在平坦的环境中快速运动,又可以在非结构化的障碍环境中自主移动的高性能越障机器人。最终目标为试制出体积为550mmX200mmX250mm(长X宽X高),自重小于15公斤;可在建筑物内及野外环境中移动,攀越低于自身高度1.5倍的障碍,灵活移动;平坦环境下的行驶速度达每小时5公里,续航能力为1到2天,其中机动时间为1到4个小时;有效负荷不小于2公斤的机器人样机。本项目的研究完全结束后,其成果将达到国内领先、国际先进的水平。图1 越障机器人实物图在这个研究项目中,我们主要的研究内容包括:地面环境分类、建模研究•城市街道的地面建模研究•建筑物内的地面建模研究•人工环境的三维建模研究•野外环境(包括非结构化分类研究)适应环境变形机构综合研究轮、腿、多节机构运动特性研究•轮、腿复合机构运动特性研究•四连杆机构的运动综合研究•机械系统的运动学图形仿真•连杆变形机构的力学分析倾履后的自回复方式•越障机器人的倾覆机制研究•越障机构的平衡机制研究•曲柄滑块机构的回复机制研究野外越障机器人能源系统研究•重力势能利用的研究•高效驱动结构设计•机械储能机制研究环境感知研究•视觉感知研究•接近觉传感器研究•听觉感知研究•触觉感知研究多传感器信息融合研究越障机器人的控制系统研究•越障机器人移动路径规划•越障机器人运动模式的选择和切换•越障机器人移动步态研究•越障机器人姿态和协调控制算法研究•越障机器人稳定平衡协调控制算法研究需要解决的主要的技术问题、难点包括:•非结构化环境特性研究•复合式越障运动机构综合•变形回复机制研究•越障机器人的防倾覆及倾覆后的自恢复机制研究•越障机构的平衡机制研究•视觉、触觉等环境感知研究•多传感融合技术研究•机械储能机制研究等等我所参加的是越障机器人控制系统研究运动模式选择和切换部分的一些工作,主要是通过嵌入式PC/104模块,对机器人运动情况进行控制。第二章PC/104模块的系统介绍第一节PC/104的简介PC/104是嵌入式PC的机械电气标准。它的制定,为嵌入式应用提供了标准的系统平台。嵌入式PC模块,被广泛用于各种高可靠的智能设备中,它具有超小尺寸、超低功耗、宽温特性、单+5V供电,以及一系列针对嵌入式应用的功能扩展等优点。为应用系统的设计引入“面向对象”的方法,也为了系统日后的维护、升级带来很大的方便。我们使用的是盛博公司生产的PC/104模块CDT800.―、CDT800功能CDT800,16位计数器/定时器与数字量I/O模块可将与IBMPC兼容的PC/104模块构成的系统变成一个高性能的控制系统。CDT800模块结构紧凑,适合嵌入式及便携式应用,其功能为:5或10个独立的16位计数器/定时器增/减及二进制/二-十进制计数方式;计数最大长度可达80位扩展计数,门控,及触发方式选择频率与周期测量能力

最大输入频率:7MHz;在板晶振:5MHz基于71055的24路TTL/CMOS可编程数字量I/O•软件中断使能(IRQ2-IRQ7)•TurboC源码;CDTDIAG诊断程序•仅需+5VDC电源供电图2CDT800实物图二、计数器/定时器CDT800装有两片Am9513A。Am9513A定时控制器提供了可编程频率合成、高精度可编程循环波形、可重触发数字单脉冲、日时时钟、报警、复杂脉冲产生、高精度波特率生成、移位脉冲生成、事件计数及波形分析等功能。多种可编程运行方式及控制特性使Am9513A能适应各种特殊的应用并且可在程序的控制下动态地重配置。一个Am9513A定时控制器包括五个通用的16位计数器,可选不同的内部频率源或外部管脚外接作为计数器的输入,可用软件选择输入极性:高电平有效或低电平有效。计数器可编程为按二进制或二-十进制方式增数或减数方式工作。主处理器在任何时候都可读出其累计数而不干扰计数过程。任何计数器均可内部级联形成最大长度为80位的计数器。五个定时器/计数器中的输入门控及输出管脚均引在外部I/O联结器上。

三、数字量I/OCDT800有24通道TTL/CMOS兼容的数字量I/O,它们能直接与外部设备或信号连接,以感知开关的闭合,数字事件的触发、或固态继电器的动作。这些I/O是由模块上的71055可编程外围接口(PPI)芯片提供的。第二节PC/104模块的硬件描述我们使用的PC/104模块CDT800有两个主要电路:Am9513A及数字量I/O。模块的方框图下图所示:图4CDT800方框图―、Am9513A定时控制器Am9513A包括五个通用的16位计数器。可选内部频率源或外部管脚作为计数器的输入,用软件可选择输入极性:高电平有效或低电平有效。每个计数器既有硬件的也有软件的门控方式。计数器可被编程为二进制或二-十进制(BCD)方式增数或减数方式工作。每个计数器均可内部级联构成一个长度达80位的计数器。五个通用计数器中每一个都是16位长,由其计数方式寄存器独立控制。通过该寄存器,可用软件各种门控及重复方式、按二进制或二-十进制(BCD)方式、增数或减数、高有效或低有效的极性选择,设置多达19种操作方式。这19种可编程方式是:方式A软件触发选通(不带硬件门控)方式B软件触发选通(带电平门控)方式C硬件触发选通方式D速率发生器(不带硬件门控)方式E速率发生器(带电平门控)方式F不可重触发的单次脉冲方式G软件触发带延时的单次脉冲方式H软件触发带延时的单次脉冲(带硬件门控)方式I软件触发带延时的脉冲选通方式J可变占空比速率发生器(不带硬件门控)方式K可变占空比速率发生器(带电平门控)方式L硬件触发带延时的单次脉冲方式N软件触发选通(带电平门控及硬件重触发)方式O软件触发选通(带跳变沿门控及硬件重触发)方式Q带同步的速率发生器(带自动读/复位的事件计数器)方式R可重触发的单次脉冲方式S重装入源方式V移位频率方式X硬件储存从减小越障机器人的体积和质量,尽量减少不必要的硬件设备的角度来考虑,我们选择方式A-—不带硬件门控的内部软件触发选通方式来对计数器进行编程。

二、计数器外部I/O的连接下图示出了计数器/定时器连接器的管脚图。奇数边连到U5芯片,偶数边连到U6芯片。39、40两个端口为我们提供了+5V电压以供选用。对于这一部分,我们需要在SOURCE端口接入码盘信号,经过程序分析后在OUT端口输出机器人运动状态信号。由于选用方式A不带硬件门控的软件触发选通,所以没有使用GATE端口。□un-A□UT£-^□un-A□UT£-^口UT3-A□UT4-A□UT5-A□ATE3-AGATE4-AGATE5-ftEDURCEl-ftSQURCE3-fiSOURCE3-ASQLlRCE^-ftSOURCE5-ftDIGITALDNDFQUT-ftDIGITALGNDEKINT十5YDLTS□U71-B□U7£-S口U73-E□U74-E□U75-IGA7E1-5GA7E2-BM7E3-BGA7E4-BGA7E5-BSDURCE1-BEDURCE5-B£DUR匚巨3-RSOURCE4-BSDURCE5-BDIGITAL□HEFDUT-EDIGITALGhBNCt5VDL7S图5J2I/O连接器的管脚分布第三章用PC/104实现对越障机器人的

嵌入式控制第一节控制原理越障机器人需要在不同的环境下实现自主运动的功能,对于不同的地形环境,机器人应该能够做出具体的判断,采取合适的运动方式前进。我所参加的这一部分工作,主要是对越障机器人运动模式的选择和切换的控制。这就要求在输入运动信号后,结合具体的环境、视觉等各方面信号,对机器人的运动状态进行分析,判断出运动模式是否合适,再发出新的指令以控制机器人进一步的的运动状态。控制的原理图如下:图3控制原理图我们主要是通过嵌入式PC模块PC/104,实现对越障机器人的运动模式的控制这一目的。具体的设计思想是:在CDT800的计数器数据输入端接入码盘,通过输入端的码盘脉冲信号,可以反映出越障机器人的运动情况,根据预先设定的初始值,检验出运动是否理想,做出判断,对机器人当前运动速度或角度等状态进行调整。目前,我们工作的重点是对PC104的计数器、I/O端口写入控制程序,以实现对机器人运动模式的控制。第二节对计数器端口部分的控制字设置我们对计数器进行编程,分为几个部分:首先,要对主模式寄存器写入控制字,以设定累加器参数;然后,再对计数模式寄存器写入控制字,以设定计数器的工作方式和状态;最后写入实现我们所需要的功能的具体程序。下面就分别阐述这几部分程序的设定过程。一、主模式寄存器MASTERMODEREGISTER主模式寄存器都是16位读写寄存器,用来设定累加器参数而不是设定个别的累加器。这些参数包括数据总线宽度、指示器参数、时间功能和数据指针序列等。基本主模式寄存器与最基本的9513设备功能是相同的。辅助主模式寄存器被用来CTS9513的扩展特征编程。如果辅助主模式寄存器没有被编程,则Am9513a设备的功能和普通的9513设备相同。在打开电源时,主模式寄存器全部被清零处于下列状态:1.时间日期关闭;2.比较器不报警;3.分频输出(FOUT)源为F1;4.分频倍数为1/16;允许分频输出;数据总线8位;数据指针序列使能;频率放大器按2进制工作;我们需要对主模式寄存器的16位控制字重新进行设置,是其能够达到预期的功能,下面就分别阐述这16位控制字的设定过程:时间天TimeofDay(BitsMM0-1)MM0位和MMl位为计数器1和2设置时间天的计时功能。当使能后,附加的计数器逻辑被使能以便允许这两个计数器作为24小时时钟运行。否则时间天计时功能将不启用。由于我们只需要知道输入信号的相对时间长度,不需要时钟运行,因此此两位设置为00,即不使用时钟。删佶MUI?MillMM10 MH kWS kWS MMl Ltlfi UH2 lAfl UlfflSCALEraiwrmsFWTE1DIV1-B|DfVM| |DW14FDLT1-8|F0UH41F0LT1-2|FWT1-1COMP!|C0UP11CME|TOD1血DBIN1&C0OtiPnUtcQ由加1this蚯tUdh冃1=1«foulUodAQ=on"OfFOUftlwdBIU1D=Divcfaty2011=U«daty3(10Q=Diwcfetyfl1111=Uud»bf16FOUT9Dins3Bil1D0t=5oira1»10=&]lra2D0f1=Qjirai0100=^]iiDfl4D1Q1=^iiiDa5D110=Gria1曲3WQ1=310Kl=G^510t1=F11100=F2nai=finra=f+1111=raGcnpnbcMadsOt=CNnpdrrier1CriId=CHip<dH-2On11=Bo#iDhTintDdO^UidaDO=rDD[>sl]ltdQl=TWftliMJ5m=TDDE-i^BdJE11=TDDEn^UsdMO图6主模式寄存器各位控制字的定义比较器使能ComparatorEnable(BitsMM2-3)计数器1和2上的两个16位比较器能被用在任一模式。当使能时,比较器的输出信号将被发送到计数器的输出端口,这个输出信号将在记数器和警报器的值之间的比较为真的时候被判定,当累加器和警报器保持相同时,此输出信号也一直保持。在时间天模式中,比较器的工作还需要同时关联另一个计数器的输出。只有当比较器1和2都是真值时,比较器才被判定。比较器1的输出将持续正常工作。由于我们的机器人需要在各种情况下连续工作,所以不需要保持设置比较器报警,因此这两位也设为00,即不使用比较器。分频输出数据源FOUT(FrequencydividerOutput)SOURCE(BitsMM4-7)15个不同的数据源可以被发送到FOUT分配器的输入,这其中包括5个SOURCE的输入,5个门输入和5个从分频X1输入端导入的内部分频信号。其他类型的数据源应该通过函数编程由扩展主模式寄存器输入。由于我们并不需要分频输出,所以这四位可以任意选取,目前我们设置为1011,即由F1输入。分频倍数FOUTDivider(BitsMM8-11)FOUT可以被分割成1到1/16倍,主模式寄存器的8-11位是对FOUT除法器从1到16的编程,更高的除数可以由扩展主模式寄存器函数编程。由于我们并没有选择使用分频输出,所以这四位也空缺,为0000。分频输出使能FOUTEnable(BitMM12)FOUT输出可以被使能或不能,还可以在软件控制下变成接地低阻态。由于我们不使用分频输出,所以这一位设置为1,即disable。数据总线位数BusWidth(BitMM13)当被设定,这一位将设备变成16位外数据总线模式。当被清零,外部的数据总线被设成8位,同时寄存器可以一次装载8位,位数最少的重要字优先。由于我们只需要一位数据输入,所以只需要8位数据总线就足够了,因此这一位也设置为0,即8位数据总线。数据指针序列DataPointerSequencing(BitMM14)当这一位被清零,数据指针将自动进行排列。当被设定,数据指针的内容只被指针命令所修改。这一位在我们的实验中也是不需要的,目前把它设置为1,锁定指针内容。缩放比例Scaling(BitMM15)这一位决定内部频率放大器作为BCD码或2进制除法器操作。这一位也是我们不需要的,鉴于内部时钟信号是BCD码的,所以这一位我们也选作BCD码,为1。综上所诉,我们分析了主模式寄存器的设定,把16位组合在一起,得到主模式寄存器的16位控制字为:1101,0000,1011,0000.即为dObOH。此即是主模式寄存器的控制字。二、 计数器COUNTERREGISTERS载入寄存器LoadRegister载入寄存器是一个读/写累加寄存器用来存储累加器的初值。一旦累加器达到“最终值(TC)”时,载入寄存器的值可以被传给累加器。一个TC时间定义当外部值没有被传给累加器时,累加器的值保持为零的一段时间。在所有的操作模式里,只有在累加器达到最终值时,才会执行载入寄存器或是锁存器的值传送给寄存器的操作。锁存器HoldRegister锁存器是一个读/写双向目标寄存器。在一些操作模式下,锁存器可以被用作存储累加器瞬时值而不会干扰累加器的读的动作。其它的操作模式允许锁存器被用来存储累加器的值,近似于载入寄存器。这个累加器可以在锁存器处于最后值时被调用或是被同时从锁存器和载入寄存器调用。报警器AlarmRegister计数器1,2各包括一个附加的16位报警器和相应的16位比较器。当计数器的值等于报警器预先设定的值时,计数器输出端为“True”,输出端可以由计数模式计数器设定为高或地电平。三、 计数模式寄存器COUNTERMODEREGISTER每个计数器组包括一个控制计数器动作、各门和输出端的状态和极性及计数器输入源的方式控制器。计数器初始状态设为0,表示的初始方式为:输出端低阻抗接地倒计数二进制计数计数一次载入选中的寄存器无触发F1数据源选中输入端正极性无附加门电路当计数器准备工作时,计数模式寄存器也必须载入控制字。图7即为计数模式寄存器各位控制字的含义。下面我们就将根据我们的实际需要对计数模式寄存器的16位控制字进行设定编程,具体内容如下:關15GMHMCM12GUI1GM10GM9GWCM?cueCM2GM1GMDK1L3GCIL2|GGTL1EDGESRC同|SRC14|BRCii|SRC1-1御ERELOADREPEATCOUKTDIR0U14|CUTS|0U11ODONoGatngDD1ActiveHinhTCItlD1DGateN-hlD11ActkeHi曲[LaelGalelM血ktiKHi]hLevelGabNmiM肥High询眦NActiveLo/囹聊由teNNodaGRisiiiq1FalingCbuNtSsinSilKliHW(M=TGN-1COQ1^SHinielM10-Swinte2C011iSainceS0101^SMirteS0110=Galet0111=Gal&2diittidi0=Off1=0nMoriModtD=ljcad2BdiiRipulHOdfl0Once1RepastCmirIModiDEinavfBCDCouitClrediDn0Dmn1UpOutputCmtrdCOO-InxIivE.OutputLnwCGI土七heHEon8加TCT鹹011=lagal熾山訊讷<krtputHigh2ItMiAcfvftlJWflnlCIW-Hlegal^111illegal關逸3阳=Gate4[010=Gale5I011=F1t1W=F21101=F31110=FtM11=F5图7 CTS9513CounterModeandAuxiliaryCounterModeRegisterBitAssignments输出控制OutputControl(BitsCMO-2)计数器输出端可以设为非工作态,此时输出端记录计数器的最终结果或锁定最终输出状态。输出端的工作原理如图8。输出端可以通过接入一个高阻抗电路或直接接地来置于非工作态,也可通过硬件连入电路。在结果计数(TC)模式下,输出端可通过编程设置为输出与计数来源的周期相同的高电平或低电平脉冲。在输出锁定模式下,当计数器的计数值达到预先设定的数值时,输出端就改变原来的状态。输出端的初始状态可以通过SET和CLEAR命令来设置。图8CounterOutputSectionBlockDiagram由于我们需要通过计数器监督机器人的运动状态,并在达到预设的运动状态时输出一个指令信号来加以控制,所以对于输出端,我们选择输出锁定模式。因此这三位设置为010,即TCtoggled。计数控制CountControl(BitsCM3-7)一旦计数器到达一个TC,计数器将从载入寄存器或是锁存寄存器中自动重载。计数器从哪个寄存器载入,计数器是否可重复或只计数一次,计数器是二进制或BCD码计数,计数器是否被硬件控制等都是由计数控制位来控制。第三位决定计数器的计数值是增加还是减少。第四位决定计数器是二进制或BCD码计数。第五位决定计数器是否只计一次并且自动锁定,或是持续计数并且重载计数器直到命令它停止。第六位决定计数器从哪个寄存器重载。第六位的操作与门控制设置相关。如果CM6被清零,计数器从TC中的载入寄存器中重载。如果CM6被设定,计数器就可以由门控制模式的设定决定从载入寄存器或是锁存器中载入,也可以在这两种寄存器中互相转换载入。第七位控制计数器是否被硬件触发。它的操作与CM5,CM6和其它的门控制相关。如果一些门控制被使能的同时CM7被清零,硬件触发被取消。当CM7被设定,硬件触发同时被使能,计数器可以在任何时候由控制门信号边沿触发。当被重新触发时,计数器的当前值被保存在锁存器中,同时计数器从载入寄存器中重载。如果没有门被使能的同时CM7被清零,则门输入对计数没有效果。如果CM7被设定,则门输入可以控制计数器从载入寄存器或是锁存器中重载。下面介绍对于这五位的设置:对于第三位,我们采用通用的倒计数模式,预先设定一个数值,当信号输入时,计数值不断减小,直至为0时改变输出端的状态,机器人就会得到新的指令信号,实现运动状态的变化,这一位设为0;对于第四位,鉴于习惯因素,我们选择2进制计数模式,这一位设为0;对于第五位,我们选择一次有效计数,避免同一状态下的重复计数,这一位设为0;对于第六位,由于我们不使用门控,所以选择这一位为0,从TC的载入寄存器中重载,与输出控制的TC模式对应;对于第七位,由于我们不使用门控,所以这一位是0。这样,这五位的控制字为00000。计数来源CountSource(BitsCM8-12)计数来源决定哪个输入源被作为计数器的输入。一共有20个可能的计数源,其中的16个可以被CM8-12选择。其它的计数资源可以被扩展的寄存器设定。图9解释了这内部的24位前端放大器的输出可以被用作计数资源。我们要在SOURCE端口接码盘来输入机器人运动信号,因此选用SOURCE1作为计数器的输入源,为实现这一目的,8-11位控制字设为0001。对于第12位,我们设为0,上升沿信号有效。这五位为00001。选通控制GatingControl(BitsCM13-15)选通控制位决定了计数器是否是由硬件选通。如果选通控被取消,则计数器可以一直工作,直到有硬件引入。如果任一选通控模式被使能,则计数器的操作被硬件选通条件所决定。计数器的选通可以被直接联接着计数器或是相邻计数器的选通线控制。直接联接着计数器的选通线可以被沿触发或是水平触发编程,可以是高电平或低电平。计数器还可以被前一计数器的TC信号触发选通。图10中画出了选通控制逻辑。我们不是用门控制,而且只需要单独使用各计数器,所以这3位设置为000,

BCDSCALINGBZ34JLRISCALINGFL亡LKH」亡IK.LN亡味/IDd.K/ItfltLK/100亡Lk/25右tLK/LOOCi亡Lk/閒屈亡LK/LOiJDiJ亡Lk/站5歸不使用门控。不使用门控。图9 CTS9513CounterInternalPrescalerBlockDiagram图10CTS9513CounterGatingI叩utLogicBlockDiagram综上所述,我们设定了计数模式寄存器的16位控制字,把这16位组合起来,得到16位二进制控制字为:0000,0001,0000,0010,即0102H。

第三节PC/104的控制程序我们目前编写了PC/104的计数器和数据I/O两部分的端口控制程序,以实现对运动信号的读入,分析处理和发出新的指令信号的功能。一、计数器部分的控制程序在前一节里,我们已经设定了主模式寄存器和计数模式寄存器的控制字,下一步的工作就是对端口部分进行编程,写入控制字,实现我们所需要的计数及中断功能。下面就对这两部分的程序的解释:/*程序说明:下面的程序是对PC/104模块CDT800的Am9513A定时控制器的计数器和中断操作进行编程。首先必须设置主模式寄存器和计数模式寄存器的控制字以确定计数器的操作特性。下一步是在计数器的载入寄存器和锁定寄存器里载入适当的初始值。最后一步是将数据信号输入到计数模式寄存器,以实现报警或启动寄存器的功能。当计数器的输出为高电平时,会发出一个中断信号。下面的中断程序的作用在是发出中断后,清除中断请求信号。*/#include<stdio.h>#include<dos.h>#include<conio.h>#include"cdt800.c"enumIRQV{IRQ7,IRQ5,IRQ3};unsignedcharint_num;intflag=0;voidinterrupt(*old_int)()=NULL;voidClose_Rece(IRQ)/*关闭中断*/enumIRQVIRQ;{if(IRQ==IRQ7)int_num=0x0f;elseif(IRQ==IRQ5)int_num=0x0d;elseif(IRQ==IRQ3)int_num=0x0b;disable();if(IRQ==IRQ7)outportb(0x21,(inportb(0x21))|0x80);elseif(IRQ==IRQ5)outportb(0x21,(inportb(0x21))|0x20);elseif(IRQ==IRQ3)outportb(0x21,(inportb(0x21))|0x08);setvect(int_num,old_int);enable();}clock_tArm_time,Interrupt_tine,Time;voidinterruptnew_int()/*中断子程序*/{if(ReadIRQStatus()==1)/*中断发生时返回值1*/{Interrupt_time=clock();/*获取系统时间*/flag=1; /*设置中断标志位为1*/ClearIRQ(); /*清除中断*/}outportb(0x20,0x20);voidInter_Rece(IRQ)/*开中断*/enumIRQVIRQ;{if(IRQ==IRQ7)int_num=0x0f;elseif(IRQ==IRQ5)int_num=0x0d;elseif(IRQ==IRQ3)int_num=0x0b;old_int=getvect(int_num);disable();if(IRQ==IRQ7)outportb(0x21,(inportb(0x21))&0x7f);elseif(IRQ==IRQ5)outportb(0x21,(inportb(0x21))&0xdf);elseif(IRQ==IRQ3)outportb(0x21,(inportb(0x21))&0xf7);setvect(int_num,new_int);enable();}voidmain(){intt,BA,chip,channel;BA=0x300;chip=0;

channel=5;t=0;clrscr();TOC\o"1-5"\h\zInitializeBoardSettings(BA);/* 设置初始地址 */Master_Reset(chip); /* 重起时初始设置*/WriteData(0xd0b0,MM_Reg,chip);/*主模式寄存器控制字*/Inter_Rece(IRQ7); /* 设置中断子程序 */SetIRQStatus(1); /* 中断使能位置 1*/WriteData(0x0102,COUNTER5_MODE,chip);/*计数模式寄存器控制字*/WriteData(5000,COUNTER5_LOAD,chip);LOAD_COUNTER(channel,chip);ARM(channel,chip);LOAD_COUNTER(channel,chip);ARM(channel,chip);Arm_time=clock();/*设置载入寄存器的初始值*//*设置锁定寄存器的初始值*//*启动计数器计数和报警功能*//*获取系统时间*/while(TRUE){if(flag==1){Time=(Arm_time-Interrupt_time)/clocks_per_sec;/*获取运动时间*/…… /*数据处理过程*/flag=0; /*清中断 */

/*中断位清零*//*关闭中断*//*中断位清零*//*关闭中断*/Close_Rece(IRQ7);}以上就是我们所编写的程序,程序的具体功能是:在计数器开始工作时,记录下系统时间;当码盘的输入信号累计到设定的初始值时,产生中断,再记录一次系统时间,两次时间之差即为机器人的运动时间,由于机器人车轮的转动圈数是可知的,由此可以求得机器人的运动速度。再结合具体情况加以数据处理和分析。二、I/O端口部分的控制程序在得到了机器人的运动情况之后,我们对运动情况加以分析,发出指令控制机器人的下一步运动,这是通过I/O端口的控制来实现的。下面就解释一下I/O端口部分的程序:/* 下面的程序的功能是读、写CDT800的数据I/O:*/#include<dos.h>#include<stdio.h>#include<conio.h>TOC\o"1-5"\h\z#defineINPUT 1#defineOUTPUT 0#definePPI_0 4#definePPI_CTRL 7unsignedBaseAddress;charExitPr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论