simulink代码生成(六)——中断向量模块的配置

news/2024/5/20 13:09:03 标签: 中断, simulink, 电机控制, 代码生成, dsp28335

假如系统中存在多个中断,需要合理的配置中断的优先级与中断向量表;在代码生成中,要与中断向量表对应;中断相关的知识参照博客:

DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客

F28335中断系统及其应用————DSP TMS320F28335 学习笔记 (二)_dsp f28335 中断跳出循环后如何回到循环-CSDN博客

1、dsp28335三级中断机制

由于外设中断源有58个,而中断线只有12根,这就需要F28335的外设中断扩展模块PIE来进行分配。DSP的外设中断扩展模块结构图如下图所示,F28335的中断采用的3级中断机制,第一级是CPU中断、第二级为PIE级中断、第三级为外设级中断。至于为什么这么设计:由于DSP内部集成了多种外设,每个外设都会产生一个或者多个外设级中断,但是由于CPU中断线有限无法处理所有的外设级中断,因此只能让出12根中断线交给PIE模块进行管理,将所有的外设中断分为了12组,并通过寄存器进行管理。而要实现一次中断响应,通过对下图分析可知,外设级中断要得到CPU的响应需要同时满足两个条件。:1、得到PIE模块的允许由PIE模块的:PIEIER和PIEIFR寄存器控制分配,由PIEACK控制使能),2、得到CPU的允许由CPU中断的:IFR和IER寄存器控制分批额,由INTM控制使能)

2、中断向量表

前4:

后4:

3 、Simulink中的配置

模块截图

模块设置;

例如常用的ADC中断的配置;ADC中断的PIE级中断号是1,ADC中断的CPU级中断号也是1;因此都设置为1;

4、Simulink中多级中断的配置

当需要配置多个中断的时候;就需要设置中断向量表,假如我们需要串口接收中断+ADC中断,优先级 ADC > 串口接收中断,配置则如下图所示;

配置如下所示:目前优先级就按照中断向量表来的,CPU的中断优先级是由高到低是INT1~INT12,PIE的中断优先级由高到低是INTx.1~INTx.8

5、如何验证中断时间?

配置完成后,关键是要验证各级中断的触发是否符合设计;例如执行控制算法的中断周期必须与PWM的载波周期完全一致,假如无法一致,系统将会失控,这个点必须检查;

步骤一:算法中加入一个计数器,count = count + 1,加到100000归零;

步骤二:代码生成后,下载至控制板,在expression窗口观测该变量的变化,右键该变量,点击graph,选择实时更新;根据下图测试结果可知,此时中断累加到100000所需要的时间是10s(CCS的grash窗口采样周期设为500ms)中断周期 = 20/100000 = 200us,中断频率为50kHz;

步骤三:若与设计不对应,检查系统时钟、ePWM模块比较值、ADC时钟等;

以下列步骤为例:

(1)检查系统时钟,系统时钟、低速时钟和高速时钟均为150MHz;

(2)检查ADC时钟,ADC时钟为25MHz,为采样模块最大时钟频率;

(3)检查ePWM模块设置和ADC模块设置;

首先是ADC模块选择ePWM作为触发转换源头,并选择Post interrupt at the end of conversion

然后是ePWM模块;

TPRD的值和Counting mode共同决定了载波的周期,在Up-Down模式载波周期 = (2*TPRD)/ePWM时钟 ;而 ePWM时钟 = 系统时钟SYSCLK / (TBCLKDIV * HSPCLKDIV) ,按照当前的设置,PWM周期为 2*7500/150000000 = 100us;

(4)以上均为计算时间,但是实际应用过程中,假如中断算法模块中嵌入了其他的模块,中断时间将受到影响。

例如在中断执行模块中假如和QEP和SCI模块,累加100000所需时间如下图所示,(125-55)*0.5 = 35s。

假如只保存SCI模块,则累加到100000的时间如下图所示;(130-60)*0.5 = 35s,这是不符合设计的。

假如只保存QEP模块,则累加到100000的时间如下图所示;(76-56)*0.5 = 10s,这是符合设计的。

假如不加任何其他模块在中断执行模块中,则累加到100000的时间如下图所示,(78-58)*0.5 = 10s,这是符合设计的。

小结:

1、F28335的中断采用的3级中断机制,第一级是CPU中断、第二级为PIE级中断、第三级为外设级中断

2、PU的中断优先级是由高到低是INT1~INT12,PIE的中断优先级由高到低是INTx.1~INTx.8

3、例如执行控制算法的中断周期必须与PWM的载波周期完全一致,假如无法一致,系统将会失控;

4、假如中断算法模块中嵌入了其他的模块,中断时间将受到影响。添加模块后需要验证;


http://www.niftyadmin.cn/n/5308381.html

相关文章

OpenCV-17制作LOGO小练习

在编写代码之前我们需要理清思路: 1.引入图片 2.设计一个LOGO的图片 3. 规划一下LOGO希望放在那个位置,在添加的位置变为黑色 4. 利用add方法,将logo和图片叠加在一起 import cv2 import numpy as np# 导入图片 dog cv2.imread("d…

3d全景怎么拍摄?应用领域有哪些?

3d全景技术是综合了VR技术和全景拍摄的一种新型应用技术,通过3D全景技术可以为用户带来720度无死角的观看方式和真实的观看体验,那么3d全景是怎么拍摄制作的呢?应用领域又有哪些呢? 3d全景拍摄制作流程其实不难,常见的…

Node.js中的模块,常用模块具体代码示例

核心模块:https://blog.csdn.net/kkkys_kkk/article/details/135409851?spm1001.2014.3001.5501 目录 第三方模块 代码示例 Express示例 Lodash示例 MongoDB示例 Async示例 Request示例 发送GET 发送POST请求 自定义模块 创建步骤 常见示例 导出一个函数&a…

UE5 给自己的数字人重定向Mixamo动画

1 、准备动画骨格文件,动画文件,下面是Mixamo动画素材下载网站Mixamo动画骨格文件下载网站https://www.mixamo.com/2、下载动画骨格文件,打Mixamo网站,选择Characters骨格菜单,在下面找到对应的骨格。如下图所示&#…

npm指令

1、npm install express:安装Node模块 安装完毕后会产生一个node_modules目录,其目录下就是安装的各个node模块。 2、npm view express:查看node模块的package.json文件夹 注意事项:如果想要查看package.json文件夹下某个标签的…

Guava:Throwables 异常工具

Guava Throwables 类 Throwable 类&#xff0c;简化异常和错误的传播与检查 类方法说明 官方文档&#xff1a;Throwables (Guava: Google Core Libraries for Java 27.0.1-jre API) 方法类型方法描述static List<Throwable>getCausalChain(Throwable throwable) 获取…

了解并使用django-rest-framework-jwt

一 JWT认证 在用户注册或登录后&#xff0c;我们想记录用户的登录状态&#xff0c;或者为用户创建身份认证的凭证。我们不再使用Session认证机制&#xff0c;而使用Json Web Token&#xff08;本质就是token&#xff09;认证机制。 Json web token (JWT), 是为了在网络应用环…

深入浅出 Zookeeper 中的 ZAB 协议

本文主要内容如下&#xff1a; ZAB 协议的全称是 Zookeeper Atomic Broadcase&#xff0c;原子广播协议。 作用&#xff1a;通过这个 ZAB 协议可以进行集群间主备节点的数据同步&#xff0c;保证数据的一致性。 在讲解 ZAB 协议之前&#xff0c;我们必须要了解 Zookeeper 的各…