www.mikrocontroller.net

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


Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kristallkugelblicker (Gast)
Datum:

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

Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kristallkugelblicker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Horni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Marillion (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: T. Stütz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: schalter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lambertz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für Eure Hilfe!
Damit ist mir doch schon sehr geholfen.

Ben

Autor: Horni (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.