Forum: Mikrocontroller und Digitale Elektronik PIC mit C Programmieren LED Blinky


von el p. (elpistolero84)


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
}

von spontan (Gast)


Lesenswert?

>0b.1100.0001

Ist das in C18 die korrekte Scheibweise für Binärzahlen?

Oder doch vielleicht 0b.11000001 ?

von Anja (Gast)


Lesenswert?

spontan schrieb:
> Oder doch vielleicht 0b.11000001 ?

eher 0b11000001
wobei der Wert 0xA1 im Kommentar eher
0b10100001 wäre

Gruß Anja

von el p. (elpistolero84)


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... :(

von XXX (Gast)


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

von el p. (elpistolero84)


Lesenswert?

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..

von el p. (elpistolero84)


Lesenswert?

es soll auch ein linker skript benötigt..was ich nicht einbunden 
konnte..irgend etwas in dem Verzeichnis .../mcc18/lkr/..?? kann es damit 
was zu tun haben??

von Karl H. (kbuchegg)


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.

von Karl H. (kbuchegg)


Lesenswert?

el pistolero schrieb:
> es soll auch ein linker skript benötigt..was ich nicht einbunden
> konnte..irgend etwas in dem Verzeichnis .../mcc18/lkr/..?? kann es damit
> was zu tun haben??

Nein.
Der Linker ist an dieser Stelle noch gar nicht im Spiel.

von busche (Gast)


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.

von Michael S. (rbs_phoenix)


Lesenswert?

Versuch mal statt PWRT, BOR und WDT zu schreiben: PWRTEN, BOREN und 
WDTEN.


el pistolero schrieb:
> 0b.1100.0001 ->  0xA1

0xA1 bleibt aber leider 1010.0001, anders rum sind 1100.0001 0xC1.

von el p. (elpistolero84)


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

von Michael S. (rbs_phoenix)


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.

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.