Seltsames Verhalten von PIC18F14K50 EUSART. es funktioniert nur, wenn die Sonde des Logikanalysators angeschlossen ist

Ich verwende einen PIC18F14K50 und einen RS485-Bus-Transceiver ( ADM3485 ), um mit einem Modbus-RTU-Sensornetzwerk zu kommunizieren. Die Platine wurde nicht von mir entworfen (und sie hat ein sehr dummes/kompaktes Design, so dass es sehr schwer zu debuggen oder zu untersuchen ist) und es scheint lästig zu sein. Abgesehen davon hat der PIC18F14K50 selbst keine Debugging-Fähigkeit.

Das Problem ist, dass, während der Logikanalysator angeschlossen ist, um die RS485-Signale zu überwachen, das Gerät gut funktioniert, aber wenn ich die Sonden abtrenne, wird es nicht.

Einige Hinweise:

  • das UART-Paket, wenn die Sonden angeschlossen sind, ist korrekt. alles funktioniert wie erwartet.Geben Sie hier die Bildbeschreibung ein
  • Das Verlassen der Erdung des Logikanalysators oder das Trennen (nach dem Trennen der Sonden) ändert nichts. Ich denke also, dass die Sonden selbst dafür sorgen, dass das System irgendwie funktioniert.
  • die Simulationen in Software, funktionieren perfekt.
  • Die anderen Geräte im Netzwerk funktionieren einwandfrei und finden sich selbst. Sie sind auch aus der PIC18-Familie.
  • Die verdrillte Drahtlänge beträgt weniger als 1 m (ich arbeite auf meiner Bank) und an beiden Enden befinden sich 120R- und 150R-Abschlusswiderstände. für die RS485-Leitungen gibt es 1K-Pull-Up/Pull-Down-Widerstände.
  • Die Mikrocontroller auf dem Bus verwenden dieselbe UART-Softwarebibliothek. Der einzige Unterschied für das DUT (den problematischen PIC18F14K50, von dem ich spreche) besteht jedoch darin, dass der RX-Pin des EUSART mit ADC gemultiplext ist. Ich hatte vorher Probleme mit analogen Pins des PIC18, wenn sie als Eingänge verwendet wurden.

Der vom Designer bereitgestellte Teil des Schaltplans:

Geben Sie hier die Bildbeschreibung ein

Die uart-Bibliothek setzt die IO wie folgt:

ANSELHbits.ANS11  = 0; //disable the analog input on RX
void uart_init(uint32_t sysCLK, uint32_t baudRate)
{
  uint16_t baudTemp = (sysCLK/(64*baudRate))-1;
  SPBRGH1_REG  = (uint8_t)(baudTemp>>8);
  SPBRG1_REG   = (uint8_t)(baudTemp);
  TXSTA1bits.SYNC    = 0;
  RX1_INPUT;

  DISABLE_ANSEL_RX1;

  TXSTA1bits.TXEN      = 1;
  RCSTA1bits.CREN      = 1;
  RCSTA1bits.SPEN      = 1;
}
Wo genau wird der Logikanalysator angeschlossen, wenn er funktioniert? Auf der PIC-Seite des Transceivers oder auf der RS485-Seite? Ist es nicht ein Problem, wenn der PIC 3,3 V und der Transceiver 5 V verwendet?
Ich werde nicht sagen, dass dies das Problem ist , aber ein sehr verdächtiger Umstand ist, dass U2 ein 3,3-V-Teil ist, das von einer 5-V-Schiene abgeführt wird. Es ist absolut nicht für den 5-V-Betrieb ausgelegt, daher ist die Wahrscheinlichkeit sehr gering, dass es Eingänge hat, die für den Betrieb mit einem 3,3-V-betriebenen Gerät ausgelegt sind. Es funktioniert wahrscheinlich nur knapp ohne den angeschlossenen Logikanalysator und hält sich kaum an die Funktionalität. Wenn Sie das Board modifizieren können, schlage ich vor, U2 mit 3,3 V zu versorgen und zu berichten, wie die Dinge funktionieren.
Warum betreiben Sie Ihren ADM3485 von einer 5-V-Schiene? Es ist nur für den Betrieb mit max. 3,6 V ausgelegt, und Sie haben sogar eine 3,3-V-Schiene, die Sie für den PIC verwenden!
@brhans ja, es scheint das Problem zu sein. obwohl das Datenblatt eine absolute maximale Nennspannung von 7 V angibt.
@TimWescott Kann ich es in eine 5-V-Version ändern, z. B. MAX485? Der MAX485V ist eine 5-V-Version, und die minimale Eingangsspannung HI des Chips beträgt 2 V. es würde also mit 3,3 V Pegel des PIC funktionieren. aber ich weiß nicht, ob der RX (der wegen der MAX-Versorgung 5 V beträgt)
Die „absoluten Höchstwerte“ eines beliebigen Parameters in einem IC-Datenblatt sind keine Betriebsspezifikation ! Lesen Sie den Textabschnitt direkt neben diesen Bewertungen und Sie werden feststellen: „Dies ist nur eine Belastungsbewertung; ein funktionaler Betrieb des Geräts unter diesen oder anderen Bedingungen, die über den im Betriebsabschnitt dieser Spezifikation angegebenen liegen, ist nicht impliziert.“ Was diese Bewertungen Ihnen sagen, ist, dass der IC wahrscheinlich nicht sterben und seine ganze Magie entweichen lässt, wenn er diesen Bedingungen ausgesetzt ist - nicht, dass er tatsächlich funktionieren wird.
Es sieht so aus, als ob der PIC Spannungen über VDD nicht toleriert. Also – nein.

Antworten (1)

Es hört sich nach einem Gleichtaktspannungsproblem an, es sei denn, bei der Terminierung ist etwas schief gelaufen.
Verdrahten Sie die Erdung der verbundenen Knoten und versuchen Sie es dann ohne 120R und 150R in einem Abstand von weniger als 1 m.