This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F28377S:对 ePWM 有疑问

Guru**** 2589265 points
Other Parts Discussed in Thread: CONTROLSUITE, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/661775/ccs-tms320f28377s-doubt-regarding-epwm

器件型号:TMS320F28377S
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具/软件:Code Composer Studio

我使用 ePWM 触发 ADC、并对 ADC 的 ISR 进行编码、以便每30次转换在控制台上打印一次 ADC 的结果。我还在 launchpad 的引脚80上观察 ePWM 的输出

我观察到一件奇怪的事情。每次在控制台上打印结果时、ePWM 的输出变为高电平状态并保持一段时间、然后它开始以自己的方式运行(即、它看起来像是一个纯直流、一段时间后又切换回 A) 方波)。为什么会发生这种情况? ePWM 独立于 C28x 处理器是不是我错的。(当我删除 printf 语句时、输出正常、就像以前一样-一个方波)

这是我使用的代码[突出显示的部分是 ePWM 配置、printf 语句]、

//######################################################################################################################
//
//文件:adc_soc_ePWM_cpu01.c
//
//标题:针对 F2837xS 通过 ePWM 触发 ADC。
//
//! addtogroup cpu01_example_list
//!

ADC ePWM 触发(ADC_SoC_ePWM)


//!
//! 此示例设置 EPWM 以定期触发 ADC。
//!
//! 程序运行后,内存将包含:\n
//! -\b 结果:一系列的模数转换样本
//! 引脚 A0。 采样之间的时间根据周期确定
//! PWM 计时器的功能。
//
//######################################################################################################################
//$TI 版本:F2837xS 支持库 V210 $
//$Release Date:Tue Nov1 15:35:23 CDT 2016 $
//版权所有:版权所有(C) 2014-2016 Texas Instruments Incorporated -
// http://www.ti.com/ 保留所有权利$
//######################################################################################################################

//
//包含的文件
//
#include "F28x_Project.h"
#include "stdio.h"
#include "DCL.h"
const 结构 PIE_VECT_TABLE PieVectTableInit ={
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
PIE_RESERVE_ISR、//保留
Timer1_ISR、// CPU 定时器1中断
TIMER2_ISR、// CPU 定时器2中断
DATALOG_ISR、//数据记录中断
RTOS_ISR、// RTOS 中断
EMU_ISR、//仿真中断
NMI_ISR、//不可屏蔽中断
ILLEGAL_ISR、//非法操作陷阱
User1_ISR、//用户定义的陷阱1
User2_ISR、//用户定义的陷阱2.
User3_ISR、//用户定义的陷阱3.
User4_ISR、//用户定义的陷阱4.
USER5_ISR、//用户定义的陷阱5
USER6_ISR、//用户定义的陷阱6.
USER7_ISR、//用户定义的陷阱7
USER8_ISR、//用户定义的陷阱8
USER9_ISR、//用户定义的陷阱9.
USER10_ISR、//用户定义的陷阱10
USER11_ISR、//用户定义的陷阱11
USER12_ISR、//用户定义的陷阱12.
ADCA1_ISR、// 1.1 - ADCA 中断1
ADCB1_ISR、// 1.2 - ADCB 中断1
ADCC1_ISR、// 1.3 - ADCC 中断1
XINT1_ISR、// 1.4 - XINT1中断
XINT2_ISR、// 1.5 - XINT2中断
ADCD1_ISR、// 1.6 - ADCD 中断1
TIMER0_ISR、// 1.7 -定时器0中断
WAKE_ISR、// 1.8 -待机和停止唤醒中断
EPWM1_TZ_ISR、// 2.1 - ePWM1触发区中断
EPWM2_TZ_ISR、// 2.2 - ePWM2触发区中断
EPWM3_TZ_ISR、// 2.3 - ePWM3触发区中断
EPWM4_TZ_ISR、// 2.4 - ePWM4触发区中断
EPWM5_TZ_ISR、// 2.5 - ePWM5触发区中断
EPWM6_TZ_ISR、// 2.6 - ePWM6触发区中断
EPWM7_TZ_ISR、// 2.7 - ePWM7触发区中断
EPWM8_TZ_ISR、// 2.8 - ePWM8触发区中断
EPWM1_ISR、// 3.1 - ePWM1中断
EPWM2_ISR、// 3.2 - ePWM2中断
EPWM3_ISR、// 3.3 - ePWM3中断
EPWM4_ISR、// 3.4 - ePWM4中断
EPWM5_ISR、// 3.5 - ePWM5中断
EPWM6_ISR、// 3.6 - ePWM6中断
EPWM7_ISR、// 3.7 - ePWM7中断
EPWM8_ISR、// 3.8 - ePWM8中断
eCAP1_ISR、// 4.1 - eCAP1中断
ECAP2_ISR、// 4.2 - eCAP2中断
ECAP3_ISR、// 4.3 - eCAP3中断
ECAP4_ISR、// 4.4 - eCAP4中断
ECAP5_ISR、// 4.5 - eCAP5中断
ECAP6_ISR、// 4.6 - eCAP6中断
PIE_RESERVE_ISR、// 4.7 -保留
PIE_RESERVE_ISR、// 4.8 -保留
EQEP1_ISR、// 5.1 - eQEP1中断
EQEP2_ISR、// 5.2 - eQEP2中断
EQEP3_ISR、// 5.3 - eQEP3中断
PIE_RESERVE_ISR、// 5.4 -保留
PIE_RESERVE_ISR、// 5.5 -保留
PIE_RESERVE_ISR、// 5.6 -保留
PIE_RESERVE_ISR、// 5.7 -保留
PIE_RESERVE_ISR、// 5.8 -保留
SPIA_RX_ISR、// 6.1 - SPIA 接收中断
SPIA_TX_ISR、// 6.2 - SPIA 发送中断
SPIB_RX_ISR、// 6.3 - SPIB 接收中断
SPIB_TX_ISR、// 6.4 - SPIB 发送中断
MCBSPA_RX_ISR、// 6.5 - McBSPA 接收中断
MCBSPA_TX_ISR、// 6.6 - McBSPA 发送中断
MCBSPB_RX_ISR、// 6.7 - McBSPB 接收中断
MCBSPB_TX_ISR、// 6.8 - McBSPB 发送中断
DMA_CH1_ISR、// 7.1 - DMA 通道1中断
DMA_CH2_ISR、// 7.2 - DMA 通道2中断
DMA_CH3_ISR、// 7.3 - DMA 通道3中断
DMA_CH4_ISR、// 7.4 - DMA 通道4中断
DMA_CH5_ISR、// 7.5 - DMA 通道5中断
DMA_CH6_ISR、// 7.6 - DMA 通道6中断
PIE_RESERVE_ISR、// 7.7 -保留
PIE_RESERVE_ISR、// 7.8 -保留
I2CA_ISR、// 8.1 - I2CA 中断1
I2CA_FIFO_ISR、// 8.2 - I2CA 中断2
I2CB_ISR、// 8.3 - I2CB 中断1
I2CB_FIFO_ISR、// 8.4 - I2CB 中断2.
SCIC_RX_ISR、// 8.5 - SCIC 接收中断
SCIC_TX_ISR、// 8.6 - SCIC 发送中断
SCID_RX_ISR、// 8.7 - SCID 接收中断
SCID_TX_ISR、// 8.8 - SCID 发送中断
SCIA_RX_ISR、// 9.1 - SCIA 接收中断
SCIA_TX_ISR、// 9.2 - SCIA 发送中断
SCIB_RX_ISR、// 9.3 - SCIB 接收中断
SCIB_TX_ISR、// 9.4 - SCIB 发送中断
CANA0_ISR、// 9.5 - CANA 中断0
CANA1_ISR、// 9.6 - CANA 中断1
CANB0_ISR、// 9.7 - CANB 中断0
CANB1_ISR、// 9.8 - CANB 中断1
ADCA_EVT_ISR、// 10.1 - ADCA 事件中断
ADCA2_ISR、// 10.2 - ADCA 中断2
ADCA3_ISR、// 10.3 - ADCA 中断3
ADCA4_ISR、// 10.4 - ADCA 中断4
ADCB_EVT_ISR、// 10.5 - ADCB 事件中断
ADCB2_ISR、// 10.6 - ADCB 中断2
ADCB3_ISR、// 10.7 - ADCB 中断3
ADCB4_ISR、// 10.8 - ADCB 中断4
CLA1_ISR、// 11.1 - CLA1中断1
CLA1_2_ISR、// 11.2 - CLA1中断2
CLA1_3_ISR、// 11.3 - CLA1中断3
CLA1_4_ISR、// 11.4 - CLA1中断4
CLA1_5_ISR、// 11.5 - CLA1中断5
CLA1_6_ISR、// 11.6 - CLA1中断6
CLA1_7_ISR、// 11.7 - CLA1中断7
CLA1_8_ISR、// 11.8 - CLA1中断8
XINT3_ISR、// 12.1 - XINT3中断
XINT4_ISR、// 12.2 - XINT4中断
XINT5_ISR、// 12.3 - XINT5中断
PIE_RESERVE_ISR、// 12.4 -保留
PIE_RESERVE_ISR、// 12.5 -保留
VCU_ISR、// 12.6 - VCU 中断
FPU_Overflow_ISR、// 12.7 - FPU 溢出中断
FPU_Underflow_ISR、// 12.8 - FPU 下溢中断
PIE_RESERVE_ISR、// 1.9 -保留
PIE_RESERVE_ISR、// 1.10 -保留
PIE_RESERVE_ISR、// 1.11 -保留
PIE_RESERVE_ISR、// 1.12 -保留
IPC0_ISR、// 1.13 - IPC 中断0
IPC1_ISR、// 1.14 - IPC 中断1
IPC2_ISR、// 1.15 - IPC 中断2
IPC3_ISR、// 1.16 - IPC 中断3
EPWM9_TZ_ISR、// 2.9 - ePWM9触发区中断
EPWM10_TZ_ISR、// 2.10 - ePWM10触发区中断
EPWM11_TZ_ISR、// 2.11 - ePWM11触发区中断
EPWM12_TZ_ISR、// 2.12 - ePWM12触发区中断
PIE_RESERVE_ISR、// 2.13 -保留
PIE_RESERVE_ISR、// 2.14 -保留
PI_RESERVE_ISR、// 2.15 -保留
PI_RESERVE_ISR、// 2.16 -保留
EPWM9_ISR、// 3.9 - ePWM9中断
EPWM10_ISR、// 3.10 - ePWM10中断
EPWM11_ISR、// 3.11 - ePWM11中断
EPWM12_ISR、// 3.12 - ePWM12中断
PIE_RESERVE_ISR、// 3.13 -保留
PI_RESERVE_ISR、// 3.14 -保留
PIE_RESERVE_ISR、// 3.15 -保留
PIE_RESERVE_ISR、// 3.16 -保留
PIE_RESERVE_ISR、// 4.9 -保留
PIE_RESERVE_ISR、// 4.10 -保留
PIE_RESERVE_ISR、// 4.11 -保留
PIE_RESERVE_ISR、// 4.12 -保留
PIE_RESERVE_ISR、// 4.13 -保留
PIE_RESERVE_ISR、// 4.14 -保留
PIE_RESERVE_ISR、// 4.15 -保留
PIE_RESERVE_ISR、// 4.16 -保留
SD1_ISR、// 5.9 - SD1中断
SD2_ISR、// 5.10 - SD2中断
PIE_RESERVE_ISR、// 5.11 -保留
PIE_RESERVE_ISR、// 5.12 -保留
PIE_RESERVE_ISR、// 5.13 -保留
PIE_RESERVE_ISR、// 5.14 -保留
PIE_RESERVE_ISR、// 5.15 -保留
PIE_RESERVE_ISR、// 5.16 -保留
spic_RX_ISR、// 6.9 -***接收中断
spic_TX_ISR、// 6.10 -***发送中断
PIE_RESERVE_ISR、// 6.11 -保留
PIE_RESERVE_ISR、// 6.12 -保留
PIE_RESERVE_ISR、// 6.13 -保留
PIE_RESERVE_ISR、// 6.14 -保留
PIE_RESERVE_ISR、// 6.15 -保留
PIE_RESERVE_ISR、// 6.16 -保留
PIE_RESERVE_ISR、// 7.9 -保留
PIE_RESERVE_ISR、// 7.10 -保留
PIE_RESERVE_ISR、// 7.11 -保留
PIE_RESERVE_ISR、// 7.12 -保留
PIE_RESERVE_ISR、// 7.13 -保留
PIE_RESERVE_ISR、// 7.14 -保留
PIE_RESERVE_ISR、// 7.15 -保留
PIE_RESERVE_ISR、// 7.16 -保留
PIE_RESERVE_ISR、// 8.9 -保留
PIE_RESERVE_ISR、// 8.10 -保留
PI_RESERVE_ISR、// 8.11 -保留
PIE_RESERVE_ISR、// 8.12 -保留
PIE_RESERVE_ISR、// 8.13 -保留
PIE_RESERVE_ISR、// 8.14 -保留
CPU1
UPPA_ISR、// 8.15 - UPPA 中断
PIE_RESERVE_ISR、// 8.16 -保留
#Elif Defined (CPU2)
PIE_RESERVE_ISR、// 8.15 -保留
PIE_RESERVE_ISR、// 8.16 -保留
#endif
PIE_RESERVE_ISR、// 9.9 -保留
PIE_RESERVE_ISR、// 9.10 -保留
PIE_RESERVE_ISR、// 9.11 -保留
PIE_RESERVE_ISR、// 9.12 -保留
PIE_RESERVE_ISR、// 9.13 -保留
PIE_RESERVE_ISR、// 9.14 -保留
CPU1
USBA_ISR、// 9.15 - USBA 中断
#Elif Defined (CPU2)
PIE_RESERVE_ISR、// 9.15 -保留
#endif
PIE_RESERVE_ISR、// 9.16 -保留
ADCC_EVT_ISR、// 10.9 - ADCC 事件中断
ADCC2_ISR、// 10.10 - ADCC 中断2
ADCC3_ISR、// 10.11 - ADCC 中断3
ADCC4_ISR、// 10.12 - ADCC 中断4
ADCD_EVT_ISR、// 10.13 - ADCD 事件中断
ADCD2_ISR、// 10.14 - ADCD 中断2
ADCD3_ISR、// 10.15 - ADCD 中断3
ADCD4_ISR、// 10.16 - ADCD 中断4
PI_RESERVE_ISR、// 11.9 -保留
PIE_RESERVE_ISR、// 11.10 -保留
PIE_RESERVE_ISR、// 11.11 -保留
PIE_RESERVE_ISR、// 11.12 -保留
PIE_RESERVE_ISR、// 11.13 -保留
PIE_RESERVE_ISR、// 11.14 -保留
PIE_RESERVE_ISR、// 11.15 -保留
PIE_RESERVE_ISR、// 11.16 -保留
EMIF_ERROR_ISR、// 12.9 - EMIF 错误中断
RAM_corrected_error_ISR、// 12.10 - RAM 可纠正的错误中断
FLASH_corrected_error_ISR、// 12.11 -闪存可纠正的错误中断
RAM_ACCESS_violation_ISR、// 12.12 - RAM 访问冲突中断
SYS_PLL_SLIT_ISR、// 12.13 -系统 PLL 跳周中断
AUX_PLL_SLIT_ISR、// 12.14 -辅助 PLL 跳周中断
CLA_overflow_ISR、// 12.15 - CLA 溢出中断
CLA_underflow_ISR // 12.16 - CLA 下溢中断
};


//
// InitPieVectTable -此函数将 PIE 矢量表初始化为
//已知状态,必须在引导后执行。
//
空 InitPieVectTable (空)

uint16 i;
uint32 *源=(void *)&PieVectTableInit;
uint32 * dest =(void *) PieVectTable (PieVectTable);

//
//请勿在前3个32位位置上进行写操作(这些位置是
//由具有引导变量的引导 ROM 初始化)
//
Source = Source + 3;
DEST = Dest + 3;

EALLOW;
对于(I = 0;I < 221;I++)

*目的地++=*来源++;

EDIS;

//
//启用 PIE 矢量表
//
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;

//
//函数原型
//
void ConfigureADC (void);
void ConfigureEPWM (void);
void SetupADCepwm (uint16通道);
中断 void adca1_ISR (void);

//
//定义
//
#define results_buffer_size 256

//
//全局
//
uint16 AdcaResults[results_buffer_size];
uint16结果索引;
易失性 uint16 bufferFull;
//PID pid1=PID_DEFAULTS;
/*struct hi

uint16 ji:12
}bi;*/
int 计数器=0;
void main (void)
{//int counter=0;
//uny=DCL_runPIDc (&pid、)
//
//步骤1. 初始化系统控制:
// PLL、安全装置、启用外设时钟
//此示例函数位于 F2837xS_SYSCTRL.c 文件中。
//
InitSysCtrl();

//
//步骤2. 初始化 GPIO:
//此示例函数位于 F2837xS_GPIO.c 文件和中
//说明了如何将 GPIO 设置为其默认状态。
//
InitGpio();//针对此示例跳过

//
//步骤3. 清除所有中断并初始化 PIE 矢量表:
//禁用 CPU 中断
//
Dint;
InitGpio();
//
//将 PIE 控制寄存器初始化为默认状态。
//默认状态为禁用所有 PIE 中断和标志
//被清除。
//此函数位于 F2837xS_PIECTRL.c 文件中。
//
InitPieCtrl();

//
//禁用 CPU 中断并清除所有 CPU 中断标志:
//
IER = 0x0000;
IFR = 0x0000;

//
//使用指向 shell 中断的指针初始化 PIE 矢量表
//服务例程(ISR)。
//这将填充整个表,即使是中断也是如此
//在本例中未使用。 这对于调试很有用。
//可以在 F2837xS_DefaultIsr.c 中找到 shell ISR 例程
//此函数可在 F2837xS_PieVect.c 中找到
//
InitPieVectTable();

//
//映射 ISR 函数
//
EALLOW;
PieVectTable.ADCA1_INT =&adca1_ISR;//针对 ADCA 中断1的函数
GpioCtrlRegs.GPAMUX1.bit.GPIO2=1;
EDIS;

//
//配置 ADC 并为其加电
//
ConfigureADC();

//
//配置 ePWM
//
ConfigureEPWM();

//
//在通道0上设置用于 ePWM 触发转换的 ADC
//
SetupADCepwm (0);

//
//启用全局中断和更高优先级的实时调试事件:
//
IER |= M_INT1;//启用组1中断
EINT;//启用全局中断 INTM
ERTM;//启用全局实时中断 DBGM

//
//初始化结果缓冲区
//
for (resultsIndex = 0;resultsIndex < results_buffer_size;resultsIndex++)

AdcaResults[resultsIndex]=0;

resultsIndex = 0;
bufferFull = 0;

//
//启用 PIE 中断
//
PieCtrlRegs.PIEIER1.bit.INTx1 = 1;


//
//同步 ePWM
//
EALLOW;
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC=1;
PieCtrlRegs.PIECTRL.bit.ENPIE=1;

//
//循环无限地进行转换
//
//EPwm2Regs.ETSEL.bit.SOCAEN = 1;
//EPwm2Regs.TBCTL.bit.CTRMODE = 0;
EDIS;
操作

//
//启动 ePWM
//
//EPwm2Regs.ETSEL.bit.SOCAEN = 1;//启用 SOCA
//EPwm2Regs.TBCTL.bit.CTRMODE = 0;//取消冻结,并进入向上计数模式

//
//等待、而 ePWM 导致 ADC 转换、然后导致中断、
//填充结果缓冲区,最终设置 bufferFull
//flag
//
//while (!bufferFull);
//bufferFull = 0;//清除缓冲区已满标志

//
//停止 ePWM
//
//EPwm2Regs.ETSEL.bit.SOCAEN = 0;//禁用 SOCA
//EPwm2Regs.TBCTL.bit.CTRMODE = 3;//冻结计数器

//
//此时,AdcaResults[]包含一系列转换
//从所选通道
//

//
//软件断点,再次点击运行以获取更新的转换
//
//asm (" ESTOP0");

} while (1);

//
// ConfigureADC -写入 ADC 配置并为两者加电
// ADC A 和 ADC B
//
空配置 ADC (空)

EALLOW;

//
//写入配置
//
AdcaRegs.ADCCTL2.bit.prescale = 6;//将 ADCCLK 分频器设置为/4
AdcSetMode (ADC_ADCA、ADC_resolution_12位、ADC_SIGNALMODE_SINGLE);

//
//将脉冲位置设置为晚期
//
AdcaRegs.ADCCTL1.bit.INTPULSEPOS=1;

//
//为 ADC 加电
//
AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1;

//
//延迟1ms 以允许 ADC 加电时间
//
DELAY_US (1000);

EDIS;

//
// ConfigureEPWM -配置 ePWM SOC 并比较值
//
空配置 EPWM (空)

EALLOW;
//假设 ePWM 时钟已启用
EPwm2Regs.ETSEL.bit.SOCAEN = 1;//在组上启用 SOC
EPwm2Regs.ETSEL.bit.SOCASEL = 4;//在递增计数时选择 SOC
EPwm2Regs.ETPS.bit.SOCAPRD = 1;//在发生第一个事件时生成脉冲
EPwm2Regs.CMPA.bit.CMPA = 0x0800;//将比较 A 值设置为2048个计数
EPwm2Regs.TBPRD = 0x1000;//将周期设置为4096个计数
 EPwm2Regs.TBCTL.bit.CTRMODE = 0;//递增计数器

EPwm2Regs.AQCTLA.bit.CAU=2;
EPwm2Regs.AQCTLA.bit.PRD=1;
EDIS;

//
// SetupADCepwm -设置 ADC ePWM 采集窗口
//
void SetupADCepwm (uint16通道)
{//EALLOW;
//GpioCtrlRegs.GPAMUX1.bit.GPIO13=0;
//GpioCtrlRegs.GPADIR.bit.GPIO13=1;
//EDIS;
//GpioDataRegs.GPASET.bit.GPIO13=1;
uint16 acqps;

//
//根据分辨率确定最小采集窗口(在 SYSCLKS 中)
//
if (adc_resolution_12bit = AdcaRegs.ADCCTL2.bit.resolution)

acqps = 63;//75ns

否则、//分辨率为16位

acqps = 63;//320ns

//
//选择要转换的通道和转换结束标志
//
EALLOW;
AdcaRegs.ADCSOC0CTL.bit.CHSEL =通道;//SOC0将转换引脚 A0
AdcaRegs.ADCSOC0CTL.bit.ACQPS = acqps;//采样窗口为100个 SYSCLK 周期
AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 7;// ePWM1 SOCA/C 上的触发
AdcaRegs.ADCINTSEL1N2.bit.INT1SEL = 0;// SOC0结束将设置 INT1标志
AdcaRegs.ADCINTSEL1N2.bit.INT1E = 1;//启用 INT1标志
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//确保 INT1标志被清除
// AdcaRegs.ADCPPB4CONFIG.bit.CONFIG=0;
// AdcaRegs.ADCPPB4CONFIG.bit.TWOSCOMPEN=0;
// AdcaRegs.ADCPPB4OFFCAL.bit.OFFCAL=0x64;
// AdcaRegs.ADCPPB4OFFREF=100;
EDIS;

//
// adca1_ISR -在 ISR 中读取 ADC 缓冲器
//
中断 void adca1_ISR (void)

//AdcaResults[resultsIndex++]= AdcaResultRegs.ADCRESULT0;
//if (results_buffer_size <= resultsIndex)
/*{
resultsIndex = 0;
bufferFull = 1;
}*/

COUNTER++;
if (计数器>30)
{printf ("%d\n"、AdcaResultRegs.ADCRESULT0);
计数器=0;

//printf ("%d\n"、AdcaResultRegs.ADCPPB4RESULT.bit.PPBRESULT);
//resultsIndex = 0;
//bufferFull = 1;
/* if (AdcaResultRegs.ADCRESULT0==4095)

GpioDataRegs.GPACLEAR.bit.GPIO13=1;


*
AdcaRegs.ADCINTFLGCLR.bit.ADCINT1 = 1;//清除 INT1标志
EALLOW;
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
EDIS;

//
//文件结束
//

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Deepak、您好!

    我首先怀疑使用 printf 可能是您的问题的一部分。  请注意、printf 会暂停处理器、实际上会使调试更加复杂。
    http://processors.wiki.ti.com/images/tmp/f1260234994-61435002.html#Warning_about_using_printf

    C2000 E2E 论坛上还有一些介绍 printf 挑战的其他主题。

    除此之外、代码中 ePWM 自由/软位的确切值也将产生您所看到的效果。

    ===

    相反、我建议在 CCS 中使用实时模式在器件运行时查看变量。  您可以创建一个变量版本、该变量的写入速率与使用 printf 的写入速率相同。  您还可以对其进行缓冲、然后在 CCS 中绘制变量。  在调试时使用实时模式将使您能够查看变量而不影响处理器执行、并使您能够更好地了解正在发生的情况。


    谢谢、
    Brett

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何在 CCS 中使用实时模型
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Deepak、您好!

    我可能建议观看以下视频。  实时调试模式在视频(7:50)的第二部分进行了说明。
    https://www.youtube.com/watch?v=gVDRo9m-4ng

    除了 C2000Ware/controlSUITE 和数据表/TRM 文档中的主要示例之外、C2000技术讲座也是学习 C2000的好资源。  这两种技术目前都围绕 F28379D 微控制器(F28377S 的功能扩展集)构建:
    http://processors.wiki.ti.com/index.php/C2000_One-Day_Workshop
    http://processors.wiki.ti.com/index.php/C2000_Multi-Day_Workshop

    希望这对您有所帮助!


    谢谢、
    Brett