Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AWU_IRQHandler not working for STM8S #164

Open
wmarkow opened this issue Jul 8, 2024 · 0 comments
Open

AWU_IRQHandler not working for STM8S #164

wmarkow opened this issue Jul 8, 2024 · 0 comments

Comments

@wmarkow
Copy link

wmarkow commented Jul 8, 2024

I wanted to use the active halt power save mode together with AWU unit to wake up.
Basically the concept of AWU works but the processor gets restarted every time the AWU interrupt occur. Expected behavior is that the procesdor should continue its execution from the place where HALT instruction has been called.

Root cause: it is not possible to correctly set the AWU_IRQHandler to some specific method. This code doesn't work:

INTERRUPT_HANDLER(AWU_IRQHandler, 1)
{
    AWU->CSR &= (uint8_t)(~AWU_CSR_AWUF);
}

because the AWU_IRQHandler is commented out in the stm8s_it.h file:

// SDCC patch: __interrupt keyword required after function name --> requires new block
#elif defined (_SDCC_)

// INTERRUPT_HANDLER_TRAP(TRAP_IRQHandler);                 /* TRAP */
// INTERRUPT_HANDLER(TLI_IRQHandler, 0);                    /* TLI */
// INTERRUPT_HANDLER(AWU_IRQHandler, 1);                    /* AWU */
// INTERRUPT_HANDLER(CLK_IRQHandler, 2);                    /* CLOCK */
 INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3);             /* EXTI PORTA */
 INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4);             /* EXTI PORTB */
 INTERRUPT_HANDLER(EXTI_PORTC_IRQHandler, 5);             /* EXTI PORTC */
 INTERRUPT_HANDLER(EXTI_PORTD_IRQHandler, 6);             /* EXTI PORTD */
 INTERRUPT_HANDLER(EXTI_PORTE_IRQHandler, 7);             /* EXTI PORTE */

In this way the AWU_IRQHandler is set to zero and the processor gets restarted on this interrupt.

When I modify the file and uncomment the line

INTERRUPT_HANDLER(AWU_IRQHandler, 1);                    /* AWU */

then everything works fine. Is there any particular reason why the interrupt handler is commented out?

wmarkow added a commit to wmarkow/arduino-sandbox that referenced this issue Jul 10, 2024
…duino STM8 Framework.

tenbaht/sduino#164  AWU_IRQHandler not working for STM8S

We will use Platformio scripting to apply patched cores/arduino/stm8s_it.h file.
wmarkow added a commit to wmarkow/arduino-sandbox that referenced this issue Jul 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant