J.Flender wrote:
> Oh, tut mir leid. Ich hatte leider vergessen zu erwähnen, was es für ein
> µC ist. (Ist auch mein erster Thread hier).
Dass man den verwendeten Controller im Betreff angeben soll, steht aber
in den Forenregeln, deren Gelesen-haben man vor dem Absenden bestätigen
muss...
> Der Atmega weigert sich halt, das Bit auf 1 zu schalten. Und ich habe
> keine Ahnung wieso...
Wie sieht denn jetzt Deine Überprüfung aus? Ich befürchte, Du hast nicht
verstanden, dass nicht das Setzen des Bits falsch ist, sondern Deine
Abfrage, ob es gesetzt ist! Die Bedingung hinter dem if kann so
nicht wahr werden, weil auf "== 1" abgefragt wird. Der Term vorne kann
aber nie gleich 1 werden. Du musst an dieser Stelle eine
Interpretation des Ausdrucks "bit_is_set(ACSR, ACD)" bzw. der besseren
(weil ohne irgendwelche nicht-Standard-Makros, deren Implementierung man
erst nachschlagen muss, auskommenden) Alternative "ACSR & (1 << ACD)"
als Wahrheitswert erzwingen.
Der Ausdruck "ACSR & (1 << ACD)" kann niemals gleich 1 sein, weil er
nur die beiden Zustände "0" oder "1 << ACD" (was aufgelöst 0x80 oder
dezimal 128 ist) annehmen kann! Wenn Du das "== 1" einfach weglässt,
dann wird der restliche Ausdruck automatisch als Wahrheitswert
interpretiert. Die Anweisung hinter dem if wird dann ausgeführt, wenn
der Ausdruck in den Klammern () wahr, also von Null verschieden ist...