Hallo, wie invertiert man ein bestimmtes Bit aus einem Register moeglichst elegant (wenn man in C programmiert)? Ich moechte zB PC2 vom PORTC-Register invertieren. mg, Johannes
Hilfe zur Selbsthilfe erst suchen dann Fragen ! http://www.mikrocontroller.net/articles/Bitmanipulation
nicht ganz konform - aber mit CodeVision geht auch: PORTC.2=~PORTC.2; Ich finde es sehr praktisch.
hey Leute. ist
1 | port = ~port |
compilerabhängig? Welchen Grund kann dahinter stecken, wenn es nicht funktioniert? Ebenso funktioniert
1 | port = !port |
nicht. Viele Grüße
! ungleich ~ http://home.fhtw-berlin.de/~junghans/cref/CONCEPT/expressions.html var =~var; sollte jedoch gehen!
Nein, das war kein Tippfehler. Schreibt man eine 1 ins Input Register, dann ändert sich der Zustand des Ausgangs, schreibt man ein 0, dann nicht. Es ist also nicht erforderlich, vorher den Inhalt zu lesen. Das ist nicht nur kürzer, sondern insbesondere atomar, d.h. es kann kein Interrupt mitten reinrutschen. Was von besonderer Bedeutung ist, wenn eine ISR ebenfalls an den Port rumfummelt. Diese Funktion gibt es noch nicht bei den älteren Typen wie Mega8/16/32, sondern erst ab z.B. Tiny2313, Mega88/644.
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.