MSP430F1610 nop-Funktion

OP #2020178
Lesenswert?
• ▲
▼
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
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.
Gast #2020306
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

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.

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.