Forum: Mikrocontroller und Digitale Elektronik Interne RTC mit PIC18F26J11


von Matthias W. (Firma: Atomica Music Production) (atomica)


Angehängte Dateien:

Lesenswert?

Problemstellung:
Ich will die interne RTC mit dem internen RC-Glied betreiben(anstatt 
externer 32,678 khz Quarz). Ich möchte den µC gerne jede Stunde aus dem 
Sleep-Modus aufwecken, eine Messung mit einer Photodiode durchführen 
(Messung funktioniert ohne RTC einwandfrei), den Messwert in eine 
Variable einspeichern, und anschließend wieder den den Sleep Mode 
versetzen.

Mein momentaner Code sieht folgendermaßen aus:
1
//Interrupt Configurations
2
PIR3bits.RTCCIF = 0; //Clear RTC Interrupt Flag
3
PIE3bits.RTCCIE = 1; //Enable RTC Interrupt
4
IPR3bits.RTCCIP = 1; // RTC Interrupt High Priority 
5
6
//RTC Configurations
7
//RTCC Value Registers Write Enable RTCWREN
8
_asm
9
movlb 0x0f
10
movlw 0x55
11
movwf EECON2,0
12
movlw 0xAA
13
movwf EECON2,0
14
bsf RTCCFG,5,1
15
_endasm;
16
RTCCFGbits.RTCEN = 1; //RTCC module is enabled after RTCWREN is set
17
RTCCFGbits.RTCSYNC = 1; //RTCC Value Registers Read Synchronization bit
18
RTCCFGbits.RTCOE = 0; //Disable RTC clock output
19
RTCCFGbits.RTCPTR = 0; //RTC Pointer to Minutes and Seconds
20
RTCCAL = 0x00; //No adjustment
21
22
ALRMCFGbits.CHIME = 1; //A rollover from 00h to FFh is allowed
23
ALRMCFGbits.ALRMEN = 1; //Enable Alarm
24
ALRMCFGbits.AMASK = 0x05; //Alarm every hour
25
ALRMCFGbits.ALRMPTR = 0; //Value Alarmpointer to Minutes and seconds
26
ALRMRPT = 0xFF; //Alarm will repeat 255 more times



Fragen:
1. Vgl. Anhang 16.2.7: Laut Datenblatt muss ich zuerst RTCWREN auf 1 
stellen, bevor ich die RTC auf enable stelle. Habe ich das so richtig 
eingefügt mit dem Example 16-1????

2. Könnte mir jemand 16.2.5 erklären. Aus dem Text werde ich irgendwie 
nicht schlau...??

3.Wenn ich mir das alles in der Watch betrachte nach der Initialisierung 
werden soweit alle Register richtig gesetzt, bis auf das 
RTCCFG-Register. Dieses Register ist auf 0x00. Sprich RTCWREN = 0 und 
RTCEN ebenfalls auf Null (RTC is disabled). Selbst wenn ich den Code 
step für step durchgehe werden die Bits in den Registern nicht gesetzt. 
Aber warum????

4. Wie gebe ich der RTC Startwerte vor (Tag, Stunde, Minute, etc.). 
Einfach immer das Pointerregister veränderung und in die jeweiligen 
Register die Startwerte reinschreiben (Year, Minute, etc.)??

5. Vgl. Anhang Figure 16-4. Ich benutze den Internal RC: Wo stell ich 
den Clock Prescaler ein?. Wie komme ich zum Sekundentakt. Aus dem 
Hinweis "Note 1" werd ich nicht schlauf, welchen Wert ich da in das 
Register schreiben muss? Wär super, wenn die Grafik jemand erläutern 
könnte.

6. Muss ich überhaupt die RTC Register initialisieren, wenn ich nur die 
Alarmfunktion will. Sprich nur aufwecken, messen, schlafen legen ohne 
irgendwo eine Uhrzeit anzeigen zu lassen.


P.S.: Manche würden jetzt sagen, dass der interne RC nicht genau genug 
ist. Für meinen Zweck würde es jedoch reichen!



Wäre echt super, wenn mir jemand kompetent weiterhelfen könnte, sonst 
verzweifle ich hier noch!

Danke im Voraus

Lg Matthias

von Matthias W. (Firma: Atomica Music Production) (atomica)


Lesenswert?

Gibt es wenigstens irgendwo Examples für eine RTC-Initialisierung für 
die PIC18 Familie, wenn hier schon keiner bereit ist, mir 
weiterzuhelfen?

von Peter D. (peda)


Lesenswert?

Matthias Wörner schrieb:
> wenn hier schon keiner bereit ist, mir
> weiterzuhelfen?

Ja ne, is klar.
Hier sitzen natürlich tausende Leute vorm PC, die alle Examples kennen 
und Deinen PIC auch.
Und die wollen Dir absichtlich nicht helfen, sondern lachen sich ins 
Fäustchen.

Stell dochmal ne AVR-Frage, da weiß ich vielleicht Bescheid.


Peter

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.