Forum: Mikrocontroller und Digitale Elektronik PIC32MX: Taster kann nicht eingelesen werden


von Dirk F (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
habe beim PIC32MX795F512L an Port RG12 einen Taster mit 10 K Pull up 
angeschlossen.
Als Soft gibt es den Bootloader und ein Anwenderprogramm.
Im Bootloader klappt das einlesen des Taster perfekt.
Nur im Anwenderprogramm funktioniert es einfach nicht......

Jetzt habe ich festgestellt, dass im Bootloader modus bei nicht 
gedrückten Taster 3.3 V am Eingang anliegen.

Allerdings im Anwenderprogramm liegen immer 0 V an !
Hmm, was kann dazu führen, dass die Spannung verschwindet ?
Eigentlich nur, dass der Port aus Ausgang geschaltet wird und auf Low 
getrieben wird...

Deshalb habe ich kurz vor der Portabfrage den Port als Eingang 
konfiguriert.

          TRISGbits.TRISG12 = 1;   // Taster
          LED = PORTGbits.RG12;

Aber, es klappt trotzdem nicht.

Gibt es besondere Funktionen an RG12, die die Port Funktion 
überschreiben können ?

JTAG ist ebenfalls deaktiviert:
DDPCONbits.JTAGEN = 0; // Disable JTAG port so we get our I/O pins back

Hinweis: Verwende im Anwenderprogramm zusätzlich den TCP/IP Stack und 
USB Stack von Microchip....

Gruß Dirk

von Frank K. (fchk)


Lesenswert?

Dirk F schrieb:

> Gibt es besondere Funktionen an RG12, die die Port Funktion
> überschreiben können ?

RealTime Trace
kann man auch abschalten
DDPCONbits.TROEN = 0;

> JTAG ist ebenfalls deaktiviert:
> DDPCONbits.JTAGEN = 0; // Disable JTAG port so we get our I/O pins back

keine Ahnung, ob irgendwer das einschaltet. Vielleicht ist irgendwo noch 
Debugcode über?

fchk

von Dirk F (Gast)


Lesenswert?

Hallo Frank,
danke für den Hinweis.
Habe den Code hinzugefügt:

    DDPCONbits.TROEN = 0;                       // Disable TRACE port
    TRISGbits.TRISG12 = 1;   // Taster
    LED = PORTGbits.RG12;

Geht leider immer noch nicht ???
Sehr seltsam, ich versteh die Welt nicht mehr....

von schnuremaus (Gast)


Lesenswert?

hei,

du nutzt gleichzeitig G12 als Input für den Taster und als "Output" für 
die LED

versuche es mal für die LED mit

TRISGbits.TRISG xy  = 0;

LED = LATGbits.LATG xy;

schönen Tag

von DirkF (Gast)


Lesenswert?

Hallo Gast,
ne, die LED hängt an einem aneren PIN.

Seltsam ist, nachdem ich den Trace abgeschaltet habe, hat es einmal 
funktioniert, 20 mal aber wieder nicht....

von schnuremaus (Gast)


Lesenswert?

hei,

@DirkF

gemäß deinem Code Beispiel hast du aber Taster sowie LED am gleichen 
Pin.

" G12 "

Geh deoch mal das ganze per MPLAB Model Sim mit dem Debug durch.

schönen Abend

von DirkF (Gast)


Lesenswert?

Hallo Gast,
in meinem Code siehst Du doch gar nicht die Adresse der LED.
Die LED ist ein an anderer Stelle definiert:
#define LED       LATEbits.LATE4

von Dirk F (Gast)


Lesenswert?

Hallo,
Problem ist gelöst:
Hatte eine Lötbrücke vom SPI3 Serial Data Out zum Taster.....
Nachdem dann der SPI3 Port initialisiert wurde, wurde die Taster 
Spannung auf Null gezogen....

Puhh, echt lange an dem Fehler gesucht....

Gruß Dirk

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.