mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F1610 nop-Funktion


Autor: Mark M. (mom-jovi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe in meinem Quelltext diese Funktion stehen:
static void delay(uint16 d) 
{
  uint16 i;

  for (i = 0; i < d; i++) 
  {
        nop();
        nop();
        nop();
        nop();
  }
}

Wo bekomme ich diese NOPs her? Vor allem sieht man ja auch nicht, 
wielange dieses "Delay" dauern soll.

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nop() ist die nop Assembler Instruktion. Normal müsste dein Kompiler das 
auflösen und direkt den Assembler Befehl reinmachen. Aber je nach 
Kompiler gibts da verschiedene Schreibweisen, manchmal _nop() manchmal 
nur nop(), manchmal als Makro....wie lange ein Nop dauert, steht im User 
Guide des Prozessors, normalweise beim MSP430 1 Taktzyklus. Mit dem 
Schleifen-Overhead kommt man dann auf x Zyklen. Ich weiß jetzt nicht, wo 
du die Funktion her hast, aber ohne volatile für den zähler ist das eh 
witzlos.

Autor: greg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du verlässliche Delays willst, schreib lieber ein bisschen 
Inline-Assembler bzw. nutze fertige Routinen. Ich benutze eine 
abgewandelte Art der Funktion brief_pause von 
http://mspgcc.sourceforge.net/manual/c1408.html

Ich habe da noch ein NOP hinzugefügt, sodass jeder Schleifendurchlauf 
vier Taktzyklen benötigt. Damit kann man dann bis zu ca. 262000 Zyklen 
verzögern, das reicht für fast alles.

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.