MCP23x17 und Adresse >=4

Gast #3956128
Lesenswert?

hi

ich habe leider lange gebraucht um auf den fehler aufmerksam zu werden, 
daher erstmal hier gleich der hinweis, der ähnliches problem hat.

der mcp23s17 (spi)  genauso wie der mcp017 (i²c) wenn er ab device 4 
adressiert wird, muss separat explizit angesprochen werden - allerdings 
gilt das angeblcih für neuere chips nicht mehr und der fehler wurde hw 
mässig auch behoben..

wer kann sagen, wie man das erkennt auf dem chip, wann sich der neue 
chip mit
A2=1
A1=0
A0=0

auch anfangs mit der im datenblatt genannten 0 adresse erstmal 
ansprechen lässt, solange man ihn nicht expizit mitteilt, dass 
IOCON.HAEN=1 gilt.

bei den alten chips muss man das über seine >= A2=1 adresse mitteilen, 
denn auf 0 reagieren die alten serien im gegensatz nicht darauf.

attached hinweis mc ( alt ich weiss - aber anscheinend macht keiner >= 
A2=1
zumindest konnte ich keinen hinweis im forum finden.

meine frage:
wie unterscheide ich neue und alte chips?
was sagt 14252AP

jahrgang 2014
25 kw
?

ab wann ist der fehler nicht mehr?
oder ist der fehler hw mässig noch nicht behoben, jedenfalls die im bild 
genannten habe ich explizit mit der adresse >=4 ansprechen müssen, um 
ihn mitzuteilen, dass IOCON.HAEN=1 gilt..


lg rudi ;-)
Angehängte Dateien:
Gast #3956645
Lesenswert?

Bernd Rüter schrieb:

> ..Ich nehme also ID=3...


A2: 0 (GND )
A1: 1 ( pull up )
A0: 1 ( pull up )
-------
hw: 3

lässt sich der mcp23 erst mal ansprechen,
standard ist IOCON.HAEN = 0
heist, alles was unter 4 ist wird angesprochen.

wäre er

A2: 1 ( pull up )
A1: 0 ( GND )
A0: 0 ( GND )
-------
hw: 4

wäre es - im gegensatz zum datenblatt bei IOCON.HAEN = 0 nicht 
ansprechbar obwohl es das beschreibt! -> errata

wenn man ihn ansprechen wollte, müsste man da das device benennen
0x40 + 4 = 0x44
spi_write(opcode+hw,register,data)
spi_write(0x44,GPIOA,0x00)
..

wenn man ihn dann sagen wollte im verbund mit anderen(0,1,2,3) , dass
ICON.HAEN = 1 zutrifft

dann

erst alle ansprechbaren wie gewohnt
spi_write(ox4o,IOCON,0x08)

es reagieren 0,1,2,3

und jetzt den extra lauf für alle anderen ab 4
hw: 4 spi_write(0x44,ICON,0x08)

hw: 5 spi_write(0x45,ICON,0x08)
hw: 6 spi_write(0x46,ICON,0x08)
hw: 7 spi_write(0x47,ICON,0x08)

i²c das gleiche.


lg rudi ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren