Verständnis-Problem bei Recode von C zu ASM

OP #2027586
Lesenswert?
• ▲
▼
Hallo Forum-Gemeinde,

Ich Arbeite zur Zeit daran, verschieden C-Projekte für Atmel-Controller 
(vorzugsweise ATTiny2313 und ATMega8) in Assembler umzuschreiben.

Darin sehe ich eigentlich auch keine weiteren Probleme.

Doch nun ist mir eine Verknüpfung in einer If-Bedingung aufgefallen, die 
ich
nicht richtig deuten kann.

Es geht um folgende Elemente

& => Logische Und-Verknüpfung.
~ => Negation (wenn ich richtig informiert bin.)

in der folgenden Verknüpfung:
1
if (USIDR == 0 || (USIDR & ~1) == slaveAddress)

slaveAddress ist uint8_t

der Kommentar hinter der Verknüpfung ist:
1
// If adress is either 0 or own address

Wie kann ich diese Verknüpfung korrekt deuten, wenn "slaveAddress" z. B. 
den binären Wert "0b01101001" (Dez.: 105) enthält?

Gruß,

Marcel
Gast #2027592
Lesenswert?
• ▲
▼
Marcel Papst schrieb:
> Wie kann ich diese Verknüpfung korrekt deuten, wenn "slaveAddress" z. B.
> den binären Wert "0b01101001" (Dez.: 105) enthält?

Slaveadresse muss hier mit 0 enden, da beim Überprüfen das 0te Bit 
ausgeundet wird, ist bei i2c für Read/Write verantwortlich, hat also mit 
der Adresse an sich nix zu tun.

Marcel Papst schrieb:
> (USIDR & ~1) == slaveAddress

als Bsp: USIDR = 0b00110101
mit ~1 = 0b11111110 verundet wird das 0te Bit gelöscht. Daher darf die 
Vergleichsadresse nie das 0te Bit gesetzt haben, sonst wird die Abfrage 
nicht wahr.
:-)
OP #2027596
Lesenswert?
• ▲
▼
Karl heinz Buchegger schrieb:
>> & => Logische Und-Verknüpfung.
>
> falsch.
> Binäre Und-Verknüpfung


Sorry, das war mein Fehler - meinte eigentlich auch binäre Verknüpfung.

> Slaveadresse muss hier mit 0 enden, da beim Überprüfen das 0te Bit
> ausgeundet wird, ist bei i2c für Read/Write verantwortlich, hat also mit
> der Adresse an sich nix zu tun.
>


> als Bsp: USIDR = 0b00110101
> mit ~1 = 0b11111110 verundet wird das 0te Bit gelöscht. Daher darf die
> Vergleichsadresse nie das 0te Bit gesetzt haben, sonst wird die Abfrage
> nicht wahr.
> :-)



Alles Klar, vielen Dank für schnellen und ausführlichen Antworten.

Jetzt kann ich weiter machen ;)

Gruß,

Marcel

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.