I am busy looking into how I can use the alarm from a DS3231 to wake/boot a Raspberry Pi, either using Wake from Halt, or the P6 header - using the alarm functionality from the DS3231. My intention is to use the INT (active low) ping from the DS3231 to drive either RUN (P6 header) or pin 5 on the GPIO (GPIO3) low.
The challenges here are that GPIO3 is shared with SCL on the I2C bus, which the DS3231 also uses. That raises the question of whether I can find a way to connect the INT pin from the DS3231 to GPIO3 without conflicting with the I2C bus (SCL). One suggestion I have seen for using a push-button switch to drive GPIO3 low (for wake on halt) when there is an I2C bus as well is to connect a 1k resistor and a diode in series (resistor to GPIO3, anode of diode to resistor) to GPIO3 to protect it when it is set as an output. The question I have is whether this will work when using the RTC to pull GPIO3 low. (Clearly the SCL signal would get messed up if an alarm is activated while the Pi is running.)
Driving the RUN ping (P6 header) low seems like a simpler hardware solution. The problem this has is that if the RPi is running when the alarm occurs, it will be reset, which I don't want. One thought I have had is to find a line which I know will always be high when the RPi is running, and feed that and the INT pin from the DS3231 through an OR gate. The challenge here is to find an appropriate line to use.