Reply
Posts: 7
Registered: ‎07-08-2014

Si4010 wake from shutdown??

Hi, I am having trouble getting the Si4010 to wake up via keypress, falling edge of gpio 1/4/7.

The chip appears to enter shutdown but never wakes up. GPIO2 is an output to base of a transistor and this would cause the chip to continuously wake up previously if set as input.

 

Now I leave GPIO2 set as output, and set low while the rest are inputs. Matrix and Roff modes are disabled elsewhere.

My shutdown code is like this:

void shutdown(void)
{
    KEYPORT &= ~(1 << KDO);
    if ((PROT0_CTRL & M_NVM_BLOWN) > 1) //if part is burned to user or run mode.
    {
  //Disable all interrupts
        EA = 0;
  // Shutdown
        vSys_Shutdown();
    }
}

 How can I get it to wake up??

 

Posts: 254
Registered: ‎09-10-2013

Re: Si4010 wake from shutdown??

In my design, I need to see both edges of the switch, so I use an inverter and two inputs.  Having one input held LO does not wake up the Si4010, only the transition from HI to LO.

 

I'm not sure why your set up is not working, but this code works for me:

 

   if ((PROT0_CTRL & M_NVM_BLOWN) > 1) //if part is burned to user or run mode.
   {
      P0CON = 0x00; // all pins input/open-drain
      P0 = 0xFF;  // force all pins to HI/input

      // Disable the Matrix and Roff modes on GPIO[3:1] 
      PORT_CTRL &= ~(M_PORT_MATRIX | M_PORT_ROFF | M_PORT_STROBE);
      PORT_CTRL |= M_PORT_ROFF; // turn off the pull-ups!
      PORT_CTRL |= M_PORT_STROBE;
      PORT_CTRL &= (~M_PORT_STROBE);

      // enable Sleep timer for Low Battery monitoring
      vSleepTim_SetCount(sleepTime | SLEEP_POR_FLAG);

      //Disable all interrupts
      EA = 0;
      // Shutdown
      vSys_Shutdown();
   }

 

You could try the sleep timer just to confirm that the system wakes up once in a while.

Posts: 5
Registered: ‎03-16-2017

Re: Si4010 wake from shutdown??

Could someone explain why the pull-ups are turned off. If the inputs float could they not wake the device up?