PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fragen zum I2C und zum Beispielprogramm



TrainMen
21.06.2009, 14:26
Im Beispielprogramm RP6Base_I2CMaster_02 wird mit
#define PCF8574_8LEDS_ADR 0x70
der Chip angesprochen. Vorraussetzung ist doch das der Chip (Basisadresse 64 [0100]) und die Adressleitung A2 und A1 an VCC und A0 an GND liegen. Ist das richtig ?

Ich habe jetzt hier den PCF8574AP der hat die Basisadresse 112 [0111] und A2-A0 sind auf GND also wäre dann #define PCF8574AP_8LEDS_ADR 0112 richtig ?

irgendwas verstehe ich doch hier falsch denn mit
#define PCF8591_4LDRS_ADR 0x90
wird der Chip2 angesprochen. Die Basis hat aber schon 144 [1001]

wo ist mein Denkfehler ?

by TrainMen

Dirk
21.06.2009, 17:00
Hallo TrainMen,

1. PCF 8574:
Der hat die Adresse binär 0100CBA0.
Dabei ist:
A = A0
B = A1
C = A2

2. PCF 8574A:
Der hat die Adresse binär 0111CBA0.
Damit bezieht sich die Definition PCF8574_8LEDS_ADR 0x70 in der Demo wohl auf einen PCF 8574A, bei dem A0..A2 auf GND liegen.

3. PCF 8591:
Der hat die Adresse binär 1001CBAR.
Dabei ist:
R = R/W-Bit
Damit bezieht sich die Definition PCF8591_4LDRS_ADR 0x90 in der 2. Demo auf einen PCF 8591, bei dem auch A0..A2 auf GND liegen.

Klarer?

Gruß Dirk

P.S.: Die Basisadresse eines PCF 8574 wäre also 0x40, ok?

TrainMen
21.06.2009, 17:49
Hi,
nix ist klarer,
wo nimmst Du denn das her "0x40" ?? was rechnest du da um ?
und zu 3
die Adresse wäre dann binär 10010000

ist das hier ein Sch..

by Trainmen

Dirk
21.06.2009, 18:33
Hallo TrainMen,

... wo nimmst Du denn das her "0x40" ?
Kennst du dich mit den verschiedenen Arten der Zahlendarstellung aus?

Binär: 01000000 = Hexadezimal: 0x40
Binär: 01110000 = Hexadezimal: 0x70
Binär: 10010000 = Hexadezimal: 0x90

Du kannst die Hex-Zahlen als 2x 4 Bit darstellen:
Binär: 0000 = Hex: 0x0 = Dezimal: 0
Binär: 0001 = Hex: 0x1
Binär: 0010 = Hex: 0x2
Binär: 0011 = Hex: 0x3
Binär: 0100 = Hex: 0x4
Binär: 0101 = Hex: 0x5
Binär: 0110 = Hex: 0x6
Binär: 0111 = Hex: 0x7
Binär: 1000 = Hex: 0x8
Binär: 1001 = Hex: 0x9
Binär: 1010 = Hex: 0xA = Dezimal: 10
Binär: 1011 = Hex: 0xB
Binär: 1100 = Hex: 0xC
Binär: 1101 = Hex: 0xD
Binär: 1110 = Hex: 0xE
Binär: 1111 = Hex: 0xF = Dezimal: 15

Wenn du dann 8 Bit (1 Byte) hast, besteht das aus 2 Nibbles (= 4 Bit). Für die Hex-Zahl kannst du sie so zusammen setzen.
Der Binärwert 10101100 wäre dann also: 0xAC

Gruß Dirk

TrainMen
21.06.2009, 18:51
hi,
aha, nun ist das schon klarer und mein Denkfehler war das ich mal von dezimal und mal von binär ausging.
vielleicht sollte ich in meinen alter lieber mit Briefmarken anfangen als mit diesen sachen hier

by Trainmen

021aet04
21.06.2009, 22:55
Ich weiß zwar nicht wie alt du bist, aber wenn man sich dafür interresiert, ist man nie zu alt. Solche Dinge muss man als Kind genauso lernen, wie ein Pensionist, wenn man sich damit beschäftigen will