主题中讨论的其他器件:HALCOGEN
我有我自己的汇编程序、我可以通过 HET2选项卡中的高级配置模式使用它。
我有该程序的第二条指令 LO1、生成了一个 IRQ = ON 的中断。 (它是一个 ECMP)。
中断没有工作。 我已经在主代码中使用 hetREG2->intENAS = Phet_L01_1进行了配置、但仍然无法正常工作。
有人能帮忙吗?
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.
尊敬的 Nuno:
HETFLG 是否置位?
您能将您的 N2HET 汇编代码与我们分享吗? 您可以使用 HET IDE 来测试您的 NHET 代码、并检查中断是否被生成。
https://www.ti.com/tool/HET_IDE
这是我的示例:
;简单 PWM
l00 CNT{reg=A、IRQ=off、max= 10}
L01 ECMP{en_pin_action=on、pin=0、action=PULSELO、reg=A、IRQ=on、data=5、hr_data=7};
L02 BR{next= L00、COND_addr=L00、EVENT= NOCOND}
当 REGA 的值= ECMP = 5中的数据时、一个中断被生成(HETFLG 的位1被置位)。
即使 N2HET 中断使能设定寄存器(HETINTENAS)的相应位为0、HETFLG 也被置位。
为了产生一个中断、在 N2HET 中断使能置位寄存器(HETINTENAS)中的相应位必须为1。
是否启用了 IRQ?
在一个中断请求到达 CPU 前、有三个"栅极":
例如、设置 HETINENAS 中的位。
_enable_IRQ ()
尊敬的 Nuno:
刚刚创建了一个示例、DMA 传输由从 N2HET2 RAM 运行的 N2HET 指令触发。
1. DMA 将数据从一个缓冲区传输到位于 MCU SRAM 中的另一个缓冲区
2. DMA 请求线24映射到 DMA 通道0。 请求行24是来自 N2HET 指令的请求编号6
dmaReqAssign (DMA_CH0、 24 );
一条 N2HET 指令能够通过编辑"reqnum"来选择8个请求线路中的一个、在这个示例中使用 reqnum=6。
eCMP{reqnum= 6 ,请求= GENREQ ,en_pin_action=on、pin=8、action=PULSELO、reg=A、IRQ=on、data=5、hr_data=0};
3。 N2HET 请求目的选择寄存器(HETREQDS)应该被配置成触发 DMA 通道、而不是 HTU 通道:
hetREG2->REQDS = 0xFF;
hetREG2->REQENS = 0xFF;
4. hetRAM2->Instruction [1].Control |=(0x1<<27)|(0x1<<22));
这是为了启用请求和引脚操作。
我的测试显示数据通过 DMA 通道0传输到 RX_DATA 缓冲区。 DMA 中断、和 N2HET 中断被生成。
申请行24是否映射到通道20?
您可以使用任何 DMA 通道、但请求编号是固定的:20、21、24、25
[..]中突出显示的数字(4、5、6、7) 下表中是 HET 指令 ECAP 中定义的请求行。
如果 ECMP 中的请求行为4、您已经将请求20分配给 DMA 通道。
满足这两个条件后,当 ISR 被称为代码跳转到 HetNotification 或 pwmNotification?
在中断生成后、VIM 控制器将 HET ISR 的地址提供给 CPU、然后 CPU 开始执行 ISR 指令。