lanviewjenkins实时触发构建时间秒触发

时间触发网络的调度方法与实时应用任务研究--《上海交通大学》2015年硕士论文
时间触发网络的调度方法与实时应用任务研究
【摘要】:在过去的几十年间,传统以太网以其高带宽,低成本和实现简单等特点,一直是当前运用最广泛的局域网通信协议。然而,正是由于以太网的这些特点,使其无法支持具有时间特性的任务传输。为了兼容实时性与传统以太网的特性,另一种解决方案被提了出来——时间触发以太网。时间触发以太网在保证实时任务传输确定性的同时,忽略了网络传输中的不确定性。这种不确定性会造成数据包在网络传输中的丢失。本文的研究重点,希望通过调度算法的改进,提高实时任务传输的可靠性,并通过实验进行验证。论文的主要工作和贡献如下:1.通过改变时间触发以太网中交换机(称为时间触发以太网交换机)转发数据包的调度方式,设计了无接收窗口(No Receiving Window,No RW)算法,最早截止时间优先(Earliest Deadline First,EDF)算法,优先级(Priority-Based)算法和安全任务(Safety)算法等调度方法。不同的算法适用于不同的应用场景,从不同角度探讨了提高时间触发以太网中任务传输可靠性的方法。2.自主设计了一个小型的时间触发以太网仿真模型,对上述几种算法的正确性与可实施性进行了验证。采用OPNET仿真技术,实现了时间触发以太网中的端系统、交换机和数据链路模型。3.通过设计实验场景与实验数据,验证了本文提出算法的正确性和有效性,进而找出提高实时任务传输可靠性的方法。时间触发以太网运用于航空航天和汽车自动化领域,具有广阔的发展前景。对于时间触发以太网任务传输可靠性的分析与研究,具有较强的实用性和推广价值。
【关键词】:
【学位授予单位】:上海交通大学【学位级别】:硕士【学位授予年份】:2015【分类号】:TP393.11【目录】:
摘要3-4ABSTRACT4-10第一章 绪论10-20 1.1 研究背景与意义10-11 1.2 国内外的研究现状11-15
1.2.1 国外的研究现状12-14
1.2.2 国内的研究现状14-15 1.3 论文研究的目标与内容15-18 1.4 论文结构安排18-20第二章 时间触发以太网概述20-30 2.1 时间触发以太网体系架构20-25
2.1.1 时间触发以太网体系架构20-24
2.1.2 时间触发以太网特性24-25 2.2 时间触发以太网部件25-28
2.2.1 时间触发以太网交换机25-26
2.2.2 时间触发以太网端系统26-27
2.2.3 网络传输链路27-28 2.3 本章小结28-30第三章 实验平台介绍30-46 3.1 仿真平台工具介绍30-33 3.2 时间触发以太网交换机模型设计与实现33-39
3.2.1 接收控制(receive)功能模块34-36
3.2.2 中央控制器(central control)功能模块36-38
3.2.3 发送控制(send)功能模块38-39 3.3 时间触发以太网端系统模型设计与实现39-41 3.4 总结并验证模型的正确性41-44 3.5 本章小结44-46第四章 时间触发以太网数学建模与实验46-56 4.1 时间触发以太网无冲突调度分析46-48 4.2 问题 1:时间触发以太网端到端时延和丢包率48-51 4.3 方法 1:NoRW调度算法分析51-55
NoRW 1 算法51-52
NoRW 2 算法52-55 4.4 本章小结55-56第五章 提高时间触发以太网的传输可靠性56-68 5.1 EDF(Earliest Deadline First)调度算法分析56-58
5.1.1 问题 2:NoRW算法存在的问题56-57
5.1.2 方法 2:讨论EDF算法对传输可靠性的提高57-58 5.2 优先级调度算法分析58-61
5.2.1 问题 3:EDF存在的问题58
5.2.2 方法 3:优先级算法的解决方案58-61 5.3 安全任务调度算法分析61-64
5.3.1 问题 4:安全任务算法的应用场景61
5.3.2 方法 4:安全任务算法介绍61-63
5.3.3 安全任务算法分析及总结63-64 5.4 补充实验说明64-67 5.5 本章小结67-68第六章 总结68-70 6.1 主要工作和创新68 6.2 研究存在的不足68-70参考文献70-74致谢74-75攻读硕士学位期间已发表或录用的论文75-77
欢迎:、、)
支持CAJ、PDF文件格式
【相似文献】
中国期刊全文数据库
;[J];国内外机电一体化技术;2003年05期
;[J];电信工程技术与标准化;2005年04期
;[J];中国安防产品信息;2006年03期
何能正;董建云;何岸;;[J];光通信技术;2013年09期
王大明,鞠九滨;[J];小型微型计算机系统;1988年10期
何轩;夏应清;李祥;付晓军;占林松;;[J];微电子学与计算机;2005年12期
习博方,彦军;[J];微计算机信息;2005年02期
黄斌;柳杨;;[J];数码世界;2006年02期
;[J];单片机与嵌入式系统应用;2007年12期
李晓明;吕锰;;[J];齐齐哈尔大学学报;2008年02期
中国重要会议论文全文数据库
龚雪春;;[A];2003中国通信专用集成电路技术及产业发展研讨会论文集[C];2003年
倪少强;綦慧;;[A];第八届工业仪表与自动化学术会议论文集[C];2007年
付衍荣;房颖;;[A];2009年通信理论与信号处理学术年会论文集[C];2009年
刘明泉;姜波;何培重;;[A];第八届全国信息获取与处理学术会议论文集[C];2010年
张东来;常春;;[A];首届信息获取与处理学术会议论文集[C];2003年
杨佳佳;张崇巍;;[A];第十七届全国测控计量仪器仪表学术年会(MCMI'2007)论文集(上册)[C];2007年
黄静雯;梁畅;;[A];2006中国控制与决策学术年会论文集[C];2006年
张东来;常春;;[A];全面建设小康社会:中国科技工作者的历史责任——中国科协2003年学术年会论文集(上)[C];2003年
胡俊;王小明;;[A];05'中国自动化产业高峰会议暨中国企业自动化和信息化建设论坛论文集[C];2005年
杨德伟;王华;;[A];2005年海峡两岸三地无线科技学术会论文集[C];2005年
中国重要报纸全文数据库
;[N];网络世界;2014年
闫冰;[N];网络世界;2006年
;[N];网络世界;2010年
;[N];网络世界;2008年
;[N];人民邮电;2005年
;[N];网络世界;2002年
陈翔;[N];中国计算机报;2003年
网译;[N];计算机世界;2001年
电子科技大学
王祎磊;[N];电子报;2004年
张建铭;[N];网络世界;2003年
中国硕士学位论文全文数据库
侯明江;[D];山东大学;2015年
姜兴家;[D];电子科技大学;2014年
查文静;[D];上海交通大学;2015年
胡锦;[D];浙江大学;2004年
亢俊红;[D];大连理工大学;2006年
袁霏;[D];南京理工大学;2014年
李明剑;[D];大连理工大学;2013年
徐兵;[D];南京理工大学;2005年
李美青;[D];西南交通大学;2011年
付凯;[D];浙江大学;2007年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号时间触发AFDX调度策略设计与实时性分析--《山东农业大学学报(自然科学版)》2016年01期
时间触发AFDX调度策略设计与实时性分析
【摘要】:为了解决航空电子全双工交换式以太网(AFDX,Avionics Full Duplex Switched Ethernet)时间关键消息传输的确定性问题,本文提出一种时间触发AFDX(Time-Triggered AFDX,TTAFDX)网络的体系结构,同时设计了基于周期优先的端系统时间触发虚拟链路调度算法。通过网络演算方法对比了TTAFDX与采用FIFO调度算法的AFDX网络的实时性能。计算结果表明:TTAFDX中的时间触发虚拟链路的延迟主要由固定延迟部分组成,而且速率限制虚拟链路的实时性也较AFDX有所提高。证明了TTAFDX体系结构和调度算法在兼容AFDX的同时能够改善网络的时间确定性,并适用于具有硬实时传输要求的航空电子系统。
【作者单位】:
【关键词】:
【分类号】:TP393.11【正文快照】:
AFDX[1]作为应用于空客A380和波音B787上的新一代航空电子网络,具有全双工、高速率、双冗余、易扩展等优点[2],但当多任务传输时可能产生的竞争链路共享冲突,仍会影响数据传输的实时性和通信系统的时间确定性。对于时间关键消息,其在AFDX网络中的传输时延及时延抖动的确定性界
欢迎:、、)
支持CAJ、PDF文件格式,仅支持PDF格式
【相似文献】
中国期刊全文数据库
王征应,石冰心,马涛;[J];通信学报;2001年02期
伊鹏,靳毓国,张效辉,郭云飞;[J];计算机工程与应用;2003年24期
黄卫东;[J];南京邮电学院学报;2003年04期
高文宇,陈松乔,王建新;[J];计算机应用与软件;2005年06期
曹理宇;杨格兰;何建新;;[J];湖南工程学院学报(自然科学版);2007年04期
张磊;王毅;;[J];河海大学学报(自然科学版);2008年02期
周道兵;肖国强;;[J];西南师范大学学报(自然科学版);2006年01期
赵卫星;李秋;王秀欣;;[J];中国科技信息;2008年16期
张伟,刘衍珩,余雪岗,谢阿涟;[J];吉林大学学报(信息科学版);2005年02期
李文杰,刘斌;[J];电子学报;2005年04期
中国重要会议论文全文数据库
周春月;张宏科;;[A];2005通信理论与技术新进展——第十届全国青年通信学术会议论文集[C];2005年
王璐璐;张素伟;任颉;;[A];先进制造技术论坛暨第三届制造业自动化与信息化技术交流会论文集[C];2004年
何翔;何军;李奇;;[A];2008'中国信息技术与应用学术论坛论文集(二)[C];2008年
张伟哲;刘欣然;云晓春;张宏莉;胡铭曾;刘凯鹏;;[A];全国网络与信息安全技术研讨会'2005论文集(上册)[C];2005年
&快捷付款方式
&订购知网充值卡
400-819-9993
《中国学术期刊(光盘版)》电子杂志社有限公司
同方知网数字出版技术股份有限公司
地址:北京清华大学 84-48信箱 大众知识服务
出版物经营许可证 新出发京批字第直0595号
订购热线:400-819-82499
服务热线:010--
在线咨询:
传真:010-
京公网安备75号28335 PWM触发AD采样,转换时间太长了,是怎么回事? - C2000(TM) 32位实时 MCU - 德州仪器在线技术支持社区
28335 PWM触发AD采样,转换时间太长了,是怎么回事?
发表于1年前
<input type="hidden" id="hGroupID" value="38"
用的28335,,CCS5.5。&/p>
&p>用PWM触发ADC采样,ADC用的查询方式,没有开AD中断。在PWM计数到达峰值的时候启动ADC,PWM中断是在计数到0的时候产生的,采用增减计数。&/p>
&p>这种方式用示波器观察&span style=&color:#ff0000;&>从进PWM中断,到&/span>&span>&span style=&color:#ff0000;&>while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}这句话运行完,用了44us&/span>,整个中断才50us。ADC的时钟频率是12.5MHz。&/span>&/p>
&p>&span>如果不用PWM触发ADC,而采用进中断后人为启动ADC:&/span>&/p>
&p>AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1&br> AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // Start SEQ1&br> while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}&&br> AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;&/p>
&p>则上面四行程序用时才&span style=&color:#ff0000;&>13us&/span>。&/p>
&p>按理说人为启动ADC,要比PWM启动ADC,用的时间更长,毕竟PWM启动ADC后,要25us的时间后才进的PWM中断。&/p>
&p>不知道哪边出现了问题,希望大家给分析下,非常感谢!&/p>
&p>interrupt void Epwm1_isr() &br>{&br>& & & &span style=&color:#ff0000;font-size:&>&while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}&/span>&br> & & & &AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1&br> & & & &AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;&br> & & & &ADC_Read();&/p>
&p>& & & &PieCtrlRegs.PIEACK.bit.ACK3= 1;&br> & & & &EPwm1Regs.ETCLR.bit.INT = 1;&/p>
&p>void ConfigADC()&br>{&br> // Specific ADC setup for this example:&br> AdcRegs.ADCTRL1.bit.ACQ_PS = 0 //设置采样窗的大小&br> AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x1; //核心时钟分频,见手册&br> AdcRegs.ADCTRL1.bit.CPS = 0x0; //内核时钟定标,用于分频HSPCLK。&br> AdcRegs.ADCTRL1.bit.CONT_RUN = 0x0; //连续运行位。【0,启动停止模式】&br> AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0x0; //排序器覆盖位。【0,禁止】&br> AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; //级联排序器选择位。【1,级联运行模式】&/p>
&p>AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0x0; //SEQ1中断模式位。【0,每一个SEQ1序列结束时设置INT_SEQ1】&br> AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1= 0x1; //SEQ1的ePWM SOCA使能位。【0,不允许ePWM SOCA启疭EQ1】【1,允许】&br> AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1 = 0x0; //SEQ1的外部SOC信号位。【0,禁止外部信号】&br> AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ = 0x0; //级联排序器ePWM SOCB使能位。【0,禁止】&br> AdcRegs.ADCTRL3.bit.SMODE_SEL = 0x0; //采样模式位选择。【0,顺序采样模式】&/p>
&p>AdcRegs.ADCMAXCONV.all = 8; //定义一次自动转换可使用的最大转换器数:x+1次&/p>
&p>AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // ADCINA0 -& ACBUS.V &br> AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 6; // ADCINA6 -& DCBUS.V &br> AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 8; // ADCINB0 -& GRID.V &br> AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 7; // ADCINA7 -& Capa.V1 &br> AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 5; // ADCINA5 -& Capa.V2&br> AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 2; // ADCINA2 -& OutputCurr.V1&br> AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 1; // ADCINA1 -& OutputCurr.V2&br> AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 3; // ADCINA3 -& InduCurr.V1 &br> AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 4; // ADCINA4 -& InduCurr.V2&/p>
&p>AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x0; //SEQ1中断使能位。【0,禁止向CPU提出中断请求】&br> AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1&br>}&/p>
&p>void ConfigEPwm1()&br>{ &br> //时间基准子模块寄存器初始化&br> EPwm1Regs.TBPRD = 3750; // PWM周期设置,单增单减T=(PWM1_PRD+1)*T_BCLK,增减模式T=2*PWM1_PRD*T_BCLK &br> EPwm1Regs.TBPHS.half.TBPHS = 0; // 相位寄存器&br> EPwm1Regs.TBCTR = 0; // 时间基准计数器值:清零&br> // 设置TBCLK&br> EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //计数模式:增减计数&br> EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 相位寄存器加载:禁止&br> EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 周期寄存器加载方式:同步加载&&br> //EPwm1Regs.TBCTL.bit.SWFSYNC = 1;&br> EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 同步输出选中选择归零&&br> EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时间基准时钟预分频&br> EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时间基准预分频:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV) &br> EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; // 增减模式同步后计数方向:向上 //【TB_UP 向上】【TB_DOWN 向下】&br> EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x3; // 仿真位模式,自由运行&/p>
&p>//计数比较子模块寄存器初始化&br> EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 寄存器映射方式:使能映射 //【CC_SHADOW 映射使能】【CC_IMMEDIAT 异步修改】&br> EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; // 寄存器映射方式:使能映射 //【CC_SHADOW 映射使能】【CC_IMMEDIAT 异步修改】&br> EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD; // 映射装载方式:零装载\PRD装载 //【CC_CTR_ZERO计数器归零时装载】【CC_CTR_PRD计数器等于周谑弊霸亍俊綜C_CTR_ZERO_PRD 等于0或等于周期时装载】【CC_LD_DISABLE冻结】&br> EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD; // 映射装载方式:零装载\PRD装载&&br> EPwm1Regs.CMPA.half.CMPA = 1875;&br> EPwm1Regs.CMPB = 1875;&/p>
&p>//动作限定子模块寄存器初始化【AQ_NO_ACTION 无动作】【AQ_CLEAR 拉低】【AQ_SET 拉高】【AQ_TOGGLE 翻转】&br> //PWM1A动作限定控制&br> EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; //=CMPA 且 递增&br> EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; //=CMPA 且 递减&br> EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION; //=CMPB 且 递增&br> EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION; //=CMPB 且 递减&br> EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION; //=PRD&br> EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION; //=0&/p>
&p>EPwm1Regs.AQCTLB.bit.CAU = AQ_NO_ACTION; //=CMPA 且 递增&br> EPwm1Regs.AQCTLB.bit.CAD = AQ_NO_ACTION; //=CMPA 且 递减&br> EPwm1Regs.AQCTLB.bit.CBU = AQ_NO_ACTION; //=CMPB 且 递增&br> EPwm1Regs.AQCTLB.bit.CBD = AQ_NO_ACTION; //=CMPB 且 递减&br> EPwm1Regs.AQCTLB.bit.PRD = AQ_NO_ACTION; //=PRD&br> EPwm1Regs.AQCTLB.bit.ZRO = AQ_NO_ACTION; //=0&/p>
&p>//死区发生器子模块寄存器初始化&br> EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; //死区控制输出模式:全使能。&br> EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //极性选择控制:主低互补模式。&br> EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; //死区输入模式控制&br> EPwm1Regs.DBRED = EPWM_DB; //上升沿延迟&br> EPwm1Regs.DBFED = EPWM_DB; //下降沿延迟&/p>
&p>//错误控制子模块寄存器初始化&br> EPwm1Regs.TZSEL.all = TZ_DISABLE; //禁止所有错误源,即不使用此模块&br> //--其它设置查阅手册--//&/p>
&p>//事件触发器子模块寄存器初始化&br> EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // ePWM中断选项:事件TBCTR==0&br> EPwm1Regs.ETSEL.bit.INTEN = 1; // ePWM中断使能:使能【1使能,0禁止】&br> EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // 在第一个事件发生时产生中断&/p>
&p>//设置epwm启动ADC&br> EPwm1Regs.ETSEL.bit.SOCAEN=1; //使能ePWMxSCOA脉冲&br> EPwm1Regs.ETSEL.bit.SOCASEL=ET_CTR_PRD; //若计数器等于PRD则启动ADC&br> EPwm1Regs.ETPS.bit.SOCAPRD=ET_1ST; //在第一个事件发生时生成ePWMxSOCA脉冲&/p>
&p>//PWM斩波器子模块寄存器及高精度扩展寄存器初始化&br> EPwm1Regs.PCCTL.bit.CHPEN = CHP_DISABLE; //禁用此模块&br> //--其它设置查阅手册--//&/p>
&p>&br>}&/p>&div style=&clear:&>&/div>" />
28335 PWM触发AD采样,转换时间太长了,是怎么回事?
此问题尚无答案
All Replies
用的28335,,CCS5.5。
用PWM触发ADC采样,ADC用的查询方式,没有开AD中断。在PWM计数到达峰值的时候启动ADC,PWM中断是在计数到0的时候产生的,采用增减计数。
这种方式用示波器观察从进PWM中断,到while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}这句话运行完,用了44us,整个中断才50us。ADC的时钟频率是12.5MHz。
如果不用PWM触发ADC,而采用进中断后人为启动ADC:
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1 AdcRegs.ADCTRL2.bit.SOC_SEQ1 = 1; // Start SEQ1 while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {}& AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
则上面四行程序用时才13us。
按理说人为启动ADC,要比PWM启动ADC,用的时间更长,毕竟PWM启动ADC后,要25us的时间后才进的PWM中断。
不知道哪边出现了问题,希望大家给分析下,非常感谢!
interrupt void Epwm1_isr() {& & & &while (AdcRegs.ADCST.bit.INT_SEQ1== 0) {} & & & &AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1 & & & &AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1; & & & &ADC_Read();
& & & &PieCtrlRegs.PIEACK.bit.ACK3= 1; & & & &EPwm1Regs.ETCLR.bit.INT = 1;
void ConfigADC(){ // Specific ADC setup for this example: AdcRegs.ADCTRL1.bit.ACQ_PS = 0 //设置采样窗的大小 AdcRegs.ADCTRL3.bit.ADCCLKPS = 0x1; //核心时钟分频,见手册 AdcRegs.ADCTRL1.bit.CPS = 0x0; //内核时钟定标,用于分频HSPCLK。 AdcRegs.ADCTRL1.bit.CONT_RUN = 0x0; //连续运行位。【0,启动停止模式】 AdcRegs.ADCTRL1.bit.SEQ_OVRD = 0x0; //排序器覆盖位。【0,禁止】 AdcRegs.ADCTRL1.bit.SEQ_CASC = 1; //级联排序器选择位。【1,级联运行模式】
AdcRegs.ADCTRL2.bit.INT_MOD_SEQ1 = 0x0; //SEQ1中断模式位。【0,每一个SEQ1序列结束时设置INT_SEQ1】 AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1= 0x1; //SEQ1的ePWM SOCA使能位。【0,不允许ePWM SOCA启疭EQ1】【1,允许】 AdcRegs.ADCTRL2.bit.EXT_SOC_SEQ1 = 0x0; //SEQ1的外部SOC信号位。【0,禁止外部信号】 AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ = 0x0; //级联排序器ePWM SOCB使能位。【0,禁止】 AdcRegs.ADCTRL3.bit.SMODE_SEL = 0x0; //采样模式位选择。【0,顺序采样模式】
AdcRegs.ADCMAXCONV.all = 8; //定义一次自动转换可使用的最大转换器数:x+1次
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0; // ADCINA0 -& ACBUS.V
AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 6; // ADCINA6 -& DCBUS.V
AdcRegs.ADCCHSELSEQ1.bit.CONV02 = 8; // ADCINB0 -& GRID.V
AdcRegs.ADCCHSELSEQ1.bit.CONV03 = 7; // ADCINA7 -& Capa.V1
AdcRegs.ADCCHSELSEQ2.bit.CONV04 = 5; // ADCINA5 -& Capa.V2 AdcRegs.ADCCHSELSEQ2.bit.CONV05 = 2; // ADCINA2 -& OutputCurr.V1 AdcRegs.ADCCHSELSEQ2.bit.CONV06 = 1; // ADCINA1 -& OutputCurr.V2 AdcRegs.ADCCHSELSEQ2.bit.CONV07 = 3; // ADCINA3 -& InduCurr.V1
AdcRegs.ADCCHSELSEQ3.bit.CONV08 = 4; // ADCINA4 -& InduCurr.V2
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 0x0; //SEQ1中断使能位。【0,禁止向CPU提出中断请求】 AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1; // Reset SEQ1}
void ConfigEPwm1(){
//时间基准子模块寄存器初始化 EPwm1Regs.TBPRD = 3750; // PWM周期设置,单增单减T=(PWM1_PRD+1)*T_BCLK,增减模式T=2*PWM1_PRD*T_BCLK
EPwm1Regs.TBPHS.half.TBPHS = 0; // 相位寄存器 EPwm1Regs.TBCTR = 0; // 时间基准计数器值:清零 // 设置TBCLK EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; //计数模式:增减计数 EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // 相位寄存器加载:禁止 EPwm1Regs.TBCTL.bit.PRDLD = TB_SHADOW; // 周期寄存器加载方式:同步加载& //EPwm1Regs.TBCTL.bit.SWFSYNC = 1; EPwm1Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO; // 同步输出选中选择归零& EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // 高速时间基准时钟预分频 EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV1; // 时间基准预分频:TBCLK=SYSCLKOUT/(HSPCLKDIV*CLKDIV)
EPwm1Regs.TBCTL.bit.PHSDIR = TB_UP; // 增减模式同步后计数方向:向上 //【TB_UP 向上】【TB_DOWN 向下】 EPwm1Regs.TBCTL.bit.FREE_SOFT = 0x3; // 仿真位模式,自由运行
//计数比较子模块寄存器初始化 EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // 寄存器映射方式:使能映射 //【CC_SHADOW 映射使能】【CC_IMMEDIAT 异步修改】 EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW; // 寄存器映射方式:使能映射 //【CC_SHADOW 映射使能】【CC_IMMEDIAT 异步修改】 EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD; // 映射装载方式:零装载\PRD装载 //【CC_CTR_ZERO计数器归零时装载】【CC_CTR_PRD计数器等于周谑弊霸亍俊綜C_CTR_ZERO_PRD 等于0或等于周期时装载】【CC_LD_DISABLE冻结】 EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO_PRD; // 映射装载方式:零装载\PRD装载& EPwm1Regs.CMPA.half.CMPA = 1875; EPwm1Regs.CMPB = 1875;
//动作限定子模块寄存器初始化【AQ_NO_ACTION 无动作】【AQ_CLEAR 拉低】【AQ_SET 拉高】【AQ_TOGGLE 翻转】 //PWM1A动作限定控制 EPwm1Regs.AQCTLA.bit.CAU = AQ_CLEAR; //=CMPA 且 递增 EPwm1Regs.AQCTLA.bit.CAD = AQ_SET; //=CMPA 且 递减 EPwm1Regs.AQCTLA.bit.CBU = AQ_NO_ACTION; //=CMPB 且 递增 EPwm1Regs.AQCTLA.bit.CBD = AQ_NO_ACTION; //=CMPB 且 递减 EPwm1Regs.AQCTLA.bit.PRD = AQ_NO_ACTION; //=PRD EPwm1Regs.AQCTLA.bit.ZRO = AQ_NO_ACTION; //=0
EPwm1Regs.AQCTLB.bit.CAU = AQ_NO_ACTION; //=CMPA 且 递增 EPwm1Regs.AQCTLB.bit.CAD = AQ_NO_ACTION; //=CMPA 且 递减 EPwm1Regs.AQCTLB.bit.CBU = AQ_NO_ACTION; //=CMPB 且 递增 EPwm1Regs.AQCTLB.bit.CBD = AQ_NO_ACTION; //=CMPB 且 递减 EPwm1Regs.AQCTLB.bit.PRD = AQ_NO_ACTION; //=PRD EPwm1Regs.AQCTLB.bit.ZRO = AQ_NO_ACTION; //=0
//死区发生器子模块寄存器初始化 EPwm1Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE; //死区控制输出模式:全使能。 EPwm1Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC; //极性选择控制:主低互补模式。 EPwm1Regs.DBCTL.bit.IN_MODE = DBA_ALL; //死区输入模式控制 EPwm1Regs.DBRED = EPWM_DB; //上升沿延迟 EPwm1Regs.DBFED = EPWM_DB; //下降沿延迟
//错误控制子模块寄存器初始化 EPwm1Regs.TZSEL.all = TZ_DISABLE; //禁止所有错误源,即不使用此模块 //--其它设置查阅手册--//
//事件触发器子模块寄存器初始化 EPwm1Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO; // ePWM中断选项:事件TBCTR==0 EPwm1Regs.ETSEL.bit.INTEN = 1; // ePWM中断使能:使能【1使能,0禁止】 EPwm1Regs.ETPS.bit.INTPRD = ET_1ST; // 在第一个事件发生时产生中断
//设置epwm启动ADC EPwm1Regs.ETSEL.bit.SOCAEN=1; //使能ePWMxSCOA脉冲 EPwm1Regs.ETSEL.bit.SOCASEL=ET_CTR_PRD; //若计数器等于PRD则启动ADC EPwm1Regs.ETPS.bit.SOCAPRD=ET_1ST; //在第一个事件发生时生成ePWMxSOCA脉冲
//PWM斩波器子模块寄存器及高精度扩展寄存器初始化 EPwm1Regs.PCCTL.bit.CHPEN = CHP_DISABLE; //禁用此模块 //--其它设置查阅手册--//
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元32611分
ADC启动后转化多路是比较耗时的 & &&
建议你选用并行转化试试 & & ADC应该会节约一般的时间
TI的忠诚粉丝!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
PWM触发ADC启动时间是很快的,不知道你怎么用示波器测试时间的,可以用CCS自带的测试时间功能测一下那句语句运行所需的时间,确认一下,排除一下是否有其他中断程序打扰;
You have posted to a forum that requires a moderator to approve posts before they are publicly available.}

我要回帖

更多关于 飞机到达时间实时查询 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信