Verwendung der internen RTCC von PIC18F26J50

Ich versuche, das interne RTCC zum Laufen zu bringen, aber es scheint nicht zu funktionieren.

Was ich benutze-

  • MikroC pro für PIC
  • mit internem 8-MHz-Takt (INTOSCPLL)
  • Verwendung von INTRC als Taktquelle für RTCC

und mit folgendem Code:

 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);
 }
}

RTCVALH und RTCVALL sollten Minuten und Sekunden anzeigen. Aber ihre Werte ändern sich überhaupt nicht. Sie zeigen konstante Werte von 56 und 50.

Welche Schritte übersehe ich?

Antworten (2)

Ich glaube, Sie müssen RTCCFG.RTCWREN = 0 setzen; nachdem Sie mit dem Schreiben fertig sind. Das Datenblatt erwähnt es unter Abschnitt 17.2.7 WRITE LOCK

Stellen Sie sicher, dass Ihre Konfigurationsbits zum Einstellen der RTC-Taktquelle korrekt sind. Die dafür verantwortlichen Bits sind das RTCOSC-Bit in der CONFIG3L.

EDIT: RTCWREN kann nicht einfach auf eins gesetzt werden. Sie sollten die im Datenblatt angegebene Reihenfolge einhalten

Vielen Dank für Ihre Antwort, aber wenn Sie die Frage richtig lesen, werden Sie feststellen, dass ich die Verwendung von INTRC als Taktquelle für RTCC erwähnt habe , die auf CONFIG3L eingestellt ist.
Bitte überprüfen Sie die bearbeitete Antwort