Forum: Mikrocontroller und Digitale Elektronik MCP23x17 und Adresse >=4


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von r_u_d_i (Gast)


Angehängte Dateien:

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 ;-)

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

Na super,
entwickle gerade eine Platine damit... Alles unklar ?
Ich nehme also ID=3...

von r_u_d_i (Gast)


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 ;-)

von r_u_d_i (Gast)


Lesenswert?

ICON muss lauten IOCON
sorry ging ein O verloren.

#define IOCON  0x0A

HAEN ist Bit 3
0 disabled
00000000
=0x0

1 enabled
00001000
= 0x08

lg rudi ;-)

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
Noch kein Account? Hier anmelden.