mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Interne RTC mit PIC18F26J11


Autor: Matthias Wörner (Firma: Atomica Music Production) (atomica)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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:
//Interrupt Configurations
PIR3bits.RTCCIF = 0; //Clear RTC Interrupt Flag
PIE3bits.RTCCIE = 1; //Enable RTC Interrupt
IPR3bits.RTCCIP = 1; // RTC Interrupt High Priority 

//RTC Configurations
//RTCC Value Registers Write Enable RTCWREN
_asm
movlb 0x0f
movlw 0x55
movwf EECON2,0
movlw 0xAA
movwf EECON2,0
bsf RTCCFG,5,1
_endasm;
RTCCFGbits.RTCEN = 1; //RTCC module is enabled after RTCWREN is set
RTCCFGbits.RTCSYNC = 1; //RTCC Value Registers Read Synchronization bit
RTCCFGbits.RTCOE = 0; //Disable RTC clock output
RTCCFGbits.RTCPTR = 0; //RTC Pointer to Minutes and Seconds
RTCCAL = 0x00; //No adjustment

ALRMCFGbits.CHIME = 1; //A rollover from 00h to FFh is allowed
ALRMCFGbits.ALRMEN = 1; //Enable Alarm
ALRMCFGbits.AMASK = 0x05; //Alarm every hour
ALRMCFGbits.ALRMPTR = 0; //Value Alarmpointer to Minutes and seconds
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

Autor: Matthias Wörner (Firma: Atomica Music Production) (atomica)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.