Forum: Mikrocontroller und Digitale Elektronik MCP23017, I2C Porterweiterung, Reset


von Thomas B. (thomasb)


Lesenswert?

Hallo !

In einer Anwendung verwende ich zum Schalten von Relais und LEDs 
(natürlich nicht direkt) einen MCP23017 (I2C Porterweiterung).
Dieser hat hat einen Reseteinang. Jetzt stellt sich mir die Frage, ob 
der Reset als optional anzusehen ist (Laut Datenblatt wird ja ein 
Power-On-Reset durchgeführt).
D.h. was ich suche sind Erfahrungswerte: Hat der MCP vielleicht Probleme 
mit dem POR, so daß beim Start gelegentlich ein zusätzlicher 
"händischer" Reset notwendig wird ?? Hängt sich das Teil vielleicht 
sogar mal auf ???
Grundlos werden sie das ja nicht vorsehen. Der gute alte PCF8574 hatte 
keinen Reseteingang und hat bei mir eigentlich immer einwandfrei 
funktioniert.

Schöne Grüße,
Thomas

von Andreas K. (a-k)


Lesenswert?

Dass ein Reseteingang vorgesehen ist, ist kein Indiz für ein schlechtes 
Design, sondern sehr vernünftig. Auch wenn man ihn nicht immer braucht.

Es gibt Anwendungen, wo man nach extern initiiertem Reset nicht darauf 
warten kann, bis der Controller im Rahmen seiner Initialisierung den 
Baustein per Software in den Grundzustand versetzt.

Denk auch an einen Spannungsüberwachungs-Baustein, der das Reset-Signal 
erzeugt. Wenn der zuschlägt, ist der Prozessor weg, aber ohne 
Reset-Anschluss verbreitet der Portbaustein weiterhin soviel Unfug wie 
er möchte.

von Thomas B. (thomasb)


Lesenswert?

Danke für die Antwort !

> Es gibt Anwendungen, wo man nach extern initiiertem Reset nicht darauf
> warten kann, bis der Controller im Rahmen seiner Initialisierung den
> Baustein per Software in den Grundzustand versetzt.

Naja, der MCP verfügt ja über einen POR, bei dem alle Register in den 
Grundzustand gebracht werden. So gesehen macht für mich ein externer 
Reset hier nur dann Sinn, wenn beim POR etwas schiefläuft (muss ja nicht 
schlechtes Design sein - es reicht ja eine "schlechte" 
Spannungsversorgung, könnte ja sein, daß der MCP hier besonders 
empfindlich ist)

>
> Denk auch an einen Spannungsüberwachungs-Baustein, der das Reset-Signal
> erzeugt. Wenn der zuschlägt, ist der Prozessor weg, aber ohne
> Reset-Anschluss verbreitet der Portbaustein weiterhin soviel Unfug wie
> er möchte.

Hm, da hast Du natürlich recht mit dem externen Resetbaustein.
Allerdings: Wenn die Relais direkt (mit nachgeschaltetem Treiber) von 
den Portpins des Prozessors aus betrieben werden würden, wäre das 
Problem meiner Meinung nach eigentlich das selbe. Wenn nicht vielleicht 
noch schlimmer, da ja die Zustände der Ports vom Prozessor dann nicht 
definiert sind. Über den Portexpander (ohne Reset) behalten die Relais 
im Idealfall ihren Zustand so lange bis der Prozessor wieder da ist und 
die Kommunikation wieder aufnimmt.
Sollte sich der MCP dabei "aufgehängt" haben macht der Reset natürlich 
wieder Sinn. Wobei ich aber nicht weiß, wie oft so ein Aufhängen 
praktisch überhaupt vorkommt, da ja in dem Teil eine Statemachine 
werkelt. Ich vermute mal, dass zu dem Zeitpunkt wo die Register ihren 
Wert verlieren würden auch schon ein POR durchgeführt wird ...

von Andreas K. (a-k)


Lesenswert?

Thomas B. wrote:

> Naja, der MCP verfügt ja über einen POR, bei dem alle Register in den
> Grundzustand gebracht werden.

Es gibt nicht nur den Power-On-Reset. Es gibt auch andere Resets. 
Vielleicht willst du ja nicht, dass der Portbaustein wild rumspukt, 
während der Programmer grad mit dem Controller rumspielt.

> daß der MCP hier besonders empfindlich ist)

Weiss ich nicht. Das ist aber definitiv nicht der Grund für diese 
Leitung. Im Gegenteil: es ist in meinen Augen ein grosses Manko des 
PCF8574, dass er keine hat.

> Allerdings: Wenn die Relais direkt (mit nachgeschaltetem Treiber) von
> den Portpins des Prozessors aus betrieben werden würden, wäre das
> Problem meiner Meinung nach eigentlich das selbe.

Nein, denn der Prozessor gibt bei angelegtem Reset sofort seine eigenen 
Pins frei.

> Wenn nicht vielleicht
> noch schlimmer, da ja die Zustände der Ports vom Prozessor dann nicht
> definiert sind.

Im Gegenteil, sie sind sehr klar definiert. Ein Treiberbaustein wie der 
ULN2003 braucht zum schalten Strom, und bei hochohmigem Pin (alle ausser 
8051) kriegt er den nicht => abgeschaltet.

von Thomas B. (thomasb)


Lesenswert?

> Es gibt nicht nur den Power-On-Reset. Es gibt auch andere Resets.
> Vielleicht willst du ja nicht, dass der Portbaustein wild rumspukt,
> während der Programmer grad mit dem Controller rumspielt.

Ja gut, aber wenn ich den externen Reset vom MCP23017 nicht verwende, 
bewirkt  der Programmer am Prozessor nicht wirklich was. Und selbst wenn 
ich einen Portpin zum Reset schalte, "spukt" das Ding höchstens einmal - 
mehr als die Ausgänge zurücksetzen kann er beim Reset ja nicht machen.
Oder seh ich da was falsch ?

>> Allerdings: Wenn die Relais direkt (mit nachgeschaltetem Treiber) von
>> den Portpins des Prozessors aus betrieben werden würden, wäre das
>> Problem meiner Meinung nach eigentlich das selbe.
>
> Nein, denn der Prozessor gibt bei angelegtem Reset sofort seine eigenen
> Pins frei.

Ja da hast natürlich recht. Hatte das falsch im Kopf. Beim M16C den ich 
hier verwende, sind die Port-Register nach einem Reset nicht definiert. 
Die Direction-Register werden nach einem Reset aber definiert als 
Eingang geschaltet.


Auf jeden Fall hast du mich überzeugt, dass der Reset am MCP sinnvoll 
ist und ich ihn wenn möglich auch verwenden werde. :)

Schöne Grüße,
Thomas

von Tweaker (Gast)


Lesenswert?

Wenn ihr mir jetzt noch sagt, wie ich den Reset statisch beschalten muss 
wenn ich ihn nicht verwenden will, dann wäre das Thema "RESET" am 
MCP23017 / MCP23S17 vollständig abgehandelt.

Das Datenblatt gibt mir diesbezüglich keine Sauber Antwort...
Viele Dank

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.