请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:F28M35H52C 您好!
我正在进行一项设计、其中 F28M35H52C1侦听外部中断引脚上的 GPS PPS 信号。 我将通过切换中断 ISR 内的引脚来比较外部中断的延迟。
当在 M3内核上设置此中断时、我看到延迟为930-950ns。 当通过 C28x 内核上的 XINT1设置同一信号时、我看到延迟为400-700ns。 我对实际延迟值的担心程度与对延迟变化的担心程度相同。 我将使用由源 GPS PPS 信号触发的以800MHz 运行的数字发现2来测量这些值。
两个内核都以100MHz 运行。 为什么 C28x 端与切换 ISR 中的引脚所需的时间如此不一致。
C28x 中断设置:
EALLOW; //设置 PPS 引脚用于外部中断、以便在每个 //上升沿调用 pps_interrupt。 PieCtrlRegs.PIECTRL.bit.ENPIE = 1; PieCtrlRegs.PIEIER1.bit.INTx4 = 1; XIntertRegs.XINT1CR.bit.ENABLE = 1; XIntertRegs.XIntC1CR.bit.PPS = 1;GpioRegs.XINT4CR.GPIO_TRIPSEL = 1 ;GPIO_TRIPTRIPTRIPTRINTRINTR_BIT.GPIO_TRINTRIGN = 1 PieVectTable.XINT1 =&pps_ISR; EDIS; __interrupt void pps_ISR (void) { GpioDataRegs.GPATOGGLE.bit.GPIO15=1; //确认此中断以从组1获取更多内容 PieCtrlRegs.PIEACX.ALL = PIEACK_Group1; }
M3中断设置:
GPIOPinTypeGPIOInput (GPIO_Porta_base、GPIO_PIN_7); //启用处理器中断。 IntMasterEnable(); //启用中断*/ GPIOIntTypeSet (GPIO_Porta_base、GPIO_PIN_7、GPIO_RISING _EDGE); GPIOPinIntEnable (GPIO_Porta_base、GPIO_PIN_7); GPIOPortIntRegister (GPIO_Porta_base、ISR_PPS); 中断空 ISR_PPS () { GPIO_TOGGLE (BURST_CHECK); //清除中断标志,以便不会反复调用中断。 GPIOPinIntClear (GPIO_Porta_base、GPIO_PIN_7); }
是否有办法使 C28x 内核以更确定的方式为 ISR 提供服务? 我不介意它需要的时间是长500ns、还是每次都非常接近相同的数字。
谢谢、
Aditya