Forum: Mikrocontroller und Digitale Elektronik togglen oder Diskret umschalten


von Toggler (Gast)


Lesenswert?

Moin,

eine Frage zum Toggle Operator:

P1OUT ^= BIT0;

im Vergleich zu der Komkbination der beiden Ausdrücke:

P1OUT |= BIT0;
P1OUT &=~ BIT0;


Besitzen die beiden Operatoren unterschiedlich lange Bearbeitungszeiten?
Ist der Speicherbedarf im Programm unterschiedlich groß?

Handelt sich um einen MSP430.

mfg

von christoph (Gast)


Lesenswert?

in erster Linie liegt es dem compiler bzw. dem Hersteller / 
Programmierer des Compilers wie die c-Befehle in Maschinencode umgesetzt 
werden.
Ich würde aber vermuten dass das Erbeniss das gleiche ist!

Beides sind gängige Mathoden, ich tippe darauf dass es gleich übersetzt 
wird!

Welchen compiler verwendest du?

von Toggler (Gast)


Lesenswert?

IAR

von Peter II (Gast)


Lesenswert?

christoph schrieb:
> Beides sind gängige Mathoden, ich tippe darauf dass es gleich übersetzt
> wird!

das sollte eigentlich nicht passieren. Denn

P1OUT |= BIT0;
P1OUT &=~ BIT0;

sind 2 Anweisungen die auf ein IO-Port gehen, dies sollte der compiler 
1:1 umsetzen er darf dabei nichts zusammenfassen. Es kann ja gewollt 
sein, das der ausgang genau in dieser reihenfolge umgeschaltet wird.

von christoph (Gast)


Lesenswert?

nun ja, ich ging oben davon aus, dass die Toggelreihenfolge gleich ist.

wobei mir dabei noch auffällt dass bei einem toggel ja erst geprüft 
werden muss, welche Zustand der Port hat, die Toggelanweisung dürfte 
daher etwas länger dauern!

bei
P1OUT |= BIT0;
P1OUT &=~ BIT0;
muss ich dagegen wissen welchen Zustand ich vor der Ausführung habe, 
sonst sieht man nichts am Port!

von Max D. (max_d)


Lesenswert?

Viele Prozessoren haben eine XOR Funktion die für sowas genutzt wird 
(zumindest vom AVR-gcc)... aber nur wenn auch xor  dasteht, das andere 
kann ja theoretisch (wennzwischendrin ein Interrupt kommt) was anderes 
machen....

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.