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.
您好!
我正在使用 TMS 570 LS1227、并希望以 交替方式生成2个占空比、但它不起作用
我已经 针对 基本 HET 程序通过"C"代码更新了新占空比。
;在比较匹配事件 L00 CNT 时具有同步占空比更新的 PWM {REG=A、IRQ=OFF、max= 100} L01 ECMP{NEX=L02、en_pin_action=on、PIN=2、action=PULSELO、REG=A、data=10、hr_data=0}; L02 BR{NEX=L00、COND_addr=L03、EVENT_ZERO};在完成1后、REG=32、 远程数据=0、L0=0、L0、L0=0、L0=0、L0=0、L0=0、L0=0、L0=NOW= 1、NOW= 1、NOW= 1、L0=NOW= 1、NOW= 1、NOW= 1
--------------------------------------------------------------------
int main (void) { /*用户代码 begin (3)*/ int i、j; hetInit(); while (1) { i=20; hetRAM1->Instruction [L03].Data = i << 7;//将占空比更改为20% (j=0;j<10000;j++);//RAM1<i 循环< I 03+7;直到写入新 指令为止<hetr\n 数据<i 循环<i+40%;/i 循环<hetrechnle<<i = 1;I 循环< I 写入1 < I +。 //将占空比更改为60% }// 用户代码结束*/ 返回0; }
--------------------------------------------------------------------
示波器上的 O/P -
是否是导致错误的延迟?
此致、
Suyog
您好!
我尝试了相同的方法、但它没有使用-
int main (void) { /*用户代码 begin (3)*/ int i、j; hetInit(); while (1) { i=20; hetRAM1->Instruction [L03].Data = i << 7;//将占空比更改为20% (j=0;j<10000;j++);//RAM1<i 循环< I 03+7;直到写入新 指令为止<hetr\n 数据<i 循环<i+40%;/i 循环<hetrechnle<<i = 1;I 循环< I 写入1 < I +。 //将占空比更改为60% (j=0;j<10000;j++); }// 用户代码结束*/ 返回0; }
您是否有用于重写和更新操作的示例程序?
您能告诉我如何处理延迟问题吗?
是否有任何方法读取当前 HET 寄存器值?
我们是否可以为 HET 寄存器添加观察/断点?
此致、
Suyog
您好、Anthony、
我在 TMS570LC4357中的 HETFLG 感到非常艰难。
它始终置位或从不置位。
我假设在读取 hetREG1->OFF1时它会在 void het1HighLevelInterrupt (void)中自动复位。
我认为在使用 XDS100v2时、该线程在读取时不会复位?
如果我断开评估板的 USB 电缆、读取时也不会重置。
如果我在 ISR 中复位它(如上所述写入1) 、我在设置 hetREG1->GCR 的 LSB 时获得第一个中断、但再也不会。
如果我没有在 ISR 中复位、它永远不会复位、并且每~300ns 进入一次 ISR。
如何检测 HETram 中的代码是否有效? 在 HET IDE 中、它看起来工作正常。
提前感谢您的任何建议
BR Olaf
谢谢 Anthony、
在 Halcogen 中禁用"忽略挂起"。
Nhet1_GlbCtrl 将读取
0x00010001 未置位、主器件置位 、至置位。
但 Nhet1_Addr 始终为00000005
在 HET IDE 中删除断点后、地址始终为
地址 指针 0x000000D7 0xFFF7B808
但是 HET 程序只有6个步长(0..5)
Nhet1_IntEnaSet
00000018
Nhet1_IntEnaClr
00000018
只有一个中断正暂挂:
偏移1 指针 0x00000005 0xFFF7B80C
IntFlg 指针 0x00000010 0xFFF7B828
HET 代码似乎被停止、但是到仍然被设定?
此致
OLAF
已解决!
我在调试 HET 代码的奇怪和意外行为时浪费了很多时间。
为了绝望、我决定在剩余的 HET RAM 中填充第一条指令的"保护性"分支指令:
PROTECT1 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT2 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT3 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT4 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT5 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT6 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
PROTECT7 BR{NEX=STARTEN、COND_addr=STARTEN、EVENT=NOCOND};
…
现在工作了、我获得 HET 中断、IntFlgs 按预期清零、示波器中测量的时序按预期。
问题:
为了避免 HET RAM 中的奇怪行为和奇偶校验错误、针对未使用的 HET RAM 建议的初始化值是多少?
建议:
在自动生成的代码中插入一个初始化以用中的"安全"初始化值填充 HET RAM 的未使用部分
void hetInit (void)。
当前初始化
(void) memcpy ((void*) hetRAM1、(void*) HET_INIT0_PST、sizeof (HET_INIT0_PST);
限制为 sizeof (use-HETRAM)。 我在执行自己的初始化之前在未使用的区域中找到了随机数。 。
此致
OLAF