Uhr beim ARM7 (NXP 2368 / 2378)

10/04/2010 - 11:09 von Roland Kuhn | Report spam
Hallo zusammen,

benötige mal die Hilfe eines ARM7-Experten (NXP 2368).
Ich habe die interne Uhr des 2368 oder auch 2378 auf den entsprechenden Keil-Evaluationboards programmiert (besitze beide Boards). Die Uhr làuft auch mit dem 32-kHz Oszillator, jedoch etwa 3-fach zu schnell (auf beiden Boards).
Der Sekunden-Interrupt wird ausgelöst (lt. Breakpoint in der ISR), aber viel zu oft. 3.3 V liegen am VBAT-Eingang an.

Ich weiß nicht, was ich an dem bisschen Code falsch gemacht habe. Habe ihn mal (was die Uhr betrifft) angehàngt. Hab schon alles probiert, jedoch erfolglos.

Bin für jeden Tip dankbar!

Freundlicher Gruß

Roland Kuhn





























































































































































































#include <LPC23xx.h>
#include <stdio.h>

void read_rtc(void) __irq; // Prototypen
void initialize(void);

unsigned char s[3];
unsigned char m[3];
unsigned char h[3];

void read_rtc(void) __irq // ISR
{

if (RTC_ILR & 0x00000001) // Sekundeninterrupt ausgelöst?
{

sprintf(h,"%d",RTC_HOUR); // Wandlung in char wegen Displayausgabe
sprintf(m,"%d",RTC_MIN);
sprintf(s,"%d",RTC_SEC);
.
.

// Aubereitung der Daten ins Format hh:mm:ss

RTC_ILR =0x00000001; // Interrupt zurücksetzen

VICVectAddr=0x00000000;
}
}



int main(void)
{

PCONP = PCONP | BD09; // RTC einschalten

initialize();

while(1)
{

// Ausgabe des Datums über die LCD-Anzeige

}

}

void initialize(void)
{

RTC_CCR=0x02; // Disable Clock and Reset Clock Tick Counter
RTC_ILR=0x07; // Reset all Interrupts

RTC_HOUR#; // Set Time
RTC_MINY;
RTC_SEC=1;

RTC_CIIR=0x00000001; // pro Sec einen Interrupt auslösen
RTC_CISS=0x07; // Sub-Sec-Interrupts disablen

RTC_CCR=0x11; // 32 kHz (RTC-) Oszillator verwenden, Reset
// aufheben und Clock enablen

VICVectAddr13=(unsigned) read_rtc; // Interrupt-Adresse setzen
VICVectPriority13 = 0x0000000D; // Priority setzen

VICIntEnable|= 0x00002000; // Interrupt enablen

}
 

Lesen sie die antworten

#1 Dirk Ruth
10/04/2010 - 14:17 | Warnen spam
Roland Kuhnschrieb:
"
Hallo zusammen,

benötige mal die Hilfe eines ARM7-Experten (NXP 2368).
Ich habe die interne Uhr des 2368 oder auch 2378 auf den entsprechenden Keil-Evaluationboards programmiert (besitze beide Boards). Die Uhr làuft auch mit dem 32-kHz Oszillator, jedoch etwa 3-fach zu schnell (auf beiden Boards).
Der Sekunden-Interrupt wird ausgelöst (lt. Breakpoint in der ISR), aber viel zu oft. 3.3 V liegen am VBAT-Eingang an.

Ich weiß nicht, was ich an dem bisschen Code falsch gemacht habe. Habe ihn mal (was die Uhr betrifft) angehàngt. Hab schon alles probiert, jedoch erfolglos.

Bin für jeden Tip dankbar!





Làuft denn das Original-Beispiel zur RTC von Keil auf deinem Board
richtig?

Dirk

Ähnliche fragen