2 votos

Utilizando el RTCC interno del PIC18F26J50

Estoy intentando hacer funcionar el RTCC interno pero parece que no funciona.

Lo que estoy usando

  • MikroC pro para PIC
  • usando el reloj interno de 8mhz(INTOSCPLL)
  • Uso de INTRC como fuente de reloj para RTCC

y utilizando el siguiente código:

 void main() {

 char txt[7];

 //Setup RTC
 T1CON.T1OSCEN = 1;
 delay_ms(50);
 RTCCFG.RTCWREN = 1;
 PADCFG1.RTSECSEL1 = 1;
 PADCFG1.RTSECSEL0 = 0;
 RTCCFG.RTCEN = 1;
 RTCCFG.RTCPTR1 = 0;
 RTCCFG.RTCPTR0 = 0;

 //Set analog ports as Digital
 ANCON0 = 0x1F;
 ANCON1 = 0x1F;

 I2C1_Init(400000);
 Oled_Init();
 Oled_FillScreen(0x00);

 while(1){
    IntToStr(RTCVALH, txt);
    Oled_Text(txt,0,2);
    IntToStr(RTCVALL, txt);
    Oled_Text(txt,0,4);
    delay_mS(1000);
 }
}

El RTCVALH y el RTCVALL deben mostrar minutos y segundos. Pero sus valores no cambian en absoluto. Muestran valores constantes de 56 y 50.

¿Qué pasos me faltan?

1voto

Bilal Puntos 49

Creo que hay que poner RTCCFG.RTCWREN = 0; después de haber terminado de escribir en él. La hoja de datos lo menciona en la sección 17.2.7 BLOQUEO DE ESCRITURA

0voto

Vitaly Zdanevich Puntos 101

Asegúrate de que los bits de configuración para establecer la fuente de sincronización del RTC son correctos. Los bits responsables es el bit RTCOSC en el CONFIG3L.

EDIT: RTCWREN no se puede poner simplemente a uno. Usted debe seguir la secuencia mencionada en la hoja de datos

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X