Hallo, suche nach einer Aussagekräftiger Lektüre, wo ich was über senkrechte Striche bei UART Initialisierung nachlesen kann. Momentan kann ich da keine Regelmäßigkeiten erkennen und finde auch nirgendwo was darüber. z.B. wird Bit TXEN ohne den senkrechten Strich auf 1 gesetzt: UCSRB1=(1<<TXEN) und bei UCSZ12 wird er verwendet: UCSRB1|=(1<<UCSZ12) auch hier wird senkrechter Strich genutzt: UCSRZ1|=(1<<USBS) hat vielleicht einer sich schon mal damit befasst und weiß, wo ich die Erklärung finde? Überall wo ich geschaut habe, sind sie nur fertig definiert, ohne zu erklären, warum. vielen Dank im Voraus!
:
Bearbeitet durch User
Alex S. schrieb: > vielleicht einer sich schon mal damit befasst und kann weiß, wo ich > die Erklärung finde? ja, ich. Das ist C
Moin, was der "Strich" macht, bzw. wo der Unterschied zwischen |= und = ist, weißt Du aber? Ansonsten wirf mal hier einen Blick hin: http://www.mikrocontroller.net/articles/Bitmanipulation Oder geht es Dir speziell um die Sache beim UART?
im C-Buch bei bitweise Operationen steht "Der senkrechte Strich | bedeutet ein logisches bitweises ODER" aber in diesem Beispiel schaltet man die expliziten Bits auf 1. Man könnte es einfach für Regel annehmen, jedoch es gibt Beispiele, wo man bei absolut gleicher Operation keinen Strich einsetzt...
> Oder geht es Dir speziell um die Sache beim UART?
genau, ich kann einfach keinen Zusammenhang mit Registereinstellung
finden, weil es hier eigentlich nicht um ODER geht, sonder um das
Einschalten explizites Bits..
und desweiteren ist mir auch nicht klar, warum es nicht überall so ist,
obwohl es doch überall darum geht die Bits 1 zu schalten
:
Bearbeitet durch User
Dann helfe ich doch mal ein wenig: = ändert alle Bits |= setzt nur die Bits, wo der zu schreibende Wert eine "1" hat; die anderen bleiben unverändert Gruß Dietrich
Dietrich L. schrieb: > Dann helfe ich doch mal ein wenig: > > = ändert alle Bits > |= setzt nur die Bits, wo der zu schreibende Wert eine "1" hat; die anderen > bleiben *unverändert* > > Gruß Dietrich Hallo Dietrich, das macht die Sache viel klarer! vielen Dank!)
Alex S. schrieb: > und desweiteren ist mir auch nicht klar, warum es nicht überall so ist, > obwohl es doch überall darum geht die Bits 1 zu schalten Das hängt davon ab, was in der Variablen / im Register schon steht. Bei ersten Schreiben will man vielleicht alle Bits definiert einstellen. Bei weiteren Schreibvorgängen will man eventuell nur bestimmte Bits ändern. Was also richtig ist hängt von der Umgebung ab und davon, was man tatsächlich machen will. Gruß Dietrich
Alex S. schrieb: > logisches bitweises ODER Jetzt wäre ein guter Zeitpunkt, herauszufinden, was "logisches bitweises ODER" eigentlich bedeutet. Oliver
Alex S. schrieb: > genau, ich kann einfach keinen Zusammenhang mit Registereinstellung > finden, weil es hier eigentlich nicht um ODER geht, sonder um das > Einschalten explizites Bits.. Preisfrage: Mit welcher logischen Operation kann man einzelne Bits setzen, ohne dabei die restlichen zu verändern?
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.