Hallo ich bin gerade an meiner Bachelorarbeit dran und habe leider
Probleme mit meinem Programm. In der Firma wo ich schreibe kann mir
leider auch niemand helfen, da dieser PIC noch nicht vorher genutzt
wurde.
Ich benutze "MPLAB V IDE v2.25" und den "MPLAB ICD3" Programmer. Zum
compilieren benutze ich den "XC8 compiler".
Mein PIC ist auf dem "PIC18 Explorer Demo Board" aufgesteckt. Auf diesen
Board sind 8 LEDs die alle mit dem PORT D verbunden sind (RD0-RD7).
Vorab möchte ich sagen das ich die folgenden Programmteile mit dem
PIC18F87J11 und den PIC18F8722 getestet habe und es funktioniert alles
wunderbar. Den PIC18F46K80, welchen ich benutzen soll, habe ich auch
schon einmal ausgetauscht, so dass ein Hardwarefehler ausgeschlossen
werden kann.
Es stimmt irgendwas mit den Variablen nicht. Sobald ich zwei Variablen
Multipliziere oder dividire kommt als ergebnis eine NULL raus.
Nachfolgend habe ich fünf Beispiele aufgeschrieben die mich und meine
Kollegen sehr verwirren. ich bin mir aber ziemlich sicher, dass das
Problem 40cm vom Bildschirm sitzt ;) .
Nr. 1: (funktioniert)
1 | LATD=5; //LEDs zeigen binär 5 an
|
Nr. 2: (funktioniert nicht mit PIC18F46K80)
1 | int a=5;
|
2 | LATD=a; //LEDs zeigen mir binär 130 an
|
Nr. 3: (funktioniert)
1 | int a=5;
|
2 | if(a==5){LATD=5;} // LEDs zeigen mit binär 5 an
|
Nr. 4: (funktioniert nicht mit PIC18F46K80)
1 | int a,b=5,c=5;
|
2 | a=b*c;
|
3 | if(a==25){LATD=25} //LEDs bleiben ausgeschaltet
|
Nr. 5: (funktioniert nur mit PIC18F46K80)
1 | int a,b=5,c=5;
|
2 | a=b*c;
|
3 | if(a==0){LATD=25} //LEDs zeigen binär 25 an.
|
Meine Config-Bits habe ich wie folgt eingestellt:
1 | // CONFIG1L
|
2 | #pragma config RETEN = OFF // VREG Sleep Enable bit (Ultra low-power regulator is Disabled (Controlled by REGSLP bit))
|
3 | #pragma config INTOSCSEL = HIGH // LF-INTOSC Low-power Enable bit (LF-INTOSC in High-power mode during Sleep)
|
4 | #pragma config SOSCSEL = HIGH // SOSC Power Selection and mode Configuration bits (High Power SOSC circuit selected)
|
5 | #pragma config XINST = ON // Extended Instruction Set (Enabled)
|
6 |
|
7 | // CONFIG1H
|
8 | #pragma config FOSC = INTIO2 // Oscillator (Internal RC oscillator)
|
9 | #pragma config PLLCFG = OFF // PLL x4 Enable bit (Disabled)
|
10 | #pragma config FCMEN = OFF // Fail-Safe Clock Monitor (Disabled)
|
11 | #pragma config IESO = OFF // Internal External Oscillator Switch Over Mode (Disabled)
|
12 |
|
13 | // CONFIG2L
|
14 | #pragma config PWRTEN = OFF // Power Up Timer (Disabled)
|
15 | #pragma config BOREN = OFF // Brown Out Detect (Disabled in hardware, SBOREN disabled)
|
16 | #pragma config BORV = 3 // Brown-out Reset Voltage bits (1.8V)
|
17 | #pragma config BORPWR = ZPBORMV // BORMV Power level (ZPBORMV instead of BORMV is selected)
|
18 |
|
19 | // CONFIG2H
|
20 | #pragma config WDTEN = OFF // Watchdog Timer (WDT disabled in hardware; SWDTEN bit disabled)
|
21 | #pragma config WDTPS = 1048576 // Watchdog Postscaler (1:1048576)
|
22 |
|
23 | // CONFIG3H
|
24 | #pragma config CANMX = PORTB // ECAN Mux bit (ECAN TX and RX pins are located on RB2 and RB3, respectively)
|
25 | #pragma config MSSPMSK = MSK7 // MSSP address masking (7 Bit address masking mode)
|
26 | #pragma config MCLRE = ON // Master Clear Enable (MCLR Enabled, RE3 Disabled)
|
27 |
|
28 | // CONFIG4L
|
29 | #pragma config STVREN = ON // Stack Overflow Reset (Enabled)
|
30 | #pragma config BBSIZ = BB2K // Boot Block Size (2K word Boot Block size)
|
31 |
|
32 | // CONFIG5L
|
33 | #pragma config CP0 = OFF // Code Protect 00800-03FFF (Disabled)
|
34 | #pragma config CP1 = OFF // Code Protect 04000-07FFF (Disabled)
|
35 | #pragma config CP2 = OFF // Code Protect 08000-0BFFF (Disabled)
|
36 | #pragma config CP3 = OFF // Code Protect 0C000-0FFFF (Disabled)
|
37 |
|
38 | // CONFIG5H
|
39 | #pragma config CPB = OFF // Code Protect Boot (Disabled)
|
40 | #pragma config CPD = OFF // Data EE Read Protect (Disabled)
|
41 |
|
42 | // CONFIG6L
|
43 | #pragma config WRT0 = OFF // Table Write Protect 00800-03FFF (Disabled)
|
44 | #pragma config WRT1 = OFF // Table Write Protect 04000-07FFF (Disabled)
|
45 | #pragma config WRT2 = OFF // Table Write Protect 08000-0BFFF (Disabled)
|
46 | #pragma config WRT3 = OFF // Table Write Protect 0C000-0FFFF (Disabled)
|
47 |
|
48 | // CONFIG6H
|
49 | #pragma config WRTC = OFF // Config. Write Protect (Disabled)
|
50 | #pragma config WRTB = OFF // Table Write Protect Boot (Disabled)
|
51 | #pragma config WRTD = OFF // Data EE Write Protect (Disabled)
|
52 |
|
53 | // CONFIG7L
|
54 | #pragma config EBTR0 = OFF // Table Read Protect 00800-03FFF (Disabled)
|
55 | #pragma config EBTR1 = OFF // Table Read Protect 04000-07FFF (Disabled)
|
56 | #pragma config EBTR2 = OFF // Table Read Protect 08000-0BFFF (Disabled)
|
57 | #pragma config EBTR3 = OFF // Table Read Protect 0C000-0FFFF (Disabled)
|
58 |
|
59 | // CONFIG7H
|
60 | #pragma config EBTRB = OFF // Table Read Protect Boot (Disabled)
|
Ich hoffe das mir bald mal jemand helfen kann, da ich bei google leider
nichts zu meinem Problem finden kann.
Danke schonmal im Voraus :)
Grüße Dirk