MSP430F1610 nop-Funktion

OP #2020178
Ich habe in meinem Quelltext diese Funktion stehen:
1
static void delay(uint16 d) 
2
{
3
  uint16 i;
4

5
  for (i = 0; i < d; i++) 
6
  {
7
        nop();
8
        nop();
9
        nop();
10
        nop();
11
  }
12
}

Wo bekomme ich diese NOPs her? Vor allem sieht man ja auch nicht, 
wielange dieses "Delay" dauern soll.
#2020183
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.
Gast #2020306
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.