www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMEGA8 - toggle Befehl


Autor: eppad (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kleine Frage zum ATMEGA 8.

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

folgendes funktioniert nicht:
PORTC ^= (0<<PC5);  /* LED am PC5 umschalten */
_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

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Björn B. (elmo)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Floh (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sebastian E. (musarati)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: doofi (Gast)
Datum:

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

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

Autor: Magnetus (Gast)
Datum:

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

Der war gut    ;o)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.