KEA-128 waitmode and stopmode

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

KEA-128 waitmode and stopmode

4,335 Views
prasannahv
Contributor II

I want enable wait mode and stopmode in kea128 MCu . please share any sample code

Labels (1)
0 Kudos
Reply
6 Replies

4,332 Views
ErichStyger
Specialist I

Wait mode is very simple:

__asm("wait");

Stop mode: consult the SDK examples.

 

I hope this helps,

Erich

0 Kudos
Reply

4,330 Views
prasannahv
Contributor II

Thank you ErichS for your replay..

__asm("wait");

for this command it is giving error. 

0 Kudos
Reply

4,328 Views
ErichStyger
Specialist I

Hi @prasannahv ,

I'm sorry, mixed up things. Wanted to write 'wfi' (wait for interrupt) which puts it into WAIT mode.

The more complete example would be to use 

  __asm volatile("dsb");
  __asm volatile("wfi");
  __asm volatile("isb");

The barrier instructions might not be strictly needed, but I always add them.

Erich

0 Kudos
Reply

4,317 Views
ErichStyger
Specialist I

Hi @prasannahv ,

it looks like you are using Processor Expert. I'm not using your device, but with Processor Expert it should come with low power mode support in the CPU component.

As for wfi: it does exactly that: it enters CPU wait mode and waits for the next interrupt.

If there is no interrupt coming, it will wait forever.

 

Erich

0 Kudos
Reply

4,313 Views
prasannahv
Contributor II

Thanks ErichS

4,321 Views
prasannahv
Contributor II

Hi Erich , Here i attached my testcode.  Now device is going to waitmode , it is not going to while loop but after some time device is restarting.

 

int main(void)
/*lint -restore Enable MISRA rule (6.3) checking. */
{
/* Write your local variable definition here */

/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
/**** Board level initializations ****/
Clk_Init(); //clock initialization
GPIO_Init();
UART_Init(115200); /*Initialize Uart 2 debug port at 115200 bauds */
Enable_Interrupt(INT_UART2); /* Enable UART2 interrupt */
give_delay_in_ms(5);
print_debug("Test_main\r\n",(int)(int)strlen("Test_main\r\n"));      
give_delay_in_ms(1000);
__asm volatile("dsb");

__asm volatile("wfi");

__asm volatile("isb");
while(1){
debugport_command_interpreter();
print_debug("Test_main\r\n",(int)(int)strlen("Test_main\r\n"));
give_delay_in_ms(1000);
}
/* Write your code here */
/* For example: for(;;) { } */

/*** Don't write any code pass this line, or it will be deleted during code generation. ***/
/*** RTOS startup code. Macro PEX_RTOS_START is defined by the RTOS component. DON'T MODIFY THIS CODE!!! ***/
#ifdef PEX_RTOS_START
PEX_RTOS_START(); /* Startup of the selected RTOS. Macro is defined by the RTOS component. */
#endif
/*** End of RTOS startup code. ***/
/*** Processor Expert end of main routine. DON'T MODIFY THIS CODE!!! ***/
for(;;){}
/*** Processor Expert end of main routine. DON'T WRITE CODE BELOW!!! ***/
} /*** End of main routine. DO NOT MODIFY THIS TEXT!!! ***/

/* END main */

0 Kudos
Reply