Hallo, asm(" ESTOP0"); fkt. bei den TMS320Fxxxx Gibt es beim MSP430 etwas äquivalentes und wenn ja wie latet die C-Zeile? Danke... VG Walter
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.
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...
Oh, Oh, Oh. Ich will einfach nur wissen, ob es für den asm(" ESTOP0"); ein Äquivalent im MSP430 gibt. VG Walter
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.
>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
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
Ε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
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
Ε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
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.
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.
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
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".
Walter L. schrieb: > Ich frage bei TI nach. Da gibt es sachkundige Auskunft... Mach das, dann haben die auch was zu Lachen.
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.
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 von einem Moderator gelöscht.
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.
Walter L. schrieb: > asm(" MOV.B #0,R3"); Genau das wurde gestern hier schon weiter oben vorgeschlagen (weil das für "NOP" steht).
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
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
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 |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.