如果去除AD中断,一切别的中断都正常;还有,我们的AD中断都是下载在FLAH,在RAM里面运行。
如果去除AD中断,一切别的中断都正常;还有,我们的AD中断都是下载在FLAH,在RAM里面运行。
我是在epwm的中断里面读取EPwm1Regs.CMPA.half.CMPA和EPwm1Regs.TBCTR的值,然后输出DA用示波器观察,代码如下(中断里面):
comp=EPwm1Regs.CMPA.half.CMPA;
counter11=EPwm1Regs.TBCTR;
DA0= comp/15000;
if(DA0>=0.9999)
DA0=0.9999;
if(DA0<=-0.9999)
DA0=-0.9999;
*DA_ADD0 = DA0 * 2048+2048;
DA1= counter11/15000;
if(DA1>=0.9999)
DA1=0.9999;
if(DA1<=-0.9999)
DA1=-0.9999;
*DA_ADD1 = DA1 * 2048+2048;
但是示波器显示的都是一条直线,教问各位前辈是怎么回事呢
#10247-D creating output section ".sysmem" without a SECTIONS specification recoder C/C++ Problem
DSP数组定义如下
#define MSG_MAX_SIZE 256
typedef struct MT_MSG1 { Uint16 buffer[37]; Uint16 Packet_num; Uint16 Message_len; Uint16 Year; Uint16 MonthDay; Uint32 Time; Uint16 Counter1; Uint16 block_status_word; // The Block Status Word of the Message Uint16 time_tag; Uint16 data_poiner; // The Pointer to the data bulk Uint16 command_word; // Command Word
Uint16 status_word; Uint16 rec_rt_status_word; // For Rt to RT Uint16 tran_command_word; // For RT to RT Uint16 pdata_bulk[72]; // Data bulk Uint16 data_size; // The Size of the data words Uint16 msg_format; // The Message F }*BU61580_MT_MSG[MSG_MAX_SIZE];
pBU61580_MT_MSG[CurrentMsgCnt]=(struct MT_MSG1*)malloc(sizeof(struct MT_MSG1));
各位大神:
在DSP28335程序编写中,频率怎么转化成阿发,贝塔的变化角度啊?
我做了一个AC-DC模块,移相全桥拓扑,频率10KHZ,输入电压AC-380V,输出DC 300 - 750V,变压器10:10:10,一个初级两路次级,两路次级串联;
当输出电压超过730V时,总会触发TZ1中断; (我将TZ1(GPIO12)作为过流保护输入脚,当电流超过一定值时TZ1会被拉低,锁定PWM输出为低电平,
功能可以实现), 我将TZ1的输入信号断开(将电流环开路,电压闭环),仍然会有TZ1中断;
请教:
1. TZ1的触发源都已经断开了,为什么还会触发中断呢?
2. TZ1是否还有其它的触发源?
配置如下:
/*TZ1 GPIO12 config*/
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pull-up on GPIO12 (TZ1)
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 3; // Asynch input GPIO12 (TZ1)
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 1; // Configure GPIO12 as TZ1
EDIS;
/*TZ1 function config*/
EALLOW;
PieVectTable.EPWM1_TZINT = &epwm1_tzint_isr;
EDIS;
EALLOW;
EPwm1Regs.TZSEL.bit.OSHT1 = 1;
EPwm1Regs.TZCTL.bit.TZA = 2;
EPwm1Regs.TZCTL.bit.TZB = 2;
EPwm2Regs.TZSEL.bit.OSHT1 = 1;
EPwm2Regs.TZCTL.bit.TZA = 2;
EPwm2Regs.TZCTL.bit.TZB = 2;
EPwm1Regs.TZEINT.bit.OST = 1;
EDIS;
IER |= M_INT2;
PieCtrlRegs.PIEIER2.bit.INTx1 = 1;
PieCtrlRegs.PIEIER2.bit.INTx2 = 1;
__interrupt void epwm1_tzint_isr(void)
{
// Acknowledge this interrupt to receive more interrupts from group 2
if(State == _DC_DC_run_)
{
GpioDataRegs.GPADAT.bit.GPIO13 = 0;
EPwm2Regs.TBPHS.half.TBPHS = 0;
Err.bit.Current_hardware_err = 1;
}
PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
}
28034加密之后仿真器无法连接,短接RS到地的时候去连是可以连接上的。有人遇到过么,怎样才能正常连接!!
首先请问F28035是不是只能支持16位的乘法运算?否则超过后会强制为16位?
最近在开发bootloader,需要调用API库函数。发现如果在cmd文件中将flashA扇区设定为
FLASHA : origin = 0x3F6000, length = 0x001F80 /* on-chip FLASH */
CSM_RSVD : origin = 0x3F7F80, length = 0x000076 /* Part of FLASHA. Program with all 0x0000 when CSM is in use. */
BEGIN : origin = 0x3F7FF6, length = 0x000002 /* Part of FLASHA. Used for "boot to Flash" bootloader mode. */
CSM_PWL_P0 : origin = 0x3F7FF8, length = 0x000008 /* Part of FLASHA. CSM password locations in FLASHA */
个人理解按照以上定义,flashA扇区长度应该从 0x3F6000开始,到0x3F7F80结束。0x3F7FF6处放置程序的初始跳转向量。
问题是:当我在程序中运行指令FLASH_Erase(SECTORA)后,查看程序内存,发现之前flashA内部的数据和0x3F7FF6处的跳转向量都被擦除了,全部变成0xFFFF。也就是说指令FLASH_Erase(SECTORA)擦除的地址范围是从0x3F6000开始,到0x3F8000. 明显与CMD中分配的FLASHA地址不一致啊。到底flashA范围是多大?如果我将FLASHA 修改为 : origin = 0x3F6000, length = 0x000010 /* on-chip FLASH */ 是不是没有作用? flash的各个扇区大小范围能否被修改?如果可以,那以上擦除的时候出现问的问题如何解释?
望TI给出解答
现在需要利用TI的无传感器FOC控制算法,实现伺服控制功能。
对电机的电流、转速和位置进行精确控制,特别是低速性能。
TI的FAST无传感器控制策略显然是无法实现的。这里希望在Instaspin算法的基础上,增加绝对位置编码器信息。
FOC控制的电角度由绝对位置编码器提供。
现在我在28069上通过SPI已经可以读到准确的绝对位置数据,
但我不知道如何将编码器数据,转换为FOC的电角度信息,融合到lab05b的例程中。
实现对电机的平稳控制。
你们是否有过类似应用,该如何实现,是否有一些参考帖子。谢谢
希望得到TI工程师的回复,谢谢~
想不用跳线,也不用改变引导模式,直接进行dsp程序升级。DSP上电复位后,采用Jump to Flash引导模式,进入我的主程序,在主程序里判断是否升级,若不升级怎么进行正常程序运行,若升级则利用串口来接收升级程序的代码,接着调用API函数来对接收到的代码进行处理,把这些代码烧到FLash里。请问,这个方案可行吗?我现在是进行了一大半了,但怀疑这个方案的可行性了。谢谢!
我是的升级程序代码里是包含判断是否升级、调用API函数的。每次更新都是更新整个部分的,不仅仅是需要升级的程序啊。
28035程序中,将程序烧写到Flash,其中使用的语句MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart), InitFlash(),能够使Ramfuns段里的函数从Flash调到RAM里运行,请问Ramfuns段里都包含什么函数呢?谢谢
28346通过XINTF6外扩flash,发现XINTF地址线引脚与XINTF16启动配置引脚复用,如何解决?
28346外扩flash烧写的是文件是二进制文件,是如何转换的?
做了接近两个月,终于把这个该死的28335 CKFA串口烧写项目写完了,PC软件使用VC2010!
总结:感觉CKFA的烧写思路效率不高,因为需要把这个28335 (256k * 16)的flash空间填充,也就是串口需要发送 256 * 2 * 1024 = 524288 8位数据。对比第三方 C-prog软件,不需要填充数据,速度比CKFA快很多,本人写的软件烧写28335需要70秒左右。
问题:
1.回调函数的使用,涉及到双缓冲区,他的工作原理如何提高速度?
2.CKFA能否进行优化,减小发送数据(不需要填充0xFFFF)?
我对28035的PMSM程序中的RC_MACRO(v)不理解,
typedefstruct { _iq Freq; // Input: Ramp frequency (pu)
_iq StepAngleMax; // Parameter: Maximum step angle (pu)
_iq Angle; // Variable: Step angle (pu)
_iq Gain; // Input: Ramp gain (pu)
_iq Out; // Output: Ramp signal (pu)
_iq Offset; // Input: Ramp offset (pu)
} RAMPGEN;
每执行一次MainISR中断就执行一次RC_MACRO(rc1)宏,
RC_MACRO(rc1)宏的初值如下
typedefstruct { _iq TargetValue; // Input: Target input (pu)
Uint32 RampDelayMax; // Parameter: Maximum delay rate (Q0) - independently with global Q
_iq RampLowLimit; // Parameter: Minimum limit (pu)
_iq RampHighLimit; // Parameter: Maximum limit (pu)
Uint32 RampDelayCount; // Variable: Incremental delay (Q0) - independently with global Q
_iq SetpointValue; // Output: Target output (pu)
Uint32 EqualFlag; // Output: Flag output (Q0) - independently with global Q
} RMPCNTL;
#define RMPCNTL_DEFAULTS { 0, \
5, \
_IQ(-1), \
_IQ(1), \
0, \
0, \
0, \
}
RC_MACRO(rc1)宏的定义如下
#define RC_MACRO(v) \
rc_tmp = v.TargetValue - v.SetpointValue; \
/* 0.0000305 is resolution of Q15 */ \
if (_IQabs(rc_tmp) > _IQ(0.0000305)) \
{ \
v.RampDelayCount += 1; \
if (v.RampDelayCount >= v.RampDelayMax) \
{ \
if (v.TargetValue >= v.SetpointValue) \
{ \
v.SetpointValue += _IQ(0.0000305); \
if (v.SetpointValue > v.RampHighLimit) \
v.SetpointValue = v.RampHighLimit; \
v.RampDelayCount = 0; \
} \
else \
{ \
v.SetpointValue -= _IQ(0.0000305); \
if (v.SetpointValue < v.RampLowLimit) \
v.SetpointValue = v.RampLowLimit; \
v.RampDelayCount = 0; \
} \
} \
} \
else v.EqualFlag = 0x7FFFFFFF;
在buildlevel中,rc1.TargetValue = SpeedRef; 而SpeedRef=IQ(0);
我理解的是SetpointValue和EqualFlag作为RC_MACRO(rc1)宏的输出,而SetpointValue又作为RG_MACRO(rg1)的输入,有谁可以解释一下RC_MACRO(v)的执行过程和对电机产生的效果吗,谢谢
TMS320C28346的boot rom需要占用XA12——XA15(GPIO84——GPIO87),而如果我要外扩Flash的话,需要占用XA0——XA15,这样会不会有冲突,如何解决这个问题?
**** Build of configuration Debug for project PMSM_Inverter ****
"C:\\ti\\ccsv6\\utils\\bin\\gmake" -k all
**** Build Finished ****
建议便签下是一下内容
Description Resource Path Location
Current optimization/debug settings: --opt_level=off --opt_for_speed=2 -g PMSM_Inverter properties
<a href="file:/c:/ti/ccsv6/tools/compiler/dmed/HTML/27007.html">#27007-D</a> Detecting compilation without optimization. Recommend setting --opt_level=3. NOTE: debug ability will decrease. PMSM_Inverter properties
这是什么问题才会出现这样的错误,, 谢谢