Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 - toggle Befehl


von eppad (Gast)


Lesenswert?

Hallo,

kleine Frage zum ATMEGA 8.

folgendes funktioniert als Schleife einwandfrei:
1
PORTC ^= (1<<PC5);  /* LED am PC5 umschalten */
2
_delay_ms(1000);  /* eine Sekunde warten*/

folgendes funktioniert nicht:
1
PORTC ^= (0<<PC5);  /* LED am PC5 umschalten */
2
_delay_ms(1000);  /* eine Sekunde warten*/

meine Frage: warum?

Ich tue doch überall das gleiche:
Ich schalte PC5 um. Also entweder von 0 auf 1 oder von 1 auf 0.

Kann mir das jemand erklären?

Grüße

Sebastian

von Bastler (Gast)


Lesenswert?

>>folgendes funktioniert als Schleife einwandfrei:

woher weiß der Controller dass er sonst die Befehle wiederholen soll?

Wenn du ständig toggeln willst muss es natürlich in einer Schleife 
stehen.

von Björn B. (elmo)


Lesenswert?

Du solltest Dir mal aufdröseln, was genau da eigentlich genau steht:

(1<<PC5) bedeutet ja, nehme die "1" und schiebe sie um "PC5" Stellen 
nach links. PC5 hat hier den Wert 5. Also kommt bei einer 8Bit Zahl 
heraus: 0010 0000. Wenn Du nun also (0<<PC5) schreibst, kommt einfach 
0000 0000 heraus. Somit änderst du am PORTC garnichts mehr.

von Floh (Gast)


Lesenswert?

^= ist exlusives oder:

0 xor 0 ist 0
0 xor 1 ist 1
1 xor 0 ist 1
1 xor 1 ist 0

um also ein bit zu toggeln, muss man es mit 1 exklusiv verodern.

von Sebastian E. (musarati)


Lesenswert?

Floh schrieb:
> ^= ist exlusives oder:
>
> 0 xor 0 ist 0
> 0 xor 1 ist 1
> 1 xor 0 ist 1
> 1 xor 1 ist 0
>
> um also ein bit zu toggeln, muss man es mit 1 exklusiv verodern.

ahh ok...
das toggle auf XOR beruht wusste ich nicht - danke ;)

von doofi (Gast)


Lesenswert?

> das toggle auf XOR beruht wusste ich nicht - danke ;)

Blos gut das copy&paste ohne Verständnis funktionieren.

von Magnetus (Gast)


Lesenswert?

doofi schrieb:
> Blos gut das copy&paste ohne Verständnis funktionieren.

Der war gut    ;o)

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.