cancel
Showing results for 
Search instead for 
Did you mean: 

ETH->MACISR TSIS unstoppable?

HenrikGlader
Associate III

Post edited by ST moderator to be inline with the community rules for the code sharing. In next time please use </> button to paste your code and a linker script content. Please read this post: How to insert source code.

Hello there,

I'm playing with the NUCLEO-H743ZI2 board and having difficultis with PTP.

When TSIE (MACIER is set the interrupt is getting retriggered endlessly.

I've tried to clear TSIS by reading both MACISR as well as MACTSSR (TXTSSIS bit set).

The manual states this is a way to achieve this, but neither register is cleared.

BTW, the alternate way (MACCSRSWCR) semes not being supported altho I've tried that as well.

Just at the interrupt entry:

macisr = ETH->MACISR; // 0x1000

mactssr = ETH->MACTSSR; // 0x8000

macisr2 = ETH->MACISR; // 0x1000

mactssr2 = ETH->MACTSSR; // 0x8000

macisr3 = ETH->MACISR; // 0x1000

 

Where am I doing the wrong thing?

Thank you for any input.

1 REPLY 1
HenrikGlader
Associate III

The snipplet full:

volatile unsigned macisr;

volatile unsigned macisr2;

volatile unsigned macisr3;

volatile unsigned mactssr;

volatile unsigned mactssr2;

void ETH_IRQHandler(void) __attribute__ ((optimize("O2")));

void ETH_IRQHandler(void)

{

GPIOA->BSRR = 1<<0;

macisr = ETH->MACISR;

mactssr = ETH->MACTSSR;

macisr2 = ETH->MACISR;

mactssr2 = ETH->MACTSSR;

macisr3 = ETH->MACISR;

HAL_ETH_IRQHandler(&EthHandle);

GPIOA->BSRR = 1<<16;

return;

}