Uhr beim ARM7 (NXP 2368 / 2378)

Hallo zusammen,

ben=F6tige 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=E4uft auch mit dem 32-kHz Oszillator, jedoch etwa 3-fach zu schnell = (auf beiden Boards). Der Sekunden-Interrupt wird ausgel=F6st (lt. Breakpoint in der ISR), = aber viel zu oft. 3.3 V liegen am VBAT-Eingang an.

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

Bin f=FCr jeden Tip dankbar!

Freundlicher Gru=DF

Roland Kuhn

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

#include =20 #include

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=F6st? { =20 sprintf(h,"%d",RTC_HOUR); // Wandlung in char wegen Displayausgabe sprintf(m,"%d",RTC_MIN); sprintf(s,"%d",RTC_SEC); .=20 .

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

RTC_ILR =3D0x00000001; // Interrupt zur=FCcksetzen

VICVectAddr=3D0x00000000; }=20 }

int main(void) {

PCONP =3D PCONP | BD09; // RTC einschalten

initialize();

while(1) {

// Ausgabe des Datums =FCber die LCD-Anzeige

} }

void initialize(void) { =20 RTC_CCR=3D0x02; // Disable Clock and Reset Clock Tick Counter RTC_ILR=3D0x07; // Reset all Interrupts =20 RTC_HOUR=3D23; // Set Time=20 RTC_MIN=3D59; RTC_SEC=3D1;

RTC_CIIR=3D0x00000001; // pro Sec einen Interrupt ausl=F6sen RTC_CISS=3D0x07; // Sub-Sec-Interrupts disablen

RTC_CCR=3D0x11; // 32 kHz (RTC-) Oszillator verwenden, Reset=20 // aufheben und Clock enablen

VICVectAddr13=3D(unsigned) read_rtc; // Interrupt-Adresse setzen VICVectPriority13 =3D 0x0000000D; // Priority setzen =20 VICIntEnable|=3D 0x00002000; // Interrupt enablen

}
Reply to
Roland Kuhn
Loading thread data ...

Roland Kuhnschrieb: "

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).

oft. 3.3 V liegen am VBAT-Eingang an.

(was die Uhr betrifft) angehängt. Hab schon alles probiert, jedoch erfolglos.

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

Dirk

Reply to
Dirk Ruth

Hallo Dirk,

danke f=FCr Deine Antwort. Aus dem Beispiel habe ich meinen Code abgeleitet. Da es f=FCr die 21-er = Controller geschrieben wurde habe ich nur die Ausgabe auf die Ports = herausgenommen (die brauche ich sowieso nicht) und an Stelle des 12 = MHz-Clocks den 32 kHz-Clock verwendet.

Werde es am Montag trotzdem mal mit dem 12 MHz-Clock testen.

Dass beide (fast nagelneuen) Boards den gleichen Fehler haben halte ich = f=FCr sehr unwahrscheinlich.

Ansonsten muss ich halt mal bei Keil die Foren durchackern, vielleicht = finde ich ja da was.=20

Gru=DF

Roland

"Dirk Ruth" schrieb im Newsbeitrag = news: snipped-for-privacy@4ax.com...

entsprechenden Keil-Evaluationboards programmiert (besitze beide = Boards). Die Uhr l=E4uft auch mit dem 32-kHz Oszillator, jedoch etwa =

3-fach zu schnell (auf beiden Boards).

aber viel zu oft. 3.3 V liegen am VBAT-Eingang an.

Habe ihn mal (was die Uhr betrifft) angeh=E4ngt. Hab schon alles = probiert, jedoch erfolglos.

Reply to
Roland Kuhn

Bin ich nicht.

Kann es sein, daß der Counter im Dezimalbetrieb läuft? Overflow-Interrupt alle 10000 Takte ergäbe 3,3Hz.

--
Gruß, Raimund
Mein Pfotoalbum 
Mail ohne Anhang an  wird gelesen. Im Impressum der Homepage
findet sich immer eine länger gültige Adresse.
Reply to
Raimund Nisius

Hallo Raimund,

bin das Manual des Prozessors nochmal durchgegangen, habe aber nichts = von Counter im Dezimalbetrieb gefunden. Was soll das f=FCr eines sein, = oder war es nur eine -allerdings plausible- Vermutung von Dir?

Gru=DF

Roland

"Raimund Nisius" schrieb im = Newsbeitrag = news:1jgs1qi.1rohlm0l4e96cN% snipped-for-privacy@raimund.>=20

entsprechenden

l=E4uft

beiden

der

Homepage

Reply to
Roland Kuhn

Letzteres.

Miß mal die genaue Ausgangsfrequenz. Schwingt der Quarz auf der 3. Oberwelle?

Reply to
Raimund Nisius

Gute Idee, kann ich allerdings erst morgen machen.

"Raimund Nisius" schrieb im = Newsbeitrag = news:1jgs7wy.n1uyncpguubkN% snipped-for-privacy@raimund.>=20

von

oder war

Reply to
Roland Kuhn

Roland Kuhnschrieb: "

Controller geschrieben wurde habe ich nur die Ausgabe auf die Ports herausgenommen (die brauche ich sowieso nicht) und an Stelle des 12 MHz-Clocks den 32 kHz-Clock verwendet.

sehr unwahrscheinlich.

ich ja da was.

Es gibt auch noch ein anderes Beispiel für den 23xx/24xx, das ich mal hierher gelegt habe:

formatting link

BTW verwendest du den J-Link o.ä.? Funktioniert Halt/Reset bei dir richtig?

Dirk

Reply to
Dirk Ruth

Danke f=FCr den Quellcode.=20 Leider haben einige Files (irq.c, target.c sowie mehrere = include-Dateien) gefehlt, die ich mir mittlerweile aus den = Keil-Beispielen ins Arbeitsverzeichnis kopiert habe. Leider erhalte ich = trotzdem noch die folgende Fehlermeldung. 'irq.c(57): error: #147-D: declaration is incompatible with "DWORD = install_irq(DWORD, void *, DWORD)" (declared at line 87 of "irq.h")'. = Finde da keinen Unterschied. Da von jeder Datei mehrere Versionen in den Beispielen existieren habe = ich auch m=F6glicherweise die falschen kopiert.

Darum f=E4nde ich es nett von Dir, wenn Du mir alle dazugeh=F6rigen = Dateien schicken w=FCrdest Ich bin noch kein Routinier auf dem ARM7-Sektor, geschweige denn ein = Assembler-Profi.

Des Weiteren: der Hardware-Reset =FCber den Knopf auf dem Board als auch = der Software-Reset =FCber den Debugger funktionieren.

Gru=DF

Roland

"Dirk Ruth" schrieb im Newsbeitrag = news: snipped-for-privacy@4ax.com...

21-er Controller geschrieben wurde habe ich nur die Ausgabe auf die = Ports herausgenommen (die brauche ich sowieso nicht) und an Stelle des = 12 MHz-Clocks den 32 kHz-Clock verwendet.

ich f=FCr sehr unwahrscheinlich.

finde ich ja da was.=20

mal

Reply to
Roland Kuhn

Roland Kuhnschrieb: "

gefehlt, die ich mir mittlerweile aus den Keil-Beispielen ins Arbeitsverzeichnis kopiert habe. Leider erhalte ich trotzdem noch die folgende Fehlermeldung.

install_irq(DWORD, void *, DWORD)" (declared at line 87 of "irq.h")'. Finde da keinen Unterschied.

möglicherweise die falschen kopiert.

schicken würdest

Assembler-Profi.

Software-Reset über den Debugger funktionieren.

Mail habe ich rausgeschickt.

Wegen des Resets meinte ich, ob du auch im Debugger den Reset mit dem J-Link (falls du den verwendest) immer richtig auslösen kannst.

Bei mir funktioniert das reproduzierbar nicht mehr, wenn ich die LCD-Unit (TFT) einmal initialisiert habe (Abbruch mit: "CPU can not be halted").

Dirk

Reply to
Dirk Ruth

Hallo Raimund,

mit Deinem Tip bist Du gar nicht so schlecht gelegen:

Folgendes:

Nachdem ich heute morgen einschaltete, lief der 1s-Takt pl=F6tzlich mit = der 10-fachen Geschwindigkeit, nicht mehr in der 3-fachen. Ich dachte, = ich w=FCrde spinnen und habe alle Register nach einer 1/10 s Einstellung = abgesucht. Nichts. Pl=F6tzlich lief die Uhr wieder 'nur' mit der 3-fachen Geschindigkeit, = dann bei Ber=FChrung eines der Quarz-Pins wieder mit der 10-fachen und = umgekehrt.

Habe daraufhin mit dem Scope den 32 kHz-Clock gecheckt: So ein = versifftes Signal habe ich noch nie gesehen, nur undefinierbare = periodische Rausch-Bl=F6cke mit einer 100 Hz-Nadel, die f=FCr den =

10-fachen 1s-Takt verantwortlich war. Haargenau das gleiche Ph=E4nomen war auch auf dem 2. Board vorhanden; = eben das, was ich mir nicht vorstellen konnte und wollte. Habe daraufhin die 32 kHz-Quarze gewechselt und seitdem laufen beide = Boards mit meinen urspr=FCnglichen Einstellungen einwandfrei. Beide Boards (eines mit dem 2368 und eines mit dem 2378) wurden ca. im = Abstand von 6 Wochen bei Keil gekauft, und beide mit einem defekten = Quarz. Ist vermutlich die ganze Charge hin=FCber.

Ist schon ne Frechheit von Keil, f=FCr ca. 400 =80 ein ungetestetes und = teildefektes Board zu verkaufen. Und ich habe noch dazu fast 2 Tage mit dem Mist verdaddelt!

Naja, was solls, Hauptsache jetzt l=E4uft alles.

Vielen Dank nochmal!

Freundlicher Gru=DF

Roland Kuhn

"Raimund Nisius" schrieb im = Newsbeitrag = news:1jgs1qi.1rohlm0l4e96cN% snipped-for-privacy@raimund.>=20

entsprechenden

l=E4uft

beiden

der

Homepage

Reply to
Roland Kuhn

Roland Kuhn schrieb:

teildefektes Board zu verkaufen.

Evtl. waren die bei denen noch (marginal) OK, so daß es keine Probleme beim Test gab, und die Quarze wurden erst beim Transport endgültig angeknackst - sowas habe ich schon mehrfach erlebt.

cu Michael

Reply to
Michael Schwingen

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.