RSL10 weird wake-up behaviour

Dear

We want to use the RSL10 wake-up (on both rising and falling edge in a battery powered solution to wake- up the IC).

We are using standard RSL10 evaluation board (RSL10-001GEVB) and see that the wake-up behavior is acting strange, below a more detailed description of our problem.

We use:

  • ON Semiconductor IDE [2019-06(4.12.0)]
  • RSL10-001GEVB
  • standby_power_mode example

We disable the RTC by changing following line:
ACS->RTC_CTRL = RTC_ALARM_DURATION | RTC_CLK_SRC_XTAL32K; → ACS->RTC_CTRL = RTC_ALARM_DISABLE;

And change following configuration:

    /* Update wake-up configuration and control registers */
    ACS->WAKEUP_CFG = WAKEUP_DELAY_32     |
    				  WAKEUP_WAKEUP_PAD_RISING  |
                      WAKEUP_DIO3_DISABLE |
                      WAKEUP_DIO2_DISABLE |
                      WAKEUP_DIO1_DISABLE |
					  WAKEUP_DIO0_FALLING |
                      WAKEUP_DIO0_ENABLE;

→ we want to test wake-ups on falling and rising edges, what input to use (DIO0/1/2/3 or WAKEUP pin) doesn’t matter since we see the same behaviour below on all pins.

What we see when doing the falling edge is 2 wake-ups: 1 when putting GND to the pin and 1 when pulling
What we see when doing the rising edge is unstable wake-up behaviour (when pushting E.G 10 times it only comes throught 1 or 2 times).

Greetings
Thomas

1 Like

@thomas

Would you please to clarify how are you generating the rising edge for you testing?

Dear,

Tried standard jumper wire and switch.

@thomas
I have tested this on DIO0 with an external push button SW100.

tempsnip


 sleep_mode_flash_env->wakeup_cfg = WAKEUP_DELAY_32          |
                                       WAKEUP_WAKEUP_PAD_FALLING |
                                       WAKEUP_DIO3_DISABLE      |
                                       WAKEUP_DIO2_DISABLE      |
                                       WAKEUP_DIO1_ENABLE      |
                                       WAKEUP_DIO0_ENABLE;


/* The duration LED is on [s] */
#define LED_ON_DURATION                 0.1


/* Enable/disable wake-up by RTC
 * Options are:
 *     - 0: enabled
 *     - 1: disabled */
#define WAKEUP_RTC_ENABLE               0


image


Blue Trace : DIO0
Yellow Trace: Anode LED1


As you can see in sleep _RAM_retention example push button signal triggers LED DIO6 on RSL10 board for 100 ms. (yellow trace) . Please try to simulate this setting on your board and let me know your result.

I tested cfg WAKEUP_DIO0 _ FALLING edge:

 sleep_mode_flash_env->wakeup_cfg = WAKEUP_DELAY_16          |
                                       WAKEUP_WAKEUP_PAD_RISING |
                                       WAKEUP_DIO3_DISABLE      |
                                       WAKEUP_DIO2_DISABLE      |
                                       WAKEUP_DIO1_ENABLE       |
									   WAKEUP_DIO0_FALLING      |
                                       WAKEUP_DIO0_ENABLE;

Power consumption from Sleep to WAKEUP :

Hi Martin,

I use the sleep _RAM_retention example, i’m using the RSL10-002GEVB board, when trying to wake up the RSL10 from DIO0,DIO1, DIO2 and DIO3, only the falling edge is working.

  • The pad input is tied to VDDO for rising edge, a wake up is triggered: KO
  • The pad input is tied to GND for falling edge, a wake up is triggered: OK
    When visualizing this DIOs with oscilloscope , they have a voltage of 2.7V.
    do you have an idea about this issue ?

Best regards,

Had same, add the series resistor and damping cap for sure!

1 Like

Dear Martin

What device you used for the current measurement? Since we think we have a bug for some reason but need to verify.

Greetings
Thomas Van Aken

@thomas

You can use any power profiler that is capable of uA resolution, that would be fine.
We will have our own of solution to provide these kind of measurements soon.

Thank you for using our community forum .

1 Like

@Embed Please try : The pad input is tied to GND (not VDDO ) for rising edge, a wake up is triggered: ?

In addition change this in the code :

sleep_mode_flash_env->wakeup_cfg = WAKEUP_DELAY_16          |
                                       WAKEUP_WAKEUP_PAD_RISING |
                                       WAKEUP_DIO3_DISABLE      |
                                       WAKEUP_DIO2_DISABLE      |
                                       WAKEUP_DIO1_ENABLE  

Hi Martin,

Please try : The pad input is tied to GND ( not VDDO ) for rising edge, a wake up is triggered: ?

In fact, the wake up PAD works either in falling edge or rising edge.

I wanted to say that the problem comes from waking up using DIO0,DIO1, DIO2 and DIO3. Only the falling edge works.

When it’s configured in rising edge, the wake up is triggered too when tied to GND.

Best regards,

@Embed Yes you are correct with configuration of DIO pins to GND as well.

I have tested DIO0 enabled , triggered on RISING edge. - YELLOW trace

You can see 100ms LED_ON_DURATION ( DIO6 GREEN LED) - BLUE trace

.

Please try to change in your main.c file like I did, save and rebuild.

    sleep_mode_flash_env->wakeup_cfg = WAKEUP_DELAY_32          |
                                       WAKEUP_WAKEUP_PAD_RISING |
                                       WAKEUP_DIO3_DISABLE      |
                                       WAKEUP_DIO2_DISABLE      |
                                       WAKEUP_DIO1_DISABLE 		|
									   WAKEUP_DIO0_RISING		|
                                       WAKEUP_DIO0_ENABLE;

Thank you Martin for your help and proposition.

For me, rising edge wake up doesn’t work using DIO pin.

I tired many things but impossible to have this working.

Best regards,

@Embed Would it be possible to use another RSL10 board and test ? Maybe you can attach your project file so I can try it on my RSL10 board.

Hi Martin,

I generated a square signal to the input of the DIO0 and it works fine when configured to rising or falling edge. Below an exemple with rising edge

  • Red signal : The waveform input
  • Blue signal : a GPIO goes to high when RSL10 wakes up.

Best regards,

@Embed Hello, so as I understood this hes been solved , correct?

Sorry, yes, the problem is solved.

Best regards,

@martin.bela when DOI1 or DOI0 is configured as wake-up low/high. The usage keeps to be around 14uA at 3.3V supply when it is shorted to GND… How to bypass this? When “floating” or connected to VDD it is in nA range.

First we tried this on the eval board, we saw that this looked great on the “Current header”, but this one didn’t include VDDO.

We tied evrything together like on the battery powered solution we have, and we see the same behaviour.

We see that this occurs when we tie 2 IO’s together (DIO0 and DIO1 and then a connection to GND). But we need both rising and falling wake-up’s from 1 source.

How to fix this issue? Or how to have both rising and falling interrupt on one pin?

Hi @thomas

We are not able to reproduce what you are seeing, and can also confirm that we do not have a setting that will perform a wakeup on either transition edge.

When used the ‘sleep_RAM_retention’ sample code with DIO0 wakeup enabled, and with a two pin button wired to DIO0 and Ground, we are able to trigger the wakeup on either the rising edge (when released the button) or the falling edge (when pressed the button) without issue, and with the board only consuming ~80nA.

When attached two 2-pin buttons (one on DIO0 and Ground, the other on DIO1 and Ground) and set one to rising and the other to falling, we are also able to trigger a wakeup using either button without experiencing the reported current draw.

Probably this problem is caused by allowing one of the wakeup pins to short directly to ground, as this has caused ~14uA of current leakage in our tests. There is no way to bypass this. We suggest the best approach is to transition the rising edge wakeup to ground and then back to floating, as going from floating to 3.3V will not trigger the rising edge wakeup.

Thank you for using our Community Forum.

@rastislav.stefun did you try the same setup as above? Short DIO0 and DIO1 and then put DIO0 in rising edge and DIO1 in falling? Can we maybe have a short call.

Dear

We have the same issue when testing with 1 button (so a switch) with rising wake-up:

  • When pushing and keeping it pushed, it keeps using the uA current.
  • When pushing and releasing, it uses the nA current.

So how we should go to floating state afterwards?

Greetings