Ich habe in meinem Quelltext diese Funktion stehen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
Wo bekomme ich diese NOPs her? Vor allem sieht man ja auch nicht, wielange dieses "Delay" dauern soll.
|
Anzeige
|
MSP430F1610 nop-FunktionIch habe in meinem Quelltext diese Funktion stehen:
Wo bekomme ich diese NOPs her? Vor allem sieht man ja auch nicht, wielange dieses "Delay" dauern soll. 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 schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|