saludos acá nuevamente con el tema del rtc, pasa que en la libreria q adjunto el maestro Redpic para leer la hora hay una función, para leer la fecha hay otra, funciones independientes, pero para fijar la fecha y hora solo existe una función para ambos, quisiera fijarlos independientemente, entonces se veria obligado a modificar la funcion o crear dos independientes, ahora nose si mi idea sera correcta, entonces haria lo siguiente:
//esta es la funcion tal y como esta
void ds1307_set_date_time(byte day, byte mth, byte year, byte dow, byte hr, byte min, byte sec){
#ifndef USE_INTERRUPTS
disable_interrupts(global);
#endif
sec &= 0x7F;
hr &= 0x3F;
i2c_start();
i2c_write(0xD0);
i2c_write(0x00);
i2c_write(ds1307_bin2bcd(sec));
i2c_write(ds1307_bin2bcd(min));
i2c_write(ds1307_bin2bcd(hr));
i2c_write(ds1307_bin2bcd(dow));
i2c_write(ds1307_bin2bcd(day));
i2c_write(ds1307_bin2bcd(mth));
i2c_write(ds1307_bin2bcd(year));
i2c_stop();
#ifndef USE_INTERRUPTS
enable_interrupts(global);
#endif
}
para por ejemplo solo cambiar la fecha haria esto:
void ds1307_set_date(byte day, byte mth, byte year, byte dow){
#ifndef USE_INTERRUPTS
disable_interrupts(global);
#endif
i2c_start();
// i2c_write(0xD0); // estas seguirian en su lugar? o reemplazo la direccion de la fecha directamente en reemplazo de 0x00?
// i2c_write(0x03);
i2c_write(ds1307_bin2bcd(dow));
i2c_write(ds1307_bin2bcd(day));
i2c_write(ds1307_bin2bcd(mth));
i2c_write(ds1307_bin2bcd(year));
i2c_stop();
#ifndef USE_INTERRUPTS
enable_interrupts(global);
#endif
}
Quedo bien asi??, y para la hora seria algo similar:
void ds1307_set_time(byte hr, byte min, byte sec){
#ifndef USE_INTERRUPTS
disable_interrupts(global);
#endif
sec &= 0x7F;
hr &= 0x3F;
i2c_start();
i2c_write(0xD0);
i2c_write(0x00);
i2c_write(ds1307_bin2bcd(sec));
i2c_write(ds1307_bin2bcd(min));
i2c_write(ds1307_bin2bcd(hr));
i2c_stop();
#ifndef USE_INTERRUPTS
enable_interrupts(global);
#endif
}
Haber que opinan maestros? enseguida lo compilo y veo si da resultado, sino os volveré a molestar
Y una pregunta mas, la NVRAM tiene espacio para grabar algunos datos? puedo grabar en ella datos extra de poderse, para sucesos especiales? da alguna señal? o en q más se utiliza la NVRAM?
muchas gracais un saludo a todos