Forum: Mikrocontroller und Digitale Elektronik Kernel State Configuration Register KSCCFG xe164 xe166 xe164f xe16x


von hans (Gast)


Lesenswert?

xe164 xe166 xe164f xe16x c166 xc2000 xe169

Das Register _KSCCFG  wird verwendet im GPT, CAN und CC2.
Welche Aufgabe hat diese Regiester _KSCCFG  ?

Die Bits "MODEN = Module Enable" und "Bit Protection for MODEN" sind 
gestzt.


module kernel clock
Wehlche Aufgabe hat das "MODEN = Module Enable" Bit?
Verstehen ich das richtig das dieses Bit z.B. vom GPT eine interne Uhr 
des Moduls einschaltet. Wenn ja kann man diese Uhr auslesen oder was ist 
ihre Funktion?

module functionality
Wird hier der GPT
1
GPT12E_KSCCFG  =  0x0003;
 gestartet oder seine Funktionen aktiviert?


1
  ///  Configuration of Kernel State Configuration Register:
2
  ///  ----------------------------------------------------------------
3
  ///  - Enable the CAN module(MODEN)
4
  ///  - Enable Bit Protection for MODEN
5
6
7
 MCAN_KSCCFG  =  0x0003;      // load Kernel State Configuration Register

_____________________________________________________

Module Enable
This bit enables the module kernel clock and the
module functionality.

1B The module is switched on and can operate.
After writing 1 to MODEN, it is recommended
to read register KSCCFG to avoid pipeline
effects in the control block before accessing
other GPT registers.


Bit Protection for MODEN
This bit enables the write access to the bit MODEN.
It always reads 0. It is only active during the write
access cycle.
0B MODEN is not changed.
1B MODEN is updated with the written value.

http://www.keil.com/dd/docs/datashts/infineon/xe166m_um_v2_0.pdf
Seite 16-63

von TManiac (Gast)


Lesenswert?

Hallo Hans,

hans schrieb:
> Module Enable
> This bit enables the module kernel clock and the module functionality.

Mit "Module Kernel Clock" ist der Takt und nicht ein Zähler gemeint. Das 
heißt, dass das "Module Enable" Bit gesetzt sein muss damit das 
jeweilige Module arbeiten kann. Die Module lassen sich alle einzeln 
abschalten um den Strombedarf an die jeweilige Anforderungen anzupassen 
(Abschalten nicht benutzer Hardware).

Das "Protection" Bit dient dazu, dass man nicht ausversehen (Software, 
EMV oder was auch immer) das Modul an- oder abschaltet.

Da du noch nach einem auslesbaren Timer fragtes:
Klaro hat das GPT-Module Timer (mehr als einen), daher heißt es ja auch 
"General Purpose Timer". Damit du die nutzen kannst musst du die aber 
auch extra konfigurieren (Prescaler, Clocksource, Reload und so weiter)

Gruß,
TManiac

von Heinrich (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

Das Kernel State Configuration Register XXX_KSCCFG gibt es für alle 
Module des XE164. Um ein Modul wie besispielsweise die General Purpose 
Timer (kurz GPT) nutzen und konfigurieren zu können muss das 
entsprechende Modul zuvor aktiviert und mit dem Systemtakt versorgt 
werden.

Ist ein Modul nicht aktiviert kann auch nicht konfiguriert werden, Lese- 
und Schreibaktionen auf die Register des Moduls werden ignoriert mit 
außnahme des KSCCFG.

Wie TManiac bereits richtig bemerkt hat ist das Bit MODEN dazu da das 
Modul zu aktivieren und mit dem Systemtakt zu versorgen, um das Bit 
MODEN zu setzen ist es notwendig ebenfalls das Bit BPMODEN im gleichen 
Taktzyklus wie MODEN zu setzen, sprich in einem Befehl:

GPT12E_KSCCFG  =  0x0003; // dies aktiviert das Modul

// Die folgenden Befehlsfolgen bringen nicht den gewünschten Effekt
GPT12E_KSCCFG  =  0x0001;
GPT12E_KSCCFG  =  0x0002;

GPT12E_KSCCFG  =  0x0002;
GPT12E_KSCCFG  =  0x0001;


Im User’s Manual, welches auf der Seite von Infineon zu finden ist, sind 
alle Register der verschiedenen Module erklärt und es gibt auch einige 
Applikation Notes auf der Website. Das User’s Manual für die peripherie 
habe ich angehängt.

Mit freundlichen Grüßen
Heinrich

von hans (Gast)


Lesenswert?

Danke das ware sehr Hilfreich!

Es ist hier auch die Rede von verhinderung der Pipeline Effekts die 
Rede.

"avoid pipeline effects"

Was dedeutet das genau?

von TManiac (Gast)


Lesenswert?

Hallo Hans,

Gegenfrage: Wie weit hast du dich mit der Architektur des Controllers 
beschäftigt?

Der Controller hat eine fünf-stufige Pipeline. Das heißt es kann mehr 
als ein Zyklus dauern vom lesen eines Befehls aus dem ROM/FLASH bis 
dieser umgesetzt wird. Außerdem kann es passieren, das ein Befehl nicht 
gleich Wirkung zeigt sondern erst ein paar Takte später. Es gibt 
spezielle Register bei denen dies passiert. Ob es das Aktivieren eines 
Modules durch setzen des MODEN-Bittes betrifft, müsste ich jetzt nach 
schauen, aber vorstellbar wäre es (weil das Modul ja erst einschwingen 
muss). Das würde dann aber bedeuten, das man nicht gleich im nächsten 
Takt nach dem Setzen des MODEN in die Register des Modules schreiben 
sollte. Man sollte eher mindestens zwei Takte (nops) abwarten, um 
Probleme zu vermeiden.

Richtig lustig wird es wenn man die "nops" durch einen Interrupt oder 
einem predektiven Jump überholt. Das sind dann die beschiebenen 
"Pipeleine Effekte".

Gruß,
TManiac

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.