PIC32MZ2048EFH100, die LED-s leuchten nicht gleich hell

OP #4669801
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
Moderator (Firma: Titel) Persönliche Seite #4669812
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?
Gast #4669814
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...
OP #4669820
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
}
Moderator (Firma: Titel) Persönliche Seite #4669825
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?
OP #4669856
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..
Gast #4670030
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).
Gast #4670275
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.
OP #4672256
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!! :)
OP #4672258
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!! :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren