Forum: Mikrocontroller und Digitale Elektronik XC167 Laufzeit von Assembler-Befehlen


von Lambertz (Gast)


Lesenswert?

Hallo zusammen!

Ich beschäftige mich gerade mit der Programmierung eines XC167CI. Um
den Programmablauf besser planen zu können würde ich jetzt gerne
wissen, wie viel Zeit meine Interrupts für ihre Ausführung benötigen.
Ich kann mir auch den Assembler-Code in meinem Debugger ansehen, weiß
allerdings nicht, wie lange der Mikrocontroller für die einzelnen
Befehle benötigt.
Leider habe ich auch im Netz bisher keine Antwort auf diese Frage
gefunden. Wenn also jemand weiß wo ich eine Liste der Assembler-Befehle
und deren Laufzeiten finden kann, würde ich mich sehr freuen.

MfG Ben

von Kristallkugelblicker (Gast)


Lesenswert?

Bei einem Takt von 0Hz hat jeder Befehl die Länge von Unendlich.

von Lambertz (Gast)


Lesenswert?

Danke für die Lehrstunde "Mathematik für Anfänger"!

Der XC167CI läuft mit 20MHz. Aber das sollte eigentlich egal sein für
die Beantwortung der Frage, da ich mich mehr für die Anzahl der
Taktzyklen interessiere.

Ben

von Kristallkugelblicker (Gast)


Lesenswert?

Sorry, aber deine Frage beantwortet das Datenblatt. Das sind zwar
2x1000 Seiten, aber die solltest du schon vorliegen haben(in
Papierform!), wenn du dich mit solch hochgezüchteten MCUs abgibst.

von Lambertz (Gast)


Lesenswert?

Die Hanbücher zu dem µC habe ich vorliegen (441 und 442 Seiten).
Vielleicht stelle ich mich etwas zu dumm an, aber das einzige was ich
darin finde ist eine "Instruction Set Summary" ohne Angabe der
Taktzyklen, die für die Abarbeitung nötig sind.

Ich kann und möchte niemanden dazu zwingen sich mit meinen Problemen
ausseinander zu setzten. Allerdings war es eine ernstgemeinte Frage,
bei der ich hänge. Kommt ja wohl auch mal bei den Profis vor, zu denen
ich sicher nicht gehöre.
Ich freue mich über jede Antwort, die dazu gedacht ist mir weiter zu
helfen.

von Carsten S. (carsten)


Lesenswert?

Wenn mich nicht alles täuscht, dann müsste der Controller eine
Instruction-Pipeline besitzen, somit ist eine genaue Angabe der
Ausführungszeit nicht zu machen, da diese dann von diversen Umständen
abhängig ist.

von Lambertz (Gast)


Lesenswert?

Hallo Carsten,

danke erstmal für den Hinweis. Ja so eine Instruction-Pipeline besitzt
der XC167 wohl. Gibt es denn eventuell eine Möglichkeit den worst-case
Abzuschätzen?
Es muß doch eine möglichkeit geben, im Vorfeld entscheiden zu können,
ob sich Interrupts eventuell behindern können.

Ben

von Carsten S. (carsten)


Lesenswert?

Hier mal ein worst-case-Scenario:
Du hast einen Befehl, der auf den Speicher zugreift. Ein Interrupt wird
angefordert, der Befehl muss aber noch beendet werden. Greift aber z.B.
ein DMA-Controller (hat der XC sowas?) auf den Speicher zu, so kann es
einige Taktzyklen dauern, bis der Befehl fertig ausgeführt wird.
-> Keine pauschale Abschätzung möglich

Du kannst wirklich nur sagen in welchem Bereich diese Zeit ist, kann
aber relativ groß sein.

von Lambertz (Gast)


Lesenswert?

Also ich bin mir ziemlich sicher, dass bei der Anforderung der bisher
genutzten Interrupts kein anderer Befehl auf den Speicher zugreift.
Somit sollte das Problem mit einem verzögerten Beginn der
Interruptroutinen nicht auftauchen (hoffentlich).
In meinem Programm laufen drei zu einander verschobene Timer. Durch
diese Timer werden reihum alle 30µs ein Overflow-Interrupt ausgelöst.
Das klappt auch soweit ganz gut. Nun möchte ich aber einen weiteren
regelmäßig auftretenden Interrupt haben und weiss nicht, an welche
Stelle (zeitlich) ich ihn am besten setze bzw. ob da überhaupt noch
platz für ihn ist.

von Horni (Gast)


Lesenswert?

Hallo Lambertz,

ich hab während meines E-Technik Studiums mal ne Arbeit geschrieben in
der ich die Performance des XC167CI mit nem anderen 16-Bit µC
vergleichen musste.
Aufgrund der Instruction-Pipeline ist ne reine Berechnung nicht möglich
gewesen. Deshalb hab ich mir nen Logik-Analyser genommen und die
Signallaufzeiten anhand eines Toggelnden Ports aufgenommen.
Wenn nen hochauflösenden Analyser hast, kannst damit ziemlich genau die
Laufzeiten dokumentieren.
Bei mir hats sehr gut geklappt.
Hoffe das hilft Dir weiter.

Gruß
Horni

von Marillion (Gast)


Lesenswert?

>Nun möchte ich aber einen weiteren
regelmäßig auftretenden Interrupt haben und weiss nicht, an welche
Stelle (zeitlich) ich ihn am besten setze bzw. ob da überhaupt noch
platz für ihn ist.

Die meisten Befehle dauern einen Maschinentakt(nicht Quarztakt, wegen
interner PLL).

Sieh' dir mal im Datenblatt die Interruptstruktur der XC-Serie an.
Etwas genialeres gibt es nicht(16Prioritäten, 4Gruppen). Deine drei
Timer mit 30µsec sind für den Controller eine 'Müde' Angelegenheit.
Die Vogängerversion, mit dem C166V1-Core wurde zur Motorregelung in
einigen 12-Zyl.Formel1-Motoren eingesetzt.

Auf Grund des Pipelineffektes sind vorausschauende Ausführungszeiten
nicht möglich. Auch sind Softwaremäßige Zeitschleifen ungenau. Sowas
macht man denn mit den Hardware-Timern.

Marillion

von T. Stütz (Gast)


Lesenswert?

Geh mal bei Infineon auf die HomePage, suchen nach "instruction set
manual" => PDF Downloaden und anschauen kapitel 7 Instruction state
times dort steht alles drin

Zusammengefasst : Sprünge,Aufrufen von Fkt,Rücksprünge, Move
Registerindirekt auf Speicher,TRAPS => 4Takte
Multiplikationen => 10 Takte
Divisonen => 20 Takte
alles andere => 2 Takte

Gruss

von schalter (Gast)


Lesenswert?

@Horny
welche MC hast Du verglichen? Gibt es Deine Arbeit (oder Teile davon)
online zu lesen?
Ich interessiere mich speziel für Vergleiche von Infineon 16-Bit, M16C,
M32C und hcs12 MC.
Danke für eine Antwort.

von Lambertz (Gast)


Lesenswert?

Danke für Eure Hilfe!
Damit ist mir doch schon sehr geholfen.

Ben

von Horni (Gast)


Lesenswert?

@schalter

Tut mir leid für die verspätete Antwort.
Ich hab den XC167CI mit einem MC9S12 von Motorola verglichen.
Online gibts davon nix. Aber wenn Dich das interessiert, kann ich Dir
gern die Arbeit zukommen lassen. Allerdings lediglich für private
Zwecke.

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.