dsp2812 pmsm foc之EVA初始化详解
EALLOW; //访问带有protected的地址时需要在前面加这一句EvaRegs.GPTCONA.all = 0x0; /* 通用定时器全局控制寄存器 */EvaRegs.T1PR =3750; //定时器1周期寄存器 开关频率20KHz?,((1/10KHz)/13.33333ns=3750 想要得到的是20khz的开关频率,按公式就是算出T1PR的值T1Period=EvaRegs.T1PR; //将定时器1周期值赋给 T1Period EvaRegs.T1CNT = 0x0000; //从0开始计数。EvaRegs.T1CON.all = 0x0840; //0x0840=0000 1000 0100 0000 定时器比较寄存器重载条件是当计数器值0的时候重载,禁止定时器比较操作//使用内部高速时钟HSPLCK,定时器使能,输入时钟预定标因子:x/1,连续增/减计数模式,仿真挂起立即停止EvaRegs.CAPCONA.all=0x8004; //捕获单元控制寄存器0x8004=1000 0000 0000 0100 捕获单元3检测上升沿 捕获单元2不检测 捕获单元1不检测 捕获单元3不启动adc 捕获单元 //2的定时器是定时器2 捕获单元3的定时器是定时2, 捕获3禁止捕获 捕获12都禁止捕获 无动作,总而言之eva不做捕获TotalPulse=_IQmpy(_IQ(4),LineEncoder); //_iq LineEncoder=_IQ(2500); 4*2的15次方乘以2500乘以2的15次方除以2的15次方。设置电机的增量式光电编码器线数EvaRegs.T2PR = (Uint16)(TotalPulse>>15); //4*2的15次方乘以2500除以2的15次方=10000EvaRegs.T2CNT = 0; //从0开始计数。EvaRegs.T2CON.all = 0x1874; //0x1874=0001 1000 0111 0100 选用T2PR作为定时器2的周期寄存器,禁止定时器比较操作,当计数器值为0或等于周期寄存器值是定时器比较寄存器重载//时钟源选择QEP电路,使能定时器操作,使能自己的使能位,时钟预定标x/1,定向增/减计数(计数过程中计数方向可以改变,方向由TDIRA决定),仿真挂起立即停止EvaRegs.CMPR1 = 1000; //占空比26.7%EvaRegs.CMPR2 = 1000; //占空比26.7%EvaRegs.CMPR3 = 1000; //占空比26.7%EvaRegs.GPTCONA.bit.T1TOADC = 1; // 由EVA的下溢中断标志触发 下溢中断启动ADC 比如说计数器减到0,再从0xff开始减这就是下溢。EvaRegs.DBTCONA.all = 0x09f4; /* 死区时间3.8us */ DBTCONA死区定时器控制寄存器A 0x09f4=0000 1001 1111 0100 死区定时器预定标因子 x/32=75MHZ/32=2.34375MHZ,死区定时器123使能,死区定时 //器周期为10,t=1/2.34375*9=3.84usEvaRegs.EVAIMRA.all = 0x0200; /* 开定时器下溢中断 */EVAIMRA是EVA中断屏蔽寄存器0x0200=0000 0010 0000 0000 定时器1下溢中断使能。EvaRegs.COMCONA.all =0x8200; //0x8200=1000 0010 0000 0000 禁止全比较器123比较输出,输出为高组态,//禁止硬件空间向量PWM模式,全比较器输出使能,方式控制寄存器ACTRA载条件为下溢中断EvaRegs.CAPCONA.all= 0x9004; //0x9004= 1001 0000 0000 0100 捕获单元3检测上升沿 捕获单元12不检测 捕获单元3无操作,捕获单元2的定时器是定时器2 捕获单元3的定时器是定时2,使能捕获3//禁止捕获单元12捕获 EvaRegs.EVAIFRC.bit.CAP3INT=1; //清除cap3中断标志 EvaRegs.EVAIMRC.bit.CAP3INT=1; //使能cap3中断//#if GLOBAL_Q == 15
//#define _IQ(A) _IQ15(A) 所有的_iq默认为15这是系统里定义的。
//系统高速时钟是75Mhz 定时器时钟是75Mhz
dsp2812 pmsm foc之EVA初始化详解相关推荐
- 初始化模型参数 python_pytorch 网络参数 weight bias 初始化详解_python_脚本之家
权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生. 在pytorch的使用过程中有几种权重初始化的方法供大家参考. 注意:第一种方法不推荐.尽量使用后两种方法. # ...
- go结构体初始化_go嵌套匿名结构体的初始化详解
go匿名结构体 嵌套匿名结构体的 示例代码片. type debugConfig struct { MaxQueueDepth int `json:"maxQueueDepth"` ...
- RT1064学习笔记__函数初始化详解
函数详解 一. systick_delay_ms() 毫秒级延时函数 二.zf_gpio.c函数 ① gpio_init() GPIO初始化 ② gpio_set() GPIO输出设置 ③ gpio_ ...
- App启动时Application初始化详解
参考博文: http://www.jianshu.com/p/6037f6fda285 App的ActivityThread与Application详解 一个App的程序入口到底是什么? 是Activ ...
- 十一、CSS初始化详解
CSS初始化 不同浏览器对有些标签的默认值是不同的,为了消除不同浏览器对HTML文本呈现的差异,照顾浏览器的兼容性,我们需要对CSS初始化. 简单理解:CSS初始化是指重设浏览器的样式.(也称为CSS ...
- php语言指针的初始化定义,指针变量的初始化,C语言指针变量初始化详解
本节来解决如何给一个指针变量初始化.即怎样使一个指针变量指向另一个变量. 前面章节中的某些程序实际上已经使用了,即可以用赋值语句使一个指针变量得到另一个变量的地址,从而使它指向该变量.比如: int ...
- Java对象初始化详解
在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...
- c语言中整型数组如何初始化,C语言数组空间的初始化详解
数组空间的初始化就是为每一个标签地址赋值.按照标签逐一处理.如果我们需要为每一个内存赋值,假如有一个int a[100];我们就需要用下标为100个int类型的空间赋值.这样的工作量是非常大的,我们就 ...
- java类型的数组初始化_java数组初始化详解
介绍 学习Java的朋友想必对数组并不陌生,它需要使用之前对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使 ...
- java 初始化object_Java对象初始化详解
出处:http://blog.jobbole.com/23939/ 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个 ...
最新文章
- JPA_could not extract ResultSet问题解决
- jQuery中 index() 方法的使用
- VS2005(C#)里读取及改变App.config里appSettings节的值
- 非985/211学校的毕业生,进大厂的机率有多大?
- 酷盘API C# 测试版
- 博客linux系统下载器,linux的下载工具
- 计算机丢失gdiplus.dll怎么办,win7系统丢失gdiplus.dll报错的解决办法
- JavaScript编写的《人生不纠结模拟器》
- java反编译luyten使用
- PMP知识点总结—合同类型
- 银行数据仓库体系实践(15)--数据应用之巴塞尔新资本协议
- 【高老师UML软件建模基础】20级云班课习题答案合集
- Unity EasyAR3.0 案例解析(一) ------ HelloAR_Coloring3D(涂涂乐)
- 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)
- Android 线程4件套 MessageQueue Message Looper Handler之MessageQueue
- 解决电脑速度慢的问题
- 用两个栈实现最小栈的功能
- python可视化 Task04 文字图例尽眉目
- 杀鸡用用牛刀 scrapy框架爬取豆瓣电影top250信息
- [AHK]让当前脚本开机自动启动