Forum: Mikrocontroller und Digitale Elektronik TI spezifische Befehle zB .half


von Alex (Gast)


Lesenswert?

Hi,

ich schaue mir gerade einen Code von einem TI Mikrocontroller an 
(TMS320). Ich finde teils noch Codestücke, die ich mir aus dem Kontext 
erschließen muss. Wie etwa den .bit-Befehl.

Jetzt habe ich wieder ein Codesample, worin ich den .half-Befehl nicht 
verstehe:

irgendwelcheRegs.speziellesRegister.half.speziellesRegister = ...

(konkret: EPwm1Regs.CMPA.half.CMPA = 100)

Gibt es irgendwo eine Referenz für TI-spezifische Befehle?

von Jörg S. (joerg-s)


Lesenswert?

Das dürfte wohl eher vom Compiler abhängig sein?
Wobei es grundsätzlich bestimmt einfach nur struct bzw. union Typen 
sind.

Siehe:
http://de.wikibooks.org/wiki/C-Programmierung:_Komplexe_Datentypen

von PittyJ (Gast)


Lesenswert?

Das sind keine Befehle der CPU.
Das sind ganz normale C-Strukturen mit Zugriff darauf.
Diese Strukturen zeigen meisten auf die IO-Register (die memory-mapped 
sind), und damit werden Werte gesetzt.
Es gibt auch Header-Files, wo alles definiert wird.


TI hat meistens Handbucher speziell für den Prozessor und das Subsystem 
(in diesem Fall ein PWM-Modul).

Einfach mal auf den TI-Seiten suchen, da gibt es Referenz-PDFs im 
Überfluss. Die Kunst ist, das richtige zu finden.

von Alex (Gast)


Lesenswert?

OK, danke euch beiden. Ich werde dann mal schauen, ob ich ein passendes 
Header-File finde. Vielleicht finde ich noch andere nützliche PDFs bei 
TI.com.

Das Datenblatt des PWM-Moduls nutze ich gerade. Mir kommt es nur so vor, 
als müsste man sich Teile der Code Samples selbst erschließen, zumindest 
wenn man noch nie mit einem TI Controller gearbeitet hat. Also ich finde 
da zum Beispiel nichts von .half.

von Alex (Gast)


Lesenswert?

Oder zum Beispiel diese Zeile:
1
EPwm1Regs.CMPA.half.CMPA = Duty1A; // adjust duty for output EPWM1A

Meist kann man sich zwar denken, was das bedeuten soll, aber nirgendwo 
in dem verflixten Datenblatt finde ich eine Definition von Duty1A bzw. 
Duty1B.

von nix spezifisch, 08/15 C (Gast)


Lesenswert?

Alex schrieb:
> Oder zum Beispiel diese Zeile:
> EPwm1Regs.CMPA.half.CMPA = Duty1A; // adjust duty for output EPWM1A
> Meist kann man sich zwar denken, was das bedeuten soll, aber nirgendwo
> in dem verflixten Datenblatt finde ich eine Definition von Duty1A bzw.
> Duty1B.

Das Datenblatt ist für die Hardware. Dort sind die Register und die 
möglichen Werte beschrieben. Bei TI gibt es oft einen Family User Guide, 
der allgemeine Funktionen und Peripherie beschreibt.

Aber das Datenblatt kann nicht wissen, wie du den Controller 
Programmierst. Ob in ASM, in C, Bitchen-Code, oder was auch immer. Du 
wirst also keine Erklärungen zu 08/15 C code im Datenblatt finden und 
auch bei keinem anderen Hersteller finden können.

von Der (Gast)


Lesenswert?

Alex schrieb:
> aber nirgendwo
> in dem verflixten Datenblatt finde ich eine Definition von Duty1A bzw.
> Duty1B.

Das wird wohl daran liegen, dass Duty1A nur in deinem Programm definiert 
ist und nichts mit der PWM oder TI zu tun hat.

von DirkZ (Gast)


Angehängte Dateien:

Lesenswert?

Alex schrieb:
> Meist kann man sich zwar denken, was das bedeuten soll, aber nirgendwo
> in dem verflixten Datenblatt finde ich eine Definition von Duty1A bzw.
> Duty1B.

Siehe Anhang oder https://www.ti.com/seclit/sw/sprca85/sprca85.zip

von Alex (Gast)


Lesenswert?

Noch mal danke an alle, ich denke morgen finde ich mich dann schon 
besser zurecht :-)

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.