Moderadores: 51, guest2003, Renie, gpenga
/************************************************************************
FUNCAO: p_init_rtc
PARAMETROS: NENHUM
RETORNO: NENHUM
DESCRICAO: FUNÇÃO PARA INICIALIZAR O HW DO RTC
*************************************************************************/
void p_init_rtc (void)
{
// Habilita RTC com clock externo
CCR = DEF_BIT_CLKEN | DEF_BIT_CLKSRC;
// Habilita a interrupção a cada minuto
CIIR = DEF_BIT_IMMIN;
// Desabilita o alarme
AMR = 0;
// Define a função da interrupção
VICVectAddr13 = (U32) p_rtc_isr;
VICVectCntl13 = DEF_VIC_ENABLE_RTC;
VICIntEnable = DEF_VIC_BIT_RTC;
// Verifique se foi gravado a hora de desligamento
p_eep_cmd(EEP_READ, EEP_END_TIME_DOWN, (U8 *) &st_rtc_eep_cache, sizeof(st_rtc_eep_cache));
p_eep_flush();
if (!(
(p_rtc_check_hora (&st_rtc_eep_cache)) &&
(p_rtc_check_data (&st_rtc_eep_cache))
))
{
// Hora inicial
st_rtc_eep_cache.hora = 0;
st_rtc_eep_cache.min = 0;
st_rtc_eep_cache.seg = 0;
st_rtc_eep_cache.dia = 24;
st_rtc_eep_cache.mes = 9;
st_rtc_eep_cache.ano = 2008;
}
p_rtc_write_time (&st_rtc_eep_cache);
p_rtc_load_ttl();
}
/************************************************************************
FUNCAO: p_rtc_read_time
PARAMETROS: st_rtc_temp
RETORNO: NENHUM
DESCRICAO: SALVA O VALOR DO RTC INTERNO NA ESTRUTURA PASSADA
*************************************************************************/
void p_rtc_read_time (st_rtc * st_rtc_temp)
{
st_rtc_temp->hora = (U8) HOUR;
st_rtc_temp->min = (U8) MIN;
st_rtc_temp->seg = (U8) SEC;
st_rtc_temp->dia = (U8) DOM;
st_rtc_temp->mes = (U8) MONTH;
st_rtc_temp->ano = (U16) YEAR;
}
/************************************************************************
FUNCAO: p_rtc_write_time
PARAMETROS: st_rtc_temp
RETORNO: NENHUM
DESCRICAO: SALVA O VALOR PASSADO NO RTC INTERNO
*************************************************************************/
void p_rtc_write_time (st_rtc * st_rtc_temp)
{
HOUR = st_rtc_temp->hora;
MIN = st_rtc_temp->min;
SEC = st_rtc_temp->seg;
DOM = st_rtc_temp->dia;
MONTH = st_rtc_temp->mes;
YEAR = st_rtc_temp->ano;
}
lrfad2 escreveu:Barboza...
Hj de manhã escrevi um código muito similar ao seu (mas dando interrupção a cada segundo). Tenho esperanças que seja uma solução... de qq maneira, até agora não sei o que está causando o problema e eu não curto muito ficar sem entender as coisas....
eu vi um negócio legal no seu código -> gravar a hora que foi desligado. Vc poderia me explicar um pouco melhor isso? Como vc faz para gravar sendo que vc já retirou a alimentação da placa? Vc tem uma bateria que mantem só o processador funcionando? ou o processador + RTC?
Usuários navegando neste fórum: Google [Bot] e 1 visitante