RTCC Alarm erst nach 10s
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  PIC Mikrocontroller Allgemein  |  Timer (Allgemein)  |  RTCC Alarm erst nach 10s « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: RTCC Alarm erst nach 10s  (Gelesen 537 mal)
 
WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« am: Februar 08, 2012, 12:55:23 »

Hallo,
hab einen PIC18F67K22, der eine interne RTCC hat.
Der RTCC soll jede Sekunde einen Alarm auslösen (ALRMCFG=0b11000100).
Es klappt auch, nur das der erste Alarm erst nach ca. 10s kommt. Alle weiteren Alarme kommen wie geplant im Sekundentakt.
Wer hat eine Idee ?
Gespeichert
oerni
Full Member
***
Offline Offline

Beiträge: 196



Profil anzeigen WWW
« Antworten #1 am: Februar 08, 2012, 19:22:10 »

Hallo Werner,
die Elektronen brauchen bei den momentanen Außentemperaturen knapp 10 Sekunden um warm zu werden. Erst dann können sie sich schneller bewegen Grinsend
Das wäre die einfachste Erklärung, aber ohne wenigstens eine Zeile Code ist es etwas schwierig genauer zu antworten.
Tschau Oerni
Gespeichert
WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« Antworten #2 am: Februar 10, 2012, 12:19:04 »

Der Code ist relativ trivial. Die RTCC wird aktiviert und dann die Alamkonfiguration gesetzt. Mittlerweile wirds immer merkwürdiger. Lass ich den Code ohne Breakpont laufen, funktioniert es und er springt nach 1s aus rtc_init raus. Setze ich am Anfang einen Breakpoint und lass anschließend weiterlaufen, dann dauert es 10s. Vielleicht ein Problem vom Debugger ICD3 ?!


Code:

#include "Fuses.h"
#include <p18cxxx.h>

void rtc_init(void);
void rtc_unlock(void);

void main(void)
{
 rtc_init();
}

void rtc_init(void)
{
 rtc_unlock();                        // Unlock rtcc registers
 RTCCFGbits.RTCEN = 1;                // Enable the rtcc
 ALRMCFG = 0b11000100;                // Set the alarm to every second
 RTCCFGbits.RTCWREN = 0;              // Lock rtcc registers
 PIR3bits.RTCCIF = 0;
 while (PIR3bits.RTCCIF == 0)
    ;
}
 

void rtc_unlock(void)
{
 #define _RTCWREN      5
 _asm
 movlb RTCCFGbits
 movlw 0x55
 movwf EECON2,ACCESS
 movlw 0xAA
 movwf EECON2,ACCESS
 bsf   RTCCFGbits,_RTCWREN,BANKED
 _endasm
}


Gespeichert
WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« Antworten #3 am: Februar 21, 2012, 12:38:11 »

Hab mittlerweile eine Erklärung gefunden. Der SOSC Oscillator braucht im LowPower Modem 5-10s zum Starten.
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #4 am: Februar 22, 2012, 10:09:11 »

Das erscheint mir immer noch viel zu lang, das Ding sollte in max. 100ms oder so schwingen. Hast du mal die Kondensatoren geprüft? Sind die vielleicht zu groß gewählt? Ich würde zum Testen mal mit 10pF anfangen.

Gruß
Stefan
Gespeichert

Stephan
Jr. Member
**
Offline Offline

Beiträge: 88


Profil anzeigen
« Antworten #5 am: Februar 22, 2012, 10:29:25 »

> das Ding sollte in max. 100ms oder

Ein PIC schwingt ypischerweise in weniger als 50 msec an, der Power-up-Timer hat daher eine Latenz von ca 70 msec. Ich tippe auch auf die Kondensatoren am Quarz (nimm mal andere, defekt?, falscher Wert aufgedruckt?, typisch seind eigenlich 22-27 pF) oder versteckte Kapazitäten durch lange Leiterbahnen etc.
Gespeichert
Edson
Globaler Moderator
Sr. Member
*****
Offline Offline

Beiträge: 373



Profil anzeigen
« Antworten #6 am: Februar 22, 2012, 12:56:48 »

Hallo Werner,

der SOSC kann auf drei Arten betrieben werden, abhängig von den SOSCSEL-Bits im Config-Word. Wie sind diese Bits bei Dir definiert, passt die Betriebsart für deinen Quarz?

Gruß,
Edson
Gespeichert
WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« Antworten #7 am: Februar 22, 2012, 14:10:09 »

Der Oscillator ist per CONFIG auf LOW Power konfiguriert. Interessanterweise schwingt er im HIGH Power Mode gar nicht an.
Die Kondensatoren haben 15pF. Das Problem habe ich mit unterschiedlichen Platinen, d.h. Bauteildefekt ist auszuschließen.
Irgendwie scheint im 18F67K22 ein anderer Oscillator-Treiber drin zu sein, da ich mit anderen PICs (18F2520, 16xx) bisher nie Probleme hatte.
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #8 am: Februar 22, 2012, 16:20:09 »

Komisch, die 15pF sind eigentlich im üblichen Rahmen. Versuche doch mal einen Widerstand parallel zum Quarz zu hängen, Größenordnung 1MOhm bis 10MOhm.
Gespeichert

WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« Antworten #9 am: Februar 23, 2012, 12:38:12 »

10M parallel bringt auch keine Veränderung.  Traurig
Gespeichert
WernerE
Newbie
*
Offline Offline

Beiträge: 42


Profil anzeigen
« Antworten #10 am: Februar 23, 2012, 16:17:06 »

Ok, Problem ist gelöst. Es lag an einer fehlenden Masseverbindung der Kondensatoren. Schuld ist der Layout-Ersteller.
Vielen Dank für die Unterstützung  Verlegen
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.04 Sekunden mit 19 Zugriffen.
 
Top! Top!