Forum: Mikrocontroller und Digitale Elektronik PIC32MX795-PHY DP83848 verliert IP Adresse wenn 12V ausfällt


von Dirk F (Gast)


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

von 1000V Dc (Gast)


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...

von Dirk F (Gast)


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.

von Nick M. (Gast)


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.

von Dirk F (Gast)


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.

von MeierKurt (Gast)


Lesenswert?

Dirk F schrieb:

> Problem:
> Beim Ausfall der +12V Sicherung bekommt der PIC nach dem Einschalten
> eine andere IP Adresse.

Von der Fritzbox? Dann der sagen (Einstellung für die betreffende 
Verbindung unter Heimnetz), dass die IP für dieses Gerät fest ist.

von Nick M. (Gast)


Lesenswert?

Dirk F schrieb:
> über SPI  an ADS1256, MAX541 ,EEPROM

Hat einer von denen was mit den 12 V zu tun?

Dirk F schrieb:
>>Schau doch mal, wo und wie der Stack aufgerufen wird.
> Zyklisch im Main loop jede 2 ms etwa.

Dann ist es ja klar, dass der Stack nicht blockieren kann.

Woher kommt die IP-Adresse?
Warum verwendest Du DHCP wenn du mit fixen Adressen arbeiten willst?

von Peter D. (peda)


Lesenswert?

Dirk F schrieb:
> Ich verstehe es nicht, da die 12 V ja überhaupt nichts mit der MCU und
> dem PHY zu tun haben.

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.

von Dirk F (Gast)


Lesenswert?

Peter D. schrieb:
> Klemm mal alles außer dem EEPROM vom SPI ab.

Geht net. SMD eingelötet.

von Dirk F (Gast)


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....

von Dirk F (Gast)


Lesenswert?

Bestätigt. Das war das Problem.
Danke an alle !!!

von Nick M. (Gast)


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.

von Dirk F (Gast)


Lesenswert?

Nick M. schrieb:
> Dann schreib doch die IP-Adresse ins NV-Mem vom PIC

Hallo, ja gute Idee. Muss ich mich mal mit befassen.
Das externe EEPROM brauch ich aber trotzdem für die Webseite zu 
speichern...

Gruß Dirk

von Nick M. (Gast)


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.

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.