Forum: Mikrocontroller und Digitale Elektronik ..\main.c (32) : Warning[Pe161]: unrecognized #pragma


von Ben (Gast)


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

von Ben (Gast)


Lesenswert?

ganz vergessen:
ich benutze MPLAB mit dem ICD3.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

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.