Forum: Mikrocontroller und Digitale Elektronik MSP430 asm(" ESTOP0");


von Walter L. (charly2)


Lesenswert?

Hallo,

asm(" ESTOP0"); fkt. bei den TMS320Fxxxx

Gibt es beim MSP430 etwas äquivalentes und wenn ja wie latet die 
C-Zeile?

Danke...

VG Walter

von Peter D. (peda)


Lesenswert?

Da müßte wohl jemand im TMS Manual nachschauen, wozu man diesen 
Assemblerbefehl überhaupt benötigt.

Jede CPU hat ihren eigenen Assembler. Und deshalb benutzt man 
Hochsprachen.

von Walter L. (charly2)


Lesenswert?

Ich frage natürlich nur die jenigen,  die  asm(" ESTOP0"); kennen.

von Εrnst B. (ernst)


Lesenswert?

Wenn ich das richtig verstehe, ist ESTOP0 ein Breakpoint für den 
Debugger.

Was willst du damit erreichen? Je nachdem macht ein "while(1);" 
dasselbe...

von Walter L. (charly2)


Lesenswert?

Oh, Oh, Oh.

Ich will einfach nur wissen, ob es für den asm(" ESTOP0");
ein Äquivalent im MSP430 gibt.

VG Walter

von Εrnst B. (ernst)


Lesenswert?

Walter L. schrieb:
> Ich will einfach nur wissen,

d.H. du hast keinerlei Ahnung, was der Befehl am TMS320 tut, und willst 
ihn einfach auf Gut Glück irgendwie in ein MSP430-Programm einfügen?

Okay, gut, erm... ja... Dann mach mal.

von Walter L. (charly2)


Lesenswert?

>d.H. du hast keinerlei Ahnung, was der Befehl am TMS320 tut, und willst
>ihn einfach auf Gut Glück irgendwie in ein MSP430-Programm einfügen?

Ich habe keinerlei Ahnung, ich habe das Wissen, was er im Zusammenhang 
mit dem CCS und TMS320... in C-Progs. macht. Off. fehlt bei dir ( Εrnst 
B.) dieses Wissen.

Noch einaml:

Ich will einfach nur wissen, ob es für den asm(" ESTOP0");
ein Äquivalent im MSP430 gibt.

VG Walter

von Εrnst B. (ernst)


Angehängte Dateien:

Lesenswert?

Walter L. schrieb:
> Ich habe keinerlei Ahnung, ich habe das Wissen, was er im Zusammenhang
> mit dem CCS und TMS320... in C-Progs. macht. Off. fehlt bei dir ( Εrnst
> B.) dieses Wissen.

Ach, d.H. es macht was anderes als ein Software-definierten Breakpoint? 
Dann erleuchte uns. Berechnet es PI auf 1000 Stellen?

Walter L. schrieb:
> Ich will einfach nur wissen, ob es für den asm(" ESTOP0");
> ein Äquivalent im MSP430 gibt.

Dann formuliere deine Frage um, z.B.
"Wie kann ich in C am MSP430 einen Programabbruch erzwingen"
oder
"Wie kann ich in C am MSP430 mit nur einem ASM-Befehl PI auf 1000 
Stellen berechnen"

: Bearbeitet durch User
von Walter L. (charly2)


Lesenswert?

Εrnst B. kannst du meine Frage beantworten?
Nein, dann schweige ab jetzt.
Ja, dann sage es, wie lautet der äquivalente asm -Bef. beim MSP430.


VG Walter

von Εrnst B. (ernst)


Lesenswert?

es ist
 asm("nop");
wenn kein Debugger angeschlossen ist.

Wenn ein Debugger angeschlossen ist, kannst du dort einen Breakpoint auf 
das NOP setzen.

Schöner als das per inline ASM zu machen wäre das entsprechende 
intrinsic, __no_operation()

: Bearbeitet durch User
von Walter L. (charly2)


Lesenswert?

Εrnst B. gehört estop0.png zum MSP430?
NEIN. Gehört zum TMS320....

Off. gibt es kein Äquivalent zum estop0 im MSP430xxx

Ich frage mal bei TI nach...

VG Walter

von Εrnst B. (ernst)


Lesenswert?

Walter L. schrieb:
> NEIN. Gehört zum TMS320....

deshalb habe ich es angehängt.
DU wolltest das Äquivalent dazu beim MSP430.

Der Weg dazu:
1) Schauen was der Befehl beim TMS320 macht
2) Verstehen
3) Nachschauen, was der MSP430 an Befehlen bietet, die dasselbe machen.

von Dieter (Gast)


Lesenswert?

Walter L. schrieb:
>
> Ja, dann sage es, wie lautet der äquivalente asm -Bef. beim MSP430.
>

Hast Du Dir schon mal die Assembler Befehle des MSP430 angesehen? Das 
ist sehr überschaubar, die Frage nach einem gleichwertigen Befehl 
kannst Du Dir also selber beantworten. Ob es möglich ist eventuell über 
die Peripherie etwas äqivalentes zu machen ist eine andere Sache.

von Walter L. (charly2)


Lesenswert?

Dieter (Gast) dafür brauche ich kein Forum.

Für alle die ...
Off. schreibt der debugger beim  Setzen eines Soft-Breakpoints
0x4343 an die Stelle des Masch.-Befs.

Ich frage bei TI nach. Da gibt es sachkundige Auskunft...

VG Walter

von Dieter (Gast)


Lesenswert?

Walter L. schrieb:
> Dieter (Gast) dafür brauche ich kein Forum.
>

Um herauszufinden ob es einen äquivalenten Assembler Befehl gibt braucht 
man beim MSP430 weniger Zeit als hier eine vernünftig formulierte Frage 
zu stellen. Gut, die Betonung liegt auf "vernünftig formuliert".

von Walter L. (charly2)


Lesenswert?

Alles GUT....

von Εrnst B. (ernst)


Lesenswert?

Walter L. schrieb:
> Ich frage bei TI nach. Da gibt es sachkundige Auskunft...

Mach das, dann haben die auch was zu Lachen.

von DerEinzigeBernd (Gast)


Lesenswert?

Walter L. schrieb:
> Ich frage natürlich nur die jenigen,  die  asm(" ESTOP0"); kennen.

Damit machst Du Dir das Leben unnötig schwer, denn Du kannst so nur 
Leute fragen, die sowohl TMS320 als auch MSP430 kennen.

Alle diejenigen, die sich mit dem MSP430 bestens auskennen, den TMS320 
aber nicht kennen, schließt Du damit davon aus, Deine Frage beantworten 
zu können.

Ich bezweifle wirklich, daß das eine sinnvolle Vorgehensweise ist.

von Jobst M. (jobstens-de)


Lesenswert?

Ich weiß zwar nicht, was ein ESTOP0 auf dem TMS320 tut und ich weiß auch 
nicht (auch deshalb) ob ich dieses Kommando in meinem derzeitigen 
Projekt benötige, aber ich habe plötzlich das Verlangen, dieses Kommando 
auf einem 8051 zu benutzen. Da ich nicht weiß, was das Kommando macht, 
muss es auch nicht unbedingt einen Sinn ergeben.
Wie heißt das Kommando! Los!

Never mind ...

Gruß
Jobst

Beitrag #7334710 wurde vom Autor gelöscht.
von Walter L. (charly2)


Lesenswert?

asm(" MOV.B #0,R3");

von Peter D. (peda)


Lesenswert?

Walter L. schrieb:
> Ich frage mal bei TI nach...

Tue das.
Der TMS-Experte wird die Frage dann an den MSP-ler weiterleiten.
Der MSP-ler dann an den TMS-ler usw. usw.

von Walter L. (charly2)


Lesenswert?

Peter D -> die Antwort ist da schon da.

von Dieter (Gast)


Lesenswert?

Walter L. schrieb:
> asm(" MOV.B #0,R3");

Genau das wurde gestern hier schon weiter oben vorgeschlagen (weil das 
für "NOP" steht).

von Walter L. (charly2)


Lesenswert?

NOP ist 0x4303 nicht 0x4343!!!!!!

von Gerald K. (geku)


Lesenswert?

Beim MSP430 kann man einen HW-Breakpoint setzen um dann alle Register 
auszulesen.

**LPM3;** =>  zwingt den MSP430 in den Powerdown/Sleepmode. Dieser kann 
durch nur durch einen Interrupt aufgeweckt werden. Wird aber nicht zum 
Debuggen benötigt.

https://kb8ojh.net/msp430/slow_timer.c

: Bearbeitet durch User
von Dieter (Gast)


Lesenswert?

Walter L. schrieb:
> NOP ist 0x4303 nicht 0x4343!!!!!!

Du glaubst dass die Anzahl der Ausrufezeichen etwas über die Richtigkeit 
aussagt?

Es gibt viele Möglichkeiten beim MSP430 einen "NOP" darzustellen weil 
das nur durch einen anderen Befehl emuliert wird. Siehe z.B. hier:

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/780806/ccs-msp430fr5994-write-a-breakpoint-in-assembly

von Dieter (Gast)


Lesenswert?

Nachtrag zum NOP (aus slau144.pdf, MSP430F2xx, MSP430G2xx Family, Seite 
98):
1
Emulating No-Operation Instruction
2
Other instructions can emulate the NOP function while providing different
3
numbers of instruction cycles and code words. Some examples are:
4
MOV #0,R3 ; 1 cycle, 1 word
5
MOV 0(R4),0(R4) ; 6 cycles, 3 words
6
MOV @R4,0(R4) ; 5 cycles, 2 words
7
BIC #0,EDE(R4) ; 4 cycles, 2 words
8
JMP $+2 ; 2 cycles, 1 word
9
BIC #0,R5 ; 1 cycle, 1 word

von Walter L. (charly2)


Lesenswert?

Moderator: Bitte schließen, die Frage ist beantwortet.

von Plank (plank)


Lesenswert?

Zur Klärung, denn dieser Thread ist etwas ausgeartet.

Die Instruktion
1
__op_code(0x4343)
wird zu
1
CLR.B   R3
übersetzt, und
1
__op_code(0x4303)
wird zu
1
NOP
übersetzt.


__op_code(0x4343) führt zum gewünschten Ergebnis. D.h. bei einem 
angeschlossenen Debugger wird der Opcode als Software-Break behandelt.

Ein NOP, im Gegensatz, bewirkt wenig überraschend kein Software-Break.

Getestet unter:
- IDE: Code Composer Studio v12.4
- MCU: MSP430FR2155
- Debugger: MSP-FET

Im TI Forum gibt es eine erklärung dafür:
> The MSP430 ISA does not have a breakpoint instruction.
>
> But you can try to use "MOV.B #0,R3". CCS uses this (otherwise pointless)
> instruction as a software breakpoint, and configures the EEM to break when
> this instruction word (0x4343) is fetched.

Quelle: 
https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/780806/ccs-msp430fr5994-write-a-breakpoint-in-assembly

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.