mikrocontroller.net

Forum: Compiler & IDEs Warum sollte man Bits nicht mit "(0<<PB1)" löschen?


Autor: tset5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Betreff sagt eigentlich alles. Ich habe bisher in Assembler 
programmiert und will nun auch C lernen. Also arbeite ich das 
GCC-Tutorial durch und habe mich natürlich gefragt, ob man Bits nicht 
auch mit "(0<<PB1)" löschen kann. Folglich habe ich das natürlich 
ausprobiert und es hat wunderbar funktioniert.
(AVR-Studio mit WIN-AVR)

Also warum wird das nirgendwo erwähnt? Ist das gegen irgendeine 
Spezifikation von C?

Autor: XXX (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine 0 bleibt immer eine 0, egal wie oft und wie weit du sie schiebst.
Zeig mal den kompletten Befehl, den du verwendest. Ich schätze, du
löscht immer das komplette Byte.

Gruß
XXX

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tset5 schrieb:
> Der Betreff sagt eigentlich alles.

Weil du 0 um beliebig viele Stellen nach links verschieben kannst, das 
Ergebnis ist trotzdem immer noch 0

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tset5 schrieb:
> habe mich natürlich gefragt, ob man Bits nicht
> auch mit "(0<<PB1)" löschen kann.

Bittschö der Herr, löschns dann jetzt die andern Bits. Ach, hams scho?
Dös wollt I garnet. Erst wo wenn I sag, sollns die löschn!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tset5 schrieb:

> auch mit "(0<<PB1)" löschen kann. Folglich habe ich das natürlich
> ausprobiert und es hat wunderbar funktioniert.

Irrtum.
Du hast maximal das komplette Register auf 0 gesetzt, aber nicht ein 
einzelnes Bit

Autor: tset5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt, war nur ne testschaltung, bei der ich auch nur ein Bit brauchte, 
also hab ich das nicht gleich bemerkt...

Hätte mich auch irgendwie gewundert, warum das so einfach gehen sollte 
und gleichzeitig nirgendwo erwähnt wird...

Danke für die Info, darauf bin ich irgendwie nicht gekommen.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tset5 schrieb:
> Danke für die Info, darauf bin ich irgendwie nicht gekommen.

Naja. Nicht so schlimm. Hätte ja auch ein Fehler in der C-Spezifikation 
sein können, nicht wahr? ;-)

Autor: mitleser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dieses Forum ist wohl nur zum Ingenieur-Gehälter-Trollen gut? Da stellt 
einer ne ordentliche Frage und man kommt ihm gleich mit der C-Spec. Soll 
ja auch Hobby-Anwender geben, oder Anfänger, oder welche, die nur nicht 
auf die Idee kommen, in so ne blöde Spec. zu sehen.

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mitleser schrieb:
> dieses Forum ist wohl nur zum Ingenieur-Gehälter-Trollen gut? Da stellt
> einer ne ordentliche Frage und man kommt ihm gleich mit der C-Spec. Soll
> ja auch Hobby-Anwender geben, oder Anfänger, oder welche, die nur nicht
> auf die Idee kommen, in so ne blöde Spec. zu sehen.

Ich nehme die Bemerkung mit Bedauern zurück, verweise aber zusätzlich 
auf das Emoticon.

Autor: sebastians (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Macht aber Sinn zu Dokumentationszwecken wenn man zeigen will, welche 
Bits man nicht setzt (nicht setzen ist was anderes als löschen!)
    ADCSRA = /* ADC Control and Status Register A */
          (1 << ADEN) /* ADC Enable */
        | (1 << ADSC) /* ADC Start Conversion */
        | (1 << ADIE) /* ADC Interrupt Enable */
        /* ADPS2...ADPS0 ADC Prescaler Select Bits = 1 0 0,
         * Bei 1MHz, Faktor 16 = 62,5kHz, 16us */
        | (1<< ADPS2) 
        | (0<< ADPS1) 
        | (0<< ADPS0) 
        ;
oder wenn das Bit variabel ist
    ADMUX = /* ADC Multiplexer Select Register */
        /* REFS1...REFS0 (ReferenceSelection Bits) = 0 --> Externes AREF */        
        /* MUX4...MUX0 = 6 + (bool)adc_channel*/
        (1 << MUX2) | (1 << MUX1) | (adc_channel << MUX0);

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mitleser schrieb:
> dieses Forum ist wohl nur zum Ingenieur-Gehälter-Trollen gut? Da stellt
> einer ne ordentliche Frage und man kommt ihm gleich mit der C-Spec. Soll
> ja auch Hobby-Anwender geben, oder Anfänger, oder welche, die nur nicht
> auf die Idee kommen, in so ne blöde Spec. zu sehen.

Du sprichst mir von der Seele:

Es gibt leider nur wenige, die vernünftig antworten.

Wenn man alles in der Literatur nachlesen kann (was durchaus geht), 
braucht man eigentlich dieses Forum nicht mehr. Ich poste ja exakt in 
diesem Forum, weil ich entweder nicht weiß, wo ich suchen soll oder weil 
ich etwas nicht verstanden habe.

Vom Leitsatz " ... es gibt keine dummen Fragen ..." sind die meisten 
Forumsteilnehmer hier weit entfernt.

Die Antworten, die vorab hier gegeben worden sind, sind zwar meist 
richtig,  kann man nur verstehen, wenn man kein Anfänger ist. Alle wenig 
hilfreich. Glaube nicht, dass tset5 seine Frage zufriedenstellend 
(einfach) beantwortet findet.

Grüße

Autor: Frank M. (ukw) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
John Schmitz schrieb:

> Vom Leitsatz " ... es gibt keine dummen Fragen ..." sind die meisten
> Forumsteilnehmer hier weit entfernt.

Dieser "Leitsatz" ist kompletter Schwachfug. Natürlich gibt es dumme 
Fragen.

Beachte aber bitte, dass sich meine Antwort lediglich auf Deine 
allgemeine Aussage bezieht - nicht auf die Frage von tset5 ;-)

Gruß,

Frank

Autor: John Schmitz (student)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank M. schrieb:
> John Schmitz schrieb:
>
>> Vom Leitsatz " ... es gibt keine dummen Fragen ..." sind die meisten
>> Forumsteilnehmer hier weit entfernt.
>
> Dieser "Leitsatz" ist kompletter Schwachfug. Natürlich gibt es dumme
> Fragen.
>
> Beachte aber bitte, dass sich meine Antwort lediglich auf Deine
> allgemeine Aussage bezieht - nicht auf die Frage von tset5 ;-)
>
> Gruß,
>
> Frank

http://de.wikipedia.org/wiki/Benutzer:Schwachfug

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
John Schmitz schrieb:
> Vom Leitsatz " ... es gibt keine dummen Fragen ..."

Du vergisst die Tatsache, dass dieser Leitsatz nur für Kinder gilt! 
Manche Erwachsene bekommen dann halt nicht mit, dass von ihnen erwartet 
wird, dass sie sich weiter entwickeln. Denn als Erwachsener Mensch kann 
man sehr wohl dumme Fragen stellen, und dann auch dumme antworten 
bekommen.

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.