www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Latenzzeit verkürzen - MSP430 - aber wie??


Autor: U. Nauber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man irgendwie die Interrupt-Latenzzeit beim MSP430 verkürzen??

Momentan liegt sie bei 1 ... 1.3 us, was jedoch ziemlich lange ist.

Verwende den internen Oszi mit 16 Mhz.

So die hälfte, also rund 0.5 us wären super.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Welche Programmiersprache?
Welcher Compiler?

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus den LPM oder aus dem Active Mode? 500ns wären gerade mal 8 Takte, 
das wird schon aus dem Active Mode knapp. Sind ja mehrere Pushs und erst 
mal den aktuellen alten Befehl abarbeiten. Ein Interrupt-Einsprung 
benötigt mindestens 6 MCLK Zyklen, wenn noch irgendwelche Variablen auf 
den Stack wandern, noch mehr. Die Abarbeitung des aktuellen Befehls kann 
ebenfalls bis zu 6 MCLK Zyklen dauern...

Autor: U. Nauber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Active Mode.

Compiler: IAR Kickstart V4.11
Sprache: C

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian
>Die Abarbeitung des aktuellen Befehls kann
>ebenfalls bis zu 6 MCLK Zyklen dauern...
Das klingt zwar logisch, da ein Befehl max. 6TZ dauern kann.
Auf der anderen Seite sagt der User-Guide (Kap.2.2.3), dass in den 6TZ 
Latenzzeit die Abarbeitung des aktuellen Befehls schon mit drin sei.
Was stimmt denn nun ?

@U.Nauber
Wie schon gesagt wurde, steigt die Latenzzeit mit der Anzahl der 
Register, die vor dem Aufruf der ISR noch gesichert werden müssen.
Eine Möglichkeit das etwas einzudämmen, wäre vielleicht die Benutzung 
von globalen Variablen in der ISR, da lokale Variablen oft in Registern 
gehalten werden, die dann eben, um in der ISR "frei" zu sein, vorher 
gesichert werden müssen.
Das Ergebnis kannst Du Dir im Ausgabelisting deiner ISR-Funktion 
anschauen.
Ein schlechtes (Zeit-) verhalten wäre dann z.B.:
          __interrupt void TMRA_CCR1_CCR2_Interrupt (void)   
   \                     TMRA_CCR1_CCR2_Interrupt:
   \   000000   0A12         PUSH.W  R10
   \   000002   0B12         PUSH.W  R11
   \   000004   0D12         PUSH.W  R13
   \   000006   0C12         PUSH.W  R12
   \   000008   0F12         PUSH.W  R15
   \   00000A   0E12         PUSH.W  R14  
// Kostet 6x3TZ = 18TZ extra Zeit!

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übertakten!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan wrote:
> @Christian
>>Die Abarbeitung des aktuellen Befehls kann
>>ebenfalls bis zu 6 MCLK Zyklen dauern...
> Das klingt zwar logisch, da ein Befehl max. 6TZ dauern kann.
> Auf der anderen Seite sagt der User-Guide (Kap.2.2.3), dass in den 6TZ
> Latenzzeit die Abarbeitung des aktuellen Befehls schon mit drin sei.
> Was stimmt denn nun ?


Nur 6 Zyklen kann ja nicht sein, denn 6 Zyklen braucht es schon, um das 
Statusregister und den Stack zu sichern. Dazu kommt auf jeden Fall die 
Abarbeitung des letzten Befehls, im günstigsten Fall 0 Zyklen, im 
ungünstigsten halt noch 6 Zyklen. Der Rücksprung dauert ebenfalls 
mindestens 5 Zyklen. Meist noch viel länger, da wie gesagt meist noch 
einige Register gesichert und wiederhergestellt werden.

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Travel Rec. schrieb:
> Übertakten!

Bei 16 MHz den MSP430 noch übertakten????
Das geht nicht lange gut, wenn überhaupt!

Standart sind 8 MHz!

Autor: Jörg S. (joerg-s)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Standart sind 8 MHz!
Nicht bei den neuen MSPs

Ansonsten ist der Beitrag aber auch schon etwas älter um darauf zu 
antworten ;)

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.