Forum: Mikrocontroller und Digitale Elektronik PIC24F16KM202 RA4 und RB4 nicht als Ausgang nutzbar


von Silvio G. (technofreak)


Angehängte Dateien:

Lesenswert?

Hallo,

ich sitze schon eine ganze Weile an einem Problem. Ich nutze den 
PIC24F16KM202 im SPDIP-28 Gehäuse 
(https://ww1.microchip.com/downloads/en/DeviceDoc/PIC24FV16KM204-Family-Data-Sheet-DS30003030C.pdf) 
und wollte an den Anschlüssen RA4 und RB4 zwei Relais betreiben. Diese 
ließen sich aber nicht schalten. Daher habe ich eine kleine 
Testschaltung zusammen gebaut (neuer PIC) und daran getestet. Auch dort 
ließen sich die LED nicht einschalten.

Das Programm liegt in der ZIP-Datei und ist aus MPLAB X. Der Code selbst 
ist auch noch extra mit bei.

Die Pins sind auch für den Secondary Oscillator, der ist aber 
deaktiviert, genauso wie die Zuordnung zum UART2. Damit sollten die Pin 
als normale IO nutzbar sein. Pull-Up, Pull-Down, Open-Drain und Analoge 
Funktion sind auch deaktiviert. Der PIC läuft mit dem intern Takt auf 8 
MHz an den anderen Pins funktionieren die LED.

Übersehe ich da noch irgendeine Funktion die mir die Pins blockieren?


Ich hoffe ihr habt noch eine Idee sonst muss ich die Leiterplatte 
ändern, diese Arbeit würde ich mir gerne ersparen.


Silvio

von Franko P. (sgssn)


Lesenswert?

Servus
hast du schon al mit dem oszi gemessen, ob die PINs auf high gehen?
Es ist dir schon klar, dass wenn der uC nur mit 3,3 Volt läuft, dass 
dann da auch nicht mehr als 3,3 Volt rauskommen. Zieh mal die 
Durchlassspanung der LEDs an und bezieh den Widerstand mit ein, dann 
siehst du was da an Strom übrigbleibt.
(sagen wir mal 1,8 Volt für die Led, 3.3-1.8 = 1.5; 1.5/680 = 2.2mA), 
also 68 Ohm wären besser als 680.

Gruß
Gerhard

: Bearbeitet durch User
von Silvio G. (technofreak)


Lesenswert?

Hallo,

die Sache mit den 3,3V und dem geringen LED-Strom sind mir schon 
bewusst. An den anderen Pins leuchtet die LED ja auch gut sichtbar.


Silvio

von Franko P. (sgssn)


Lesenswert?

Und ohne die Last/LED lassen sich die PINs auch nicht auf high bewegen? 
Also mit Oszi oder Messgerät geprüft?

Gruß

von Franko P. (sgssn)


Lesenswert?

Und lies mal da:

https://www.microchip.com/forums/m906778.aspx


Hab jetzt nicht im Datenblatt nachgelesen bs bei deinem auch so ist.

von Silvio G. (technofreak)


Lesenswert?

Nein auch mit dem DMM in der Testschaltung keine Spannung messbar. In 
der originalen Schaltung gestern auch mit dem Oszi getestet.

Laut Datenblatt sind RA4 und RB4 I/O mit Schmitt-Trigger. Auch die 
Register LAT, PORT, ODC und TRIS sind für Bit 4 jeweils in der Tabelle 
zu finden.

Ich denke da blockiert noch irgendeine Peripherie die Pins.


Silvio

: Bearbeitet durch User
von Franko P. (sgssn)


Lesenswert?

Funktionen
SOSCI/AN15/U2RTS/U2BCLK/CN1/RB4
SOSCO/SCLKI/AN16/PWRLCLK/U2CTS/CN0/RA4

Wenn dann müsste das da ja irgendwo dabei sein.
Also Oszillator, UART?

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

#pragma config SOSCSRC = ANA    //SOSC Source Type->Analog Mode for use 
with crystal

Das ist ganz sicher falsch. Damit werden die beiden Pins als 
Quarzoszillator konfiguriert.

fchk

von Silvio G. (technofreak)


Lesenswert?

Du gehst vom falschen Gehäuse aus, ich nutze den 28-poligen SPDIP. Dort 
sind es die Pins

11 SOSCI/AN15/U2RTS/U2BCLK/CN1/RB4
12 SOSCO/SCLKI/AN16/PWRLCLK/U2CTS/CN0/RA4

Secondary Oscillator sollte deaktiviert sein
  //COSC -> Read only    0b 000            ;
  //NOSC -> FRC      0b     000        ;
  //CLKLOCK -> disabled    0b        0       ;
  //LOCK -> Read only    0b          0     ;
  //CF -> Read only    0b            0   ;
  //SOSCDRV -> Config Bit    0b             0  ;
  //SOSCEN -> disabled    0b              0 ;
  //OSWEN -> Switch complete  0b               0;
  //Resultat      0b0000000000000000;
    __builtin_write_OSCCONH((uint8_t) (0x00));
    __builtin_write_OSCCONL((uint8_t) (0x00));

Analog-Funktion ist deanktiviert
    TRISA = 0x0000;        //Alle Pins auf Ausgang
    TRISB = 0x0000;

UART2 ist deaktiviert
  U2MODEbits.UARTEN = 0;    //UART2 disabled
  U2MODEbits.UEN1 = 0;    //UART2-Pins nur RX und TX am UART, CTS, RTS 
und BCLK als IO
  U2MODEbits.UEN0 = 0;
  U2STAbits.UTXEN = 0;    //Transmit disabled

RTCC habe ich gerade noch hinzugefügt, hift auch nicht
  RCFGCALbits.RTCEN = 0;    //RTCC disabled
  RCFGCALbits.RTCOE = 0;    //RTCC Out disabled

Silvio

von Silvio G. (technofreak)


Lesenswert?

Frank K. schrieb:
> #pragma config SOSCSRC = ANA    //SOSC Source Type->Analog Mode for use
> with crystal
>
> Das ist ganz sicher falsch. Damit werden die beiden Pins als
> Quarzoszillator konfiguriert.
>
> fchk

Das war der entscheidene Hinweis. Aufgrund der Beschreibung im Kommentar 
der Funktion

#pragma config SOSCSRC = DIG            // SOSC Source Type (Digital 
Mode for use with external source)

bin ich davon ausgegangen dass ein Deaktivieren des Secondary Oscillator 
die Pins komplett vom Oszillator trennt und ich mit dieser Funktion nur 
zwischen analogem (für Quarz) und digitalem (für externen Clock) Eingang 
umschalte.

Dazu ist leider im Datenblatt des µC als auch im zusätzlichen Datenblatt 
über den Oszillator für die ganze Familie nichts zu finden.

Trotzdem Vielen Dank an alle die geholfen haben.


Silvio

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.