Frage zu Binär und i2c bus?

3 Antworten

Hey, du scheinst ein paar gehörige Lücken in den Grundlagen der Digitaltechnik zu haben, bei all deinen Fragen. Das solltest du nachholen.

X sind sogenannte "Don't Care"s.
Das heisst, dass der Wert dieses Bits in dem Moment oder dieser Anwendung keine Rolle spielt.

Zu deinem Fall:
Die Zahlen sind offenbar im BCD-Code für Tag und Monat codiert (jede Ziffer wird einzeln codiert z.B.: 1 = 0001, 4 = 0100) .

  • Monat 12 = Da ein Jahr nur 12 Monate hat, kann die erste Ziffer des Monats nur 0 oder 1 sein, deshalb sind die vordersten drei Bits egal und werden nicht ausgewertet
  • Da ein Monat maximal 31 Tage hat, kann die erste Ziffer höchstens 3 sein, was binär 11 wäre; deshalb werden die vordersten zwei Bits nicht ausgewertet und sind egal.
Von Experte LUKEars bestätigt

Sieh im Datenblatt nach was in den Registern steht.

Bei Adresse 5 sind die ersten 2 Bit das Jahr dad ist dir für den Tag egal daher beachte die einfach nicht.

Die nächsten beiden Stellen also 01 sind die Zener also 1 und die nächsten 4 Stellen (0100) die Einer also 4

Somit ergibt es Tag 14

LUKEars  15.03.2024, 06:26

also BCD Code, nachdem man ein paar MSB (da wo ein X ist) durch Nullen ersetzt hat?

0
Kelec  15.03.2024, 07:55
@LUKEars

Naja du ersetzt das X nicht wirklich durch eine 0 sondern du verwendest es einfach nicht weil dich der Wert da drinn nicht interessiert.

0
LUKEars  15.03.2024, 07:57
@Kelec

BCD braucht aber immer 4bit... iwi... also man liest es und ersetzt die X-e mit bitweisem AND und dann kommt es in den BCD decoder... oda?

0
Kelec  15.03.2024, 08:09
@LUKEars

Nein es sind 2 Bit für das Jahr, 2 Bit für die Zenerstelle und 4 Bit für den Tag.

Also es ist zwar BCD aber das Jahr hat nur 2 Bit und nicht 4 und die Zenerstelle hat auch nur 2 Bit und nicht 4.

Technisch könntest du es aber natürlich so umsetzen wie du sagst. Aber allgemein werden X nicht einfach durch 0 ersetzt sondern gar nicht verwendet.

Wenn du es in Hardware machst bedeutet es, dass diese Ausgänge nirgendwo angeschlossen wären.

2
AMG38  15.03.2024, 19:36

Der Speicherbereich bietet einfach 4 Bits an dieser Stelle bzw. 8 Bit als gesamtes, doch genutzt wird nicht der gesamte Speicherbereich. Das MSB und MSB -1 würde man bei einer vernünftigen Programmierung durchaus mit Nullen füllen beim Initialisieren, wenngleich die Funktion zur Konstruktion des Datums die Werte dort eh nicht berücksichtigen würde.

0
Kelec  16.03.2024, 10:26
@AMG38

Muss man nicht da diese Stellen nach Reset ohnehin 0 sind.

Ganz allgemein würde man sie natürlich mit irgendeinem Default Wert füllen, aber das war auch nicht Teil der Frage.

0

X heißt, der konkrete Wert an dieser Stelle ist egal. Es kann eine 1 oder 0 sein und du musst das Ergebnis ignorieren.

Also der Chip dürfte dir als Tag auch 11010100 zurückliefern, es bleibt trotzdem Tag 14.

Woher ich das weiß:Studium / Ausbildung – Studium Elektrotechnik und Informationstechnik, Hobbybastler