完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ti工程师:
您好! 现在正使用HET模块,在执行顺序上有些迷惑。 我的程序使用到了CNT指令及PWCNT指令,HR设置为3,即4分频,LR设置为5,即32分频,使用64M的VCLK2,那么一次完整的LOOP执行时间为2us,而 CNT的data field值也是间隔2us加1,这个是没问题的吧? 如果这样的话PWCNT这个指令也应该是整个LOOP执行一次吧(假如整个LOOP只有一个PWCNT指令)?但是根据我设置的data field值来看,PWCNT 的分辨率就是HR设置的值62.5ns,难道是该指令62.5ns就执行了一次吗?也就是说下边代码(PWCNT指令执行代码)62.5ns就运行了一次? If (Data field value == 0) [ Selected register = 0; Jump to Next Program Address; ] If (Data field value > 1) [ Selected register = Data field value - 1; Data field value = Counter value - 1; If (Enable Pin action == 1) Selected Pin = Pin Action AT next loop resolution clock; Jump to Next Program Address; ] If (Data field value == 1) [ Selected register = 00000h; Data field value = 00000h; If (Opposite action == 1) [ If (hr_lr bit == 0) [ If (Enable Pin action == 1) Selected Pin = Opposite level of Pin Action AT next loop resolution clock + HR delay; ] else [ If (Enable Pin action == 1) Selected Pin = Opposite level of Pin Action AT next loop resolution clock; ] ] If (Interrupt Enable == 1) SW interrupt flag = 1; Jump to Conditional Address ] 请帮我解答下,谢谢! |
|
相关推荐
5 个讨论
|
|
Hi Pengyuan,
已经开始深入到HET的编程了啊,进展很快啊!:) 你提的这个问题很有价值,就是典型的HET工作原理问题。 搞清楚这个问题,基本上HET上的编程就变得很轻松了。 而且这个问题的答案其实很简单。 HET中的代码运行是基于VCLK2的,比如手册中提到PWCNT指令执行一次,需要1个Cycle,那么就是指一个VCLK2 Cycle。 换句话说,这条指令花掉1/VCLK2的时间。 一般情况下,HET的代码有一个循环,也就是所谓的Loop,做一次循环的时间是一个Loop clock的时间。 比如你程序中设置了2us的loop clock,那么,编写HET代码的时候,也要让循环在2us之内完成。 要注意的是: 1. 循环一般是以CNT指令开始的。如果循环不足2us,那么CNT指令会自动等待,直到Loop clock来临才加1。 2. HET不会自动跳回CNT这条指令,用户一定要有自己的跳转指令,确保在循环结束后返回到CNT。 3. 循环如果超过Loop clock的时间,HET的逻辑就会崩溃,硬件会给出一个特别的中断。这样的设计是绝对不允许的。 以上是一些需要具备的基础概念。 说到这里,好像还没解释你的具体问题.... 大多数有动作的指令如PWCNT,它的动作都是基于Loop clock的。 如前所述,每个循环中,(一般来说)每条指令都只会被执行一次,PWCNT也不例外,也就是说,PWCNT每2us被执行一次。 但是它的动作实在条件满足后的下一个loop clock + HR data的时刻触发的。 比如,我设置了PWCNT的data为50,hr data为50 (不考虑移位),那么前49个loop中,PWCNT指令都不会触发引脚动作。 第50个loop中,PWCNT的data条件满足了,那么HET会在 (下一个Loop clock来临的时刻) + (50 * HR clock)的时间处,使对应的引脚电平变化。 所以你会看到PWCNT的分辨率远高于Loop clock的分辨率。 希望能够解答你的问题。 祝你开发顺利~ |
|
|
|
|
|
Hi Renton, 首先非常感谢您的详细讲解,说点题外的,我发现你们TI的工程师都很专业和耐心啊,上次会上的马工也是这个风格,您不会就是吧?呵呵。 回到这个问题,首先,我所使用的PWCNT并没有用到delay,即hr_lr=1。我要产生27Hz固定频率可调脉宽的波形,我将DJZ的data设为 0x90AD0在其为0时跳至MOV64,其改变PWCNT的data改变占空度,而这个占空度也是百分率乘以0x90AD0而得到的。而(1/27)/0x90AD0=62.5ns,正 好就是 VCLK时钟4分频后得到的,即HR clock。但这样却无法解释PWCNT指令2us运行一次的说法啊? 还是没有弄明白,等待您的回复。 |
|
|
|
|
|
Hi Renton, 下面是我的代码,你帮我看看。 void LLD_HETInit(void) [ hetREG->DIR = 0x0000AACAU; hetREG->DOUT = 0x00000000U; hetREG->PDR = 0x00000000U; hetREG->PULDIS = 0xFFFFFFFFU; hetREG->PSL = 0x00000000U; hetREG->HRSH = 0x00000000U; memcpy((void *)hetRAM, (const void *)HETRAM_U32_Const, sizeof(HETRAM_U32_Const)); hetREG->PFR = 0x00000503U; hetREG->PRY = 0x00000000U; hetREG->GCR = 0x00010003U; ] const hetINSTRUCTION_t HETRAM_U32_Const[] = [ /*捕获的部分,无异议*/ [0x00001640U,0x000FFFFFU,0x00000000U], [0x00002A20U,0x00002437U,0x00000000U], [0x00003A20U,0x00003537U,0x00000000U], [0x00004A20U,0x00004637U,0x00000000U], [0x00005A20U,0x00005737U,0x00000000U], /*这个不是用来控制电机的请忽略*/ [0x00006AE0U,0x0000649EU,0x00000000U], [0x00007A40U,0x0000A006U,0x00000000U], /*我所询问的就是这个PWCNT*/ [0x00008AE0U,0x0000859EU,0x00000000U], /*这个是要在PWM低电平的1/2处做AD采样用的*/ [0x00009A40U,0x00009006U,0x00000000U], /*设定周期的DJZ*/ [0x00000A40U,0x0000C006U,0x00000000U], [0x0000B105U,0x0010649EU,16000], [0x00007106U,0x0000A006U,64000], [0x0000D107U,0x0010859EU,0x00000000U], [0x0000E108U,0x00009006U,0x00000000U], [0x00000109U,0x0000C006U,0x00000000U],//0x90AD0 ]; 程序开始时我会hetRAM->Instruction[14].Data = 0x90AD0;将设定周期的DJZ的data值更改 程序运行时我会 hetRAM->Instruction[12].Data = (U32)(0x90AD0 * LLD_MotorDutyCycle); hetRAM->Instruction[13].Data = (U32)((hetRAM->Instruction[12].Data >> 1) + 0x48568); 更改占空度及相对应的PWM低电平1/2处 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
707 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
617 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1079 浏览 1 评论
773 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
537 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
189浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
145浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
12浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
137浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
132浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 16:55 , Processed in 1.317177 second(s), Total 59, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号