PIC32MX795-PHY DP83848 verliert IP Adresse wenn 12V ausfällt

Gast #6098937
Lesenswert?

Hallo zusammen,
habe ein seltsames Problem.

Hardware:
ATX Netzteil Bicker BEP-506H
3,3V an PIC32MX795F512L89PF
3,3V an PHY  DP83848
+12V an Lt1763-5  zur Erzeugung sauberer +5 V
+12V an MAX6325  zur Erzeugung Referenz +2,5 V
+3,3V an ADS1256 Digitalteil
+5V Sauber an ADS1256 Analogteil
PIC32 über SPI  an ADS1256, MAX541 ,EEPROM

Software:
Microchip TCP/IP Stack Legacy (nicht Harmony)
IP Adresse PIC32/PHY fest zugewiesen auf 192.168.178.10
Daten IP Adresse werden beim Einschalten aus EEPROM gelesen und 
verwendet

Problem:
Beim Ausfall der +12V Sicherung bekommt der PIC nach dem Einschalten 
eine andere IP Adresse.
Laut Datenblatt des Netzgerätes muss es eine gewisse Grundlast an +12V 
vorhanden sein. Habe dann auch einen 120R Widerstand als Grundlast vor 
der Sicherung eingelötet, hat aber keinen Erfolg gebracht.

Weiterhin ist es so, dass beim Ausfall der +12V der Code nicht blockiert 
wird, d.h. der TCP/IP Stack wird zyklisch bearbeitet.

Wo könnte das Problem liegen ?

Gruß Dirk
Gast #6098969
Lesenswert?

Dirk F schrieb:
>
> Weiterhin ist es so, dass beim Ausfall der +12V der Code nicht blockiert
> wird, d.h. der TCP/IP Stack wird zyklisch bearbeitet.
>
> Wo könnte das Problem liegen ?
>
> Gruß Dirk

Der mc versorgt sich wohl parasitär über einen seiner Pins mit Strom. 
Geht also in keinen  Reset und lädt somit auch keine IP aus dem EPROM...
Gast #6098983
Lesenswert?

1000V Dc schrieb:
> Der mc versorgt sich wohl parasitär über einen seiner Pins mit Strom.
> Geht also in keinen  Reset und lädt somit auch keine IP aus dem EPROM...

Hi, das Problem tritt auf, nachdem alle Spannungen aus und wieder 
eingeschaltet wurden.
Im  code habe ich am Anfang bei der Initialisierung einen  LED Blinkcode 
drin, damit ich einen zufälligen Reset erkennen kann.
Der wird abgearbeitet nach dem einschalten. Also startet die MCU komlett 
neu.
Gast #6099038
Lesenswert?

Dirk F schrieb:
> Also startet die MCU komlett neu.

Dann dürfte es ja nie gehen. Wenn Du dein Setup neu startest (durch 
Spannung aus/an), was passiert dann?
Feste IP?
Geht das jedes Mal?

Dirk F schrieb:
> d.h. der TCP/IP Stack wird zyklisch bearbeitet.

Ja, das muss doch so sein. Ist ja ein Hintergrund-Prozess. Auch wenn ich 
Harmony verwende und nicht Legacy. Schau doch mal, wo und wie der Stack 
aufgerufen wird.
Gast #6099047
Lesenswert?

Nick M. schrieb:
> Dann dürfte es ja nie gehen. Wenn Du dein Setup neu startest (durch
> Spannung aus/an), was passiert dann?
> Feste IP?
> Geht das jedes Mal?

Ja, jedes mal nach dem Einschalten aller Spannungen wird die feste IP 
vergeben.

Nur wenn ich die 12 V Sicherung entferne, und dann einschalte, kommen 
die Probleme mit der IP adresse.
Ich verstehe es nicht, da die 12 V ja überhaupt nichts mit der MCU und 
dem PHY zu tun haben.

>Schau doch mal, wo und wie der Stack aufgerufen wird.
Zyklisch im Main loop jede 2 ms etwa.
Gast #6099388
Lesenswert?

Peter D. schrieb:
> Lt. Deiner Beschreibung versorgen die 12V den ADS1256 und der hängt mit
> dem EEPROM am SPI. Klemm mal alles außer dem EEPROM vom SPI ab.

Hallo Peter.
Dein Hinweis ist plausiebel. Danke !!
ALso der ADC, beide DAC und das EEPROM hängen am selben SPI Bus vom PIC 
(der hat ja insgesamt 4 x SPI).
Der Analogteil und der Digitalteil des ADC wird beim Ausfall der +12V 
nicht versorgt. In beiden Versorgungsleitungen hängt jeweils ein 
Schließerkontakt eines Relais, um den ADC (ADS1256) komplett von der 
Spannung zu trennen. Dieses Relais wird von den +12V versorgt.

So wenn der ADS1256 ohne Versorgungsspannung ist, dann sind die SPI Ein 
und Ausgänge ja über die internen Dioden quasi auf Masse gezogen, d.h. 
der gesamte SPI Bus wird gestört >>> Die IP Adresse wird als 0.0.0.0 
aus dem EEPROM falsch geladen.......

Werde gleich mal einen Testcode schreiben, in dem die IP Adresse vom 
Programmcode vorgegeben wird, nicht über den EEPROM Inhalt.

Ergebnisse dann gleich....
Gast #6099606
Lesenswert?

Dirk F schrieb:
> Werde gleich mal einen Testcode schreiben, in dem die IP Adresse vom
> Programmcode vorgegeben wird, nicht über den EEPROM Inhalt.

Dann schreib doch die IP-Adresse ins NV-Mem vom PIC. Das geht doch 
bestens. Da kannst du evtl. das komplette EEPROM weglassen. 512 k im PIC 
ist ja doch eine Hausnummer.
Gast #6100366
Lesenswert?

Dirk F schrieb:
> Das externe EEPROM brauch ich aber trotzdem für die Webseite zu
> speichern...

Ah OK! Das kann schnell zu viel werden.
Für die Konfigurations-Daten würde ich einen key-value store benutzen 
und x kBytes im NV-Mem dafür reservieren.
Den kv-store gibts wohl nicht fertig von Microchip.

Die einfache Lösung ist natürlich eine struct abzulegen und darauf 
direkt zuzugreifen.

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