Forum: Mikrocontroller und Digitale Elektronik PIC16LF1509 undefined identifier error


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Seto (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
ich bin Anfänger bei der Microcontroller Programmierung. Ich habe schon 
ein wenig mit einem Baseline Chip programmiert (PIC12F508). Jetzt wage 
ich mich an die Midrange Klasse ran. Um eine LED zum leuchten zu bringen 
habe ich ein C-Programm erstellt.
1
#pragma config FOSC = ECM      // Oscillator Selection bits (internal RC oscillator)
2
#pragma config WDTE = OFF        // Watchdog Timer Enable bit (WDT disabled)
3
#pragma config CP = OFF         // Code Protection bit (Code protection off)
4
#pragma config MCLRE = ON       // GP3/MCLR Pin Function Select bit (GP3/MCLR pin function is MCLR)
5
#pragma config BOREN = OFF      // Brown-out off
6
#pragma config PWRTE = OFF      // Power-up Timer off
7
#include <xc.h>
8
9
/***** CONFIGURATION *****/
10
// ext reset, no code protect, no brownout detect, no watchdog,
11
// power-up timer enabled, int RC clock
12
//__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & WDTE_OFF & 
13
//         PWRTE_OFF & FOSC_INTRCIO);
14
15
16
/***** MAIN PROGRAM *****/
17
void main()
18
{
19
    //*** Initialisation  
20
    
21
    // configure port  
22
    TRISIO = 0;       // configure GP1 (only) as an output
23
    GPIObits.GP1 = 1;       // set GP1 high
24
25
26
    //*** Main loop
27
    for (;;)
28
    {                       // loop forever
29
        ;
30
    }
31
}
Dabei bekomme ich folgende Fehlermeldung und ich weiß nicht warum.

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/Users/Max/MIDRANGE.X'
make -f nbproject/Makefile-default.mk 
dist/default/production/MIDRANGE.X.production.hex
make[2]: Entering directory 'C:/Users/Max/MIDRANGE.X'
"C:\Program Files (x86)\Microchip\xc8\v1.45\bin\xc8.exe" --pass1 
--chip=16LF1509 -Q -G --double=24 --float=24 
--opt=+asm,+asmfile,-speed,+space,-debug,-local --addrqual=ignore 
--mode=free -P -N255 --warn=-3 --asmlist -DXPRJ_default=default 
--summary=default,-psect,-class,+mem,-hex,-file 
--output=default,-inhx032 
--runtime=default,+clear,+init,-keep,-no_startup,-osccal,-resetbits,-dow 
nload,-stackcall,+clib  --output=-mcof,+elf:multilocs 
--stack=compiled:auto:auto "--errformat=%f:%l: error: (%n) %s" 
"--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: 
(%n) %s" -obuild/default/production/Main.p1 Main.c
Main.c:39: error: (0) Unknown macro (CPD_OFF) used in __CONFIG()
Main.c:39: error: (0) Unknown macro (FOSC_INTRCIO) used in __CONFIG()
Main.c:49: error: (192) undefined identifier "TRISIO"
Main.c:50: error: (192) undefined identifier "GPIObits"
Main.c:50: error: (196) struct/union required
(908) exit status = 1
nbproject/Makefile-default.mk:106: recipe for target 
'build/default/production/Main.p1' failed
make[2]: Leaving directory 'C:/Users/Max/MIDRANGE.X'
nbproject/Makefile-default.mk:90: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/Max/MIDRANGE.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
make[2]: *** [build/default/production/Main.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2

BUILD FAILED (exit value 2, total time: 556ms)

Ich benutzte die MLAB X IDE v. 4.05 und den XC8 v. 1.45 Compiler.
Kann mir jemand einen Hinweis geben, wie ich die Fehler beheben kann.

Viele Grüße

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Ich würde jetzt mal vermuten, es gibt bei dem pic16... weder ein 
Register TRISIO, noch ein GPIO...

<edit>
Versuche es mal mit TRISA  TRISC und LATA  LATC. Guckst du im 
Datasheet ...

: Bearbeitet durch User
von --- (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> #include <xc.h>
Sowas gehoert nach gaaaanz oben.

Beratungsmuster:
1
#pragma config FOSC=INTOSC, CLKOUTEN=OFF, WDTE=OFF, PWRTE=OFF, BOREN=OFF, IESO=OFF, FCMEN=OFF
2
#pragma config LVP=OFF

Wenn du schon Zeug irgendwo zusammenkopierst ohne das
Datenblatt/Compilerhandbuch zu lesen, wirst du kaum in
der Lage sein, mal erfolgreich selber etwas zu Ende zu
bringen.

Die passenden Portnamen/bits such mal selber...

von Toxic (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Seto schrieb:
> Hallo Leute,
> ich bin Anfänger bei der Microcontroller Programmierung.

Wenn Englisch fuer dich kein Problem ist:
Microchip hat auf YouTube einiges zu bieten z.B. dieses hier:

https://www.youtube.com/watch?v=33kgfbL3Sr0

Sehenswert fuer jeden Pic-Anfaenger !

von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
Toxic schrieb:
> Sehenswert fuer jeden Pic-Anfaenger !

Oh ja ;-) habe ich schon mal angeschaut, aber wieder vergessen. Muss ich 
unbedingt in meine Link Liste aufnehmen!

@Seto
Wenn du von den netten Hinweisen hier noch nicht abgeschreckt bist, dann 
beiß dich durch, akzeptiere, dass jeder Controller sein eigenes 
Datasheet hat, welches gelesen werden muss. Dann fragst du am besten so, 
dass man erkennen kann, dass du schon versucht hast das Datasheet zu 
Rate zu ziehen ;-)

Das mit den Config bits ist auch nicht mehr ganz so sperrig, wenn man 
die IDE richtig nutzt.
http://microchipdeveloper.com/mplabx:view-and-set-configuration-bits
Datasheet muss man natürlich trotzdem lesen....

: Bearbeitet durch User
von Volker S. (vloki)


Bewertung
0 lesenswert
nicht lesenswert
BTW: Beim Posten von Code und Fehlermeldungen, sollten diese auch 
zusammen gehören. (Config...)

von Seto (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Danke für die vielen Hinweise. Den Code habe ich aus einem Tutorial, ist 
allerdings für einen anderen PIC.  Auf die verschiedenen TRIS Register 
bin ich gestern auch noch gestossen ;)
Werde mir die Tutorials nochmal anschauen :D

Viele Grüsse

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.