Efectivamente hay que enviar, aunque sea solo la primera vez, el modo de carga de la batería. En un proyecto que hice, cuando inicia el programa envío el siguiente comando:
write_ds1302(0x90,0b10100101); // Configura RTC
Y funciona perfectamente (en mi caso con un supercap). Si no recuerdo mal, por defecto no está habilitado el cargador. Mira el datasheet y modifica el valor enviado si lo crees oportuno para tu aplicación.
Saludos