..\main.c (32) : Warning[Pe161]: unrecognized #pragma

Gast #2639827
Lesenswert?

Hallo.

Ich habe zu Testzwecken das PIC18Fxxx Lernbeispiel mit der blinkenden 
LED ausprobiert. ( 
http://www.sprut.de/electronic/pic/8bit/18f/programm/blinkled_c_242/blink_c_242.htm 
)
Ich benutze IAR Embedded Workbench und den PIC18F458.

Leider kommt mir bei jedem #pragma eine Warnung. Woran kann das liegen, 
bzw kann ich diese Warnungen einfach ignorieren.
In Google konnte ich nichts darüber finden.

Momentan möchte ich einfach nur, dass die LED an RC0 leuchtet.

Code:
1
/** I N C L U D E S **********************************************************/
2
#include <io18F458.h>
3
//#include <Inpic18.h>
4

5

6
/** Configuration ********************************************************/
7
#pragma config OSC = HS   //CPU=20 MHz
8
#pragma config PWRT = ON
9
#pragma config BOR = OFF
10
#pragma config WDT = OFF  //Watchdog Timer
11
#pragma config LVP = OFF  //Low Voltage ICSP
12

13
 
14
/** D E C L A R A T I O N S **************************************************/
15
#pragma code
16

17

18
/** M A I N  ************************************************************/
19
void main(void)
20
{ 
21

22
  LATC = 0x00;    //init
23
  TRISC = 0x00;   //output
24

25

26
  while(1)
27
  {
28
    LATC = 0x01;
29
  }//end while 
30

31

32
}//end main

Warnung:
C:\Users\...\main.c (32) : Warning[Pe161]: unrecognized #pragma


Was mache ich falsch?

lg
Moderator Persönliche Seite #2639876
Lesenswert?

Ben schrieb:
> Leider kommt mir bei jedem #pragma eine Warnung. Woran kann das liegen,

Daran, dass Pragmas compilerabhängig sind, und der Code ganz offen-
sichtlich nicht für deinen Compiler geschrieben worden ist.

Wenn man sowas ordentlich macht, abstrahiert man die Dinge, die man
mittels Pragmas oder anderen compilerabhängigen Konstrukten lösen
muss, separat in einem Headerfile und benutzt dann in der eigentlichen
Implementierung nur noch die Abstraktion.  Seit C99 geht das zum Glück
nun auch bei Pragmas, da man diese alternativ zu #pragma auch als
_Pragma() schreiben kann.  (Wen's interessiert, wie man sowas macht,
der kann sich das im Atmel-MAC-Paket für die IEEE-802.15.4-Transceiver
ansehen, dort sind solche Sachen für GCC und IAR abstrahiert worden.)

> bzw kann ich diese Warnungen einfach ignorieren.

Möglich, vielleicht auch nicht.  Du müsstest dir ansehen, was das
entsprechende Pragma für den Compiler tut, für den es geschrieben
worden ist, und danach entscheiden, ob und wie du die vergleichbare
Aktion bei IAR ausdrückst.

Meine Schätzung: #pragma code kannst du ignorieren, und die Fuses musst
du dir auf andere Weise einstellen beim Programmieren.  Was sie mit
"Low Voltage ICSP" meinen, ist mir aber komplett unklar.

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