Projects describing Sleep Mode in PSoC 3 with various wake-up sources have been shown. A document is also attached describing the same.
Attaching the Project
It is recommended to disable RTC Interrupt before entering Sleep Mode. Once the device wakes up from sleep during the One PPS Event, first restore the clock and then enable the RTC Interrupt. This would help to execute large RTC ISR code quicker. This is because CyPmSaveClocks() function could decrease master clock frequency. If the RTC Interrupt is enabled after the clock configuration is restored, this would help the ISR to be executed faster.
But what if our application requires the use of RTC interrupt even during sleep mode?
For PSoC 5 architectures (both PSoC 5 and PSoC 5LP devices), an interrupt is required for the CPU to wake up, so interrupt is disabled for PSoC3 only.
If your application ( PSoC 3 Based) requires RTC interrupt even in sleep, then you should not disable the interrupt before sleep , however you may have to have to compromise for larger current consumption.
When I2C is used as a wake-up source, there is no need to need not use I2C_SaveConfig() and I2C_RestoreConfig().
The Sleep and Wakeup APIs will call SaveConfig()and RestoreConfig() respectively. So there is no need to explicitly call these APIs.
I2C_Wakeup() would actually call I2C_RestoreConfig(). You can refer the implementation of I2C_Wakeup() in the I2C_PM.c file. So if we are again calling the I2C_RestoreConfig() after I2C_Wakeup(), there can be issues since you are trying to reconfigure I2C while it performs transaction. The device would wake-up only once after an I2C Address Match. I2C Operation fails on subsequent sending of data.
So there is no need to need not use I2C_SaveConfig() and I2C_RestoreConfig() before sleep and wake-up respectively.