Forum: Mikrocontroller und Digitale Elektronik PIC32MZ2048EFH100, die LED-s leuchten nicht gleich hell


von Jonn S. (boishi)


Lesenswert?

Hallo,

ich bin ziemlich neu in diesem Gebiet (Mikrocontroller programmieren), 
mache grad meine erste Schritte und bin schon auf ein Problem gestoßen.

Es geht um folgendes: Ich hab ein Development Board Explorer 16 mit 
einem Eval Board PIC32MZ EF PIM bekommen. Als Programmer benutze ich 
PICKit3. Als Einstieg wollte ich ein ganz einfaches Programm zum Laufen 
kriegen und zwar einfach die 8 LED-s von Explorer 16 (D3 - D10) zum 
Leuchten bringen.
Nach dem ich es programmiert habe, leuchten zwar alle LED-s, aber mit 
verschiedener Stärke. Die LED-s D6, D8 und D9 leuchten ziemlich stark 
und die restlichen LED-s leuchten wirklich sehr schwach.

Hat jemand eine Idee, woran das liegen könnte?
Wäre sehr dankbar, wenn jemand mir helfen könnte!

Grüße
Jonn

von Stampede (Gast)


Lesenswert?

Hast du die LEDs versehentlich mit einem PWM Signal moduliert?
Und wie immer: Ohne Code ist alles nur geraten!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jonn S. schrieb:
>  einfach die 8 LED-s von Explorer 16 (D3 - D10) zum Leuchten bringen.
> Die LED-s D6, D8 und D9 leuchten ziemlich stark und die restlichen LED-s
> leuchten wirklich sehr schwach.
Wie hast du die Pintreiber dieser Pins konfiguriert? Sind da evtl. 
alternative Pinfunktionen eingeschaltet oder nur ein Pullup 
konfiguriert?

Soll heißen: welches Programm bringt diesen Effekt?

: Bearbeitet durch Moderator
von baer (Gast)


Lesenswert?

das kann einige Gründe haben. Alle Bauteile (besonders Widerstände und 
die LEDs selbst) haben natürlich Toleranzen...

Wenn es aber größere Abweichungen sind, kann man eher davon ausgehen, 
dass evtl. Lötstellen "kalt" sind (also ein hoher Übergangswiderstand 
zwischen Strom und LED)!

Ich würde empfehlen erstmal "nachzulöten"

Bei einer früheren Firma haben wir obendrein die LEDs alle nach 
kalibriert... Hierzu müsste man mit einem Fotosensor einfach die 
Lichtstärke aus Entfernung X messen und dann einfach die "gewünschte" 
Stärke "nachregeln" <- hier kann man meist nur nach "unten" justieren...

von Jonn S. (boishi)


Lesenswert?

Nicht das ich wüsste... :/

Da ist meine Code:
1
#include<p32xxxx.h>
2
#include <stddef.h>                     // Defines NULL
3
#include <stdbool.h>                    // Defines true
4
#include <stdlib.h>                     // Defines EXIT_FAILURE
5
#include "system/common/sys_module.h"   // SYS function prototypes
6
#define _XTAL_FREQ 4000000   
7
#include <xc.h> 
8
9
10
11
// *****************************************************************************
12
// *****************************************************************************
13
// Section: Main Entry Point
14
// *****************************************************************************
15
// *****************************************************************************
16
17
void main ( void )
18
{
19
     //OSCCON = 0b100;
20
     TRISAbits.TRISA0  = 0;     //LED3
21
     TRISAbits.TRISA1  = 0;     //LED4
22
     TRISAbits.TRISA2  = 0;     //LED5
23
     TRISAbits.TRISA3  = 0;     //LED6
24
     TRISFbits.TRISF13 = 0;     //LED7
25
     TRISFbits.TRISF12 = 0;     //LED8
26
     TRISAbits.TRISA6  = 0;     //LED9
27
     TRISAbits.TRISA7  = 0;     //LED10
28
         
29
         
30
     //TRISDbits.TRISD13 = 1;      //S6
31
     //TRISFbits.TRISF8  = 1;      //S4
32
33
    while (1)
34
    {
35
     PORTAbits.RA0 = 1;
36
     PORTAbits.RA0 = 1;
37
     PORTAbits.RA1 = 1;
38
     PORTAbits.RA2 = 1;
39
     PORTAbits.RA3 = 1;
40
     PORTFbits.RF13 = 1;
41
     PORTFbits.RF12 = 1;
42
     PORTAbits.RA6 = 1;
43
    }
44
}

: Bearbeitet durch Moderator
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Jonn S. schrieb:
> Da ist meine Code:
Das steht über jeder Eingabebox in der Bedienungsanleitung:
1
Antwort schreiben
2
Wichtige Regeln - erst lesen, dann posten!
3
4
    Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
5
6
Formatierung (mehr Informationen...)
7
8
    [c]C-Code[/c]


> PORTAbits.RA0 = 1;
> PORTAbits.RA0 = 1;
Warum gleich 2 mal?

: Bearbeitet durch Moderator
von Jonn S. (boishi)


Angehängte Dateien:

Lesenswert?

Lothar M. schrieb:

> Wie hast du die Pintreiber dieser Pins konfiguriert? Sind da evtl.
> alternative Pinfunktionen eingeschaltet oder nur ein Pullup
> konfiguriert?

Ich habe die Konfiguration mit MPLAB Harmony gemacht und die Pinbelegung 
auf Pin Diagramm sieht so aus (siehe Anhang).

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Jonn S. schrieb:
> Ich habe die Konfiguration mit MPLAB Harmony gemacht und die Pinbelegung
> auf Pin Diagramm sieht so aus (siehe Anhang).
Und passt das auch zur Hardware?

von Jonn S. (boishi)


Lesenswert?

Lothar M. schrieb:

>
>> PORTAbits.RA0 = 1;
>> PORTAbits.RA0 = 1;
> Warum gleich 2 mal?

Das war aus Versehen.

von Jonn S. (boishi)


Angehängte Dateien:

Lesenswert?

Lothar M. schrieb:
> Jonn S. schrieb:
>> Ich habe die Konfiguration mit MPLAB Harmony gemacht und die Pinbelegung
>> auf Pin Diagramm sieht so aus (siehe Anhang).
> Und passt das auch zur Hardware?


Nicht ganz, aber das mit dieser Tabelle habe ich dieses Problem 
erledigt. (zumindest dachte ich :/ )

von Jonn S. (boishi)


Lesenswert?

baer schrieb:
> das kann einige Gründe haben. Alle Bauteile (besonders Widerstände und
> die LEDs selbst) haben natürlich Toleranzen...
>
> Wenn es aber größere Abweichungen sind, kann man eher davon ausgehen,
> dass evtl. Lötstellen "kalt" sind (also ein hoher Übergangswiderstand
> zwischen Strom und LED)!
>
> Ich würde empfehlen erstmal "nachzulöten"


Leider es wäre unmöglich diese LED-s mit meinem Lötkolben nachzulöten..

von X4U (Gast)


Lesenswert?

< Leider es wäre unmöglich diese LED-s mit meinem Lötkolben nachzulöten.

Wozu auch?

Besser 5V oder 3V3 oder was aus den Ports so rauskommt auf die Anode 
legen. Gute idee wäre das PIM vorher abzuziehen (und an den Pins die 
Spannung anlegen). Wenn die dann alle gleich hell leuchten ist ein 
Fehler dort schon mal auszuschließen und man kann sich auf den PIC 
stürzen.

Vom Prinzip kommt man nicht darum herum bei jedem Pin jede Funktion zu 
prüfen. Macht Sie aus dem Port etwas anderes als eben einen Port?

Analoge Eingänge, analoge Ausgänge, Komparatoren, Interface (CAN, USB, 
SPI SCI PWM etc,pp.) haben in der Regel eine höhere Priorität.

Also in der Port Beschreibung alles komplett durchlesen und abschalten. 
Am besten noch ausdrucken und einzeln durchstreichen. Das ist am Anfang 
nervig, aber man gewöhnt sich dran.

Bei mir lagen Fehler wie der obige fast immer daran. Nur eine 
Ausnahme,LATx mit Portx verwechselt (LATchx = Ausgang, Portx = Eingang).

von Brutzelbrutzel (Gast)


Lesenswert?

baer schrieb:
> Ich würde empfehlen erstmal "nachzulöten"

Yo, dass ne gute Idee. Statt mal in den Code reinkucken, gleich mal auf 
dem Board rumbrutzeln.

Und blos kein Multimeter (bäh) oder gar Oszi (urks, so kompliziert!) 
nehmen, sondern gleich mal mit 450°C und viel Lötfett herumbrutzeln. 
Könnte ja ne kalte Lötstelle sein :-)

@TP:
Kuck mal, welche Peripherie auf diesen Pins drauf ist. Da müsste man mal 
schauen, was per Default auf Analog steht (ANSELx Register prüfen!), was 
per Default auf einem Peripheriebaustein wie JTAGE hängt usw usf.

von Jonn S. (boishi)


Lesenswert?

X4U schrieb:
> > Also in der Port Beschreibung alles komplett durchlesen und abschalten.
> Am besten noch ausdrucken und einzeln durchstreichen. Das ist am Anfang
> nervig, aber man gewöhnt sich dran.

Danke für deine hilfreiche Antwort. Tatsächlich waren auf den Portas 
noch andere Funktionen. Jetzt habe ich sie abgeschaltet und alles 
funktioniert wunderbar!

Danke nochmal für dein Tipp!! :)

von Jonn S. (boishi)


Lesenswert?

Brutzelbrutzel schrieb:
> baer schrieb:
>> Ich würde empfehlen erstmal "nachzulöten"
>
> Yo, dass ne gute Idee. Statt mal in den Code reinkucken, gleich mal auf
> dem Board rumbrutzeln.

Hab ich mir auch gedacht :D

> @TP:
> Kuck mal, welche Peripherie auf diesen Pins drauf ist. Da müsste man mal
> schauen, was per Default auf Analog steht (ANSELx Register prüfen!), was
> per Default auf einem Peripheriebaustein wie JTAGE hängt usw usf.

Danke dir!!
Hat sich schon erledigt!! :)

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.