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
Hast du die LEDs versehentlich mit einem PWM Signal moduliert? Und wie immer: Ohne Code ist alles nur geraten!
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
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...
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
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
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).
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?
Lothar M. schrieb: > >> PORTAbits.RA0 = 1; >> PORTAbits.RA0 = 1; > Warum gleich 2 mal? Das war aus Versehen.
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 :/ )
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..
< 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).
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.
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!! :)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.