PIC mit C Programmieren LED Blinky

OP #2695254
Lesenswert?

Hallo Leute,

ich habe folgendes Problem.

ich arbeite mit dem mplabx und dem c18 compiler.

mit dem pic18lf45k22 sollen am ausgang (RD3, RD2, RD1, RD0, RC4, RC3,
RC2, RC1,RE0, RA5, RA4, RA3, RA2, RA1) 12 led´s zum blinken gebracht
werden.
Hierzu habe ich einen C code geschrieben. Ich lasse das debugger laufen
und krige die folgenden 4 error angezeigt!

1.configuration setting 'PWRT' not recognized
2.configuration setting 'BOR' not recognized
3.configuration setting 'WDT' not recognized
4.syntax error ->  TRISA = 0b.1100.0001;


Wo könnte das Problem liegen? Was ist bei dem Code zur korrigieren?! Ich
Programmiere zum ersten mal einen µC. Für eure hilfen bin ich schonmal
im voraus sehr dankbar!

Hier das C Code;
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <p18cxxx.h>
4
#include <delays.h>
5

6
/*Configuration*/
7

8
#pragma config FOSC = XT //CPU = 4MHz
9
#pragma config PWRT = ON //Power Up Timer
10
#pragma config BOR = OFF //Brown of Reset Voltage
11
#pragma config WDT = OFF // Watchdog Timer
12
#pragma config LVP = OFF // Low Voltage ICSP
13

14

15
/*Decleration*/
16
#pragma code
17
void main(void)
18
{
19

20
    LATA = 0x00;
21
    LATC = 0x00;
22
    LATD = 0x00;
23
    LATE = 0x00;
24

25
    TRISA = 0b.1100.0001; // EIN und AUSGÄNGE Definiert 0xA1
26
    TRISB = 0b.1111.1110; // EIN und AUSGÄNGE Definiert 0xFE
27
    TRISC = 0b.1110.0001; // EIN und AUSGÄNGE Definiert 0xE1
28
    TRISD = 0b.1111.0000; // EIN und AUSGÄNGE Definiert 0xF0
29
    TRISE = 0b.0000.1110; // EIN und AUSGÄNGE Definiert 0x0E
30

31
    while(1)
32
    {
33
        LATA = 1;
34
        LATC = 1;
35
        LATD = 1;
36
        LATE = 1;
37
        Delay10KTCYx(100); // Warteschleife
38
        LATA = 0;
39
        LATC = 0;
40
        LATD = 0;
41
        LATE = 0;
42
        Delay10KTCYx(100); // Warteschleife
43
    }
44

45

46

47
}
OP #2695279
Lesenswert?

hallo leute, ich habe das mit den binärzahlen ins hex umgeändert..jetzt 
zeigt es den fehler unter punkt 4 nicht mehr an

0b.1100.0001 ->  0xA1

ich habs zwar nicht probiert, aber gehe mal davon aus dass es auch 
anstatt
0b.1100.0001 -> 0b1100.0001 funktionieren würde..

vielan dank an euch beiden..

jedoch sind die ersten 3 fehler immer noch da... :(
Gast #2695294
Lesenswert?

Hallo

Bei den Fehlermeldungen scheint es doch um die Konfiguration zu gehen.
Gibt es PWRT, BOR, WDT ueberhaupt (Schreibfehler)?

Ist die Syntax richtig?
Fehlt eventuell eine include-Datei?


Gruß
Joachim
#2695452
Lesenswert?

el pistolero schrieb:
> hallo,
>
> all die parameter bzw einstellungen gibt es(PWRT, BOR, WDT). Ich meine
> wenn ich #include <p18cxxx.h> einbinde sollten die parameter erkannt
> werden! Also beim FOSC meckert es nicht..

'sollten' ist zu wenig.

Auch so ein Header File ist nichts anderes als ein Textfile, in welches 
man mit dem Editor reinsehen kann und in dem man suchen kann, ob es da 
ein FOSC (das muss ja da irgendwo drin stehen, denn der wird ja 
gefunden) bzw. ein PWRT, BOR oder WDT gibt. Bzw. ob es etwas gibt, was 
so ähnlich heißt.
Gast #2695464
Lesenswert?

üblicherweise "0b00000000" oder eben "0x00" ;)

probier doch die config nicht im code vorzunehmen sondern erstmal über 
die configurationbits in mplab. da würde ich als anfänger ein 
beispielprogramm nehmen und die konfigurationen erstmal übernehmen.
OP #2695611
Lesenswert?

hallo leute,

danke nochmals an alle für die vielen hinweise.

ich habe anstelle PWRT, BOR, WDT, -> PWRTEN, BOREN, WDTEN ; 
eingegeben..der debugger hat endlich keinen fehler angezeigt. :) ich 
muss das ganze nochmal auf den mikrocontoller übertragen..ich bin echt 
gespannt..am freitag wird die platine gelötet..ich werde die ergebnisse 
nochmal bescheid geben..ich hoffe das es dann auch funktionieren wird :)

übrigens habe ich die untere binärzahl korrogiert :)

0xA1 = 1010.0001 //  0xC1 = 1100.0001
#2695766
Lesenswert?

el pistolero schrieb:
> ich habe anstelle PWRT, BOR, WDT, -> PWRTEN, BOREN, WDTEN ;
> eingegeben..der debugger hat endlich keinen fehler angezeigt. :)

Das ist doch schonmal gut. Die Bezeichnung im Programm bzw Header ist 
ansich immer gleich der Bezeichnung aus dem Datenblatt. WDT ist zwar die 
Abkürzung für Watchdog-Timer, jedoch heißt das Bit in der Config (im 
Datenblatt abzulesen) WDTEN -> WatchDog-Timer ENable bit.

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