|
|
View previous topic :: View next topic |
Author |
Message |
muralijelije
Joined: 03 Mar 2015 Posts: 5
|
Error#27 Expression must evaluate to a constant |
Posted: Wed Mar 04, 2015 12:56 am |
|
|
Hi,
Can anybody help me out, to resolve error "Error#27 Expression must evaluate to a constant" while compiling my project in MPLABX IDE v.2.26 with CCS compiler(Version 1.46). Most of the files are having similar problem, due to this I am unable to build my project.
Sample code:
Code: |
unsigned char FRAM_INIT_DATA[16] =
{ 0,
0x21, 0x49, 0x6E, 0x74, 0x65, 0x6C, 0x6C, // "!Intell"
0x69, 0x44, 0x61, 0x74, 0x61, 0x2E, 0x21, // "iData.!"
0
}; |
Here I am getting the error at first line itself.
Thanks in advance. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19545
|
|
Posted: Wed Mar 04, 2015 2:30 am |
|
|
Start at the beginning. Your compiler is not V1.46. V1 compilers data back something like 20 years, and would not work in any way with MPLABX.
Compiler version is either available through 'help', 'about', or is at the top of the .lst file.
However then your problem is not in the code posted.
CCS has a somewhat annoying habit, when you have certain types of syntax error, of 'keeping going', accepting later code, until suddenly the cumulative error, gets bad enough, that it cannot proceed any further. It then flags the error as happening at this point, when the real syntax error can be several (even hundreds!) of lines before.
You need to look at the lines in front of what you have posted. It'll be something silly like a missing closing brace, semi-colon etc., which means that the next few lines are being treated as if they are still part of an earlier statement.... |
|
|
muralijelije
Joined: 03 Mar 2015 Posts: 5
|
|
Posted: Wed Mar 04, 2015 3:59 am |
|
|
Code: | #ifndef mkm14_fram_H
#define mkm14_fram_H
/*////////////////////////////////////////////////////////////////////////////
//// Library for a Ramtron 25C160 ////
//// ////
//// init_ext_fram(); Call before the other functions are used ////
//// ////
//// write_fram_byte(a, d); Write the byte d to the start_addr a ////
//// ////
//// d = read_fram_byte(a); Read the byte d from the start_addr a ////
//// ////
//// b = read_fram_status(); Returns the fram status bits ////
//// ////
//// ////
//// Pin Layout ////
//// ------------------------------------------------- ////
//// | __ | ////
//// | 1: CS FRAM_CS | 8: VCC +5V | ////
//// | | ____ | ////
//// | 2: SO FRAM_SO | 7: HOLD +5V | ////
//// | __ | | ////
//// | 3: WP +5V | 6: SCK FRAM_CLK | ////
//// | | | ////
//// | 4: VSS GND | 5: SI FRAM_SI | ////
//// ------------------------------------------------- ////
//// ////
////////////////////////////////////////////////////////////////////////////*/
#define FRAM_SIZE 2048 // FM25C160 16kbit
// opcodes
#define FM_WREN 0x06 // Set write enable latch
#define FM_WRDI 0x04 // Explicit clear write enable latch
#define FM_RDSR 0x05 // Read status register
#define FM_WRSR 0x01 // Write status register
#define FM_READ 0x03 // Read memory data
#define FM_WRITE 0x02 // Write memory data
// Write protect mechanism using FRAM_WP relies on setting Block Protect bits first
// bit 3 2
// BP1, BP0 = 0,0 // unprotected
// BP1, BP0 = 0,1 // protect 0x600 to 0x7FF (quarter)
// BP1, BP0 = 1,0 // protect 0x400 to 0x7FF (half - Default)
// BP1, BP0 = 1,1 // protect 0x000 to 0x7FF (all)
#define WPEN_SET 0x80 // allows FRAM_WP to be effective
#define BP0_SET 0x04
#define BP1_SET 0x08
#define PROTECT_ECB 0x88 // WPEN_SET | BP1_SET (Half is protected)
#define PROTECT_ALL 0x8C // If saving calibration stuff in FRAM
#define FRAM_ECB_INIT_BGN 0x0400 // start of data to indicate not first turn-on
#define FRAM_ECTRL_SIZE 0x03B0 // 0x400->07AF
#define FRAM_INIT_DATA_SIZE 16 // allowed length of initialisation data
#define FRAM_ECB_INIT_CHKSM 0x04BB
This was the code exist before below one.(In .h file)
This is the code sample from .c file where I am getting the same error in .c file
#if defined(__PCM__)
#include <16F877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#elif defined(__PCB__)
#include <16C56.h>
#fuses HS,NOWDT,NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_A3, rcv=PIN_A2)
#elif defined(__PCH__)
#include <18F458.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#elif defined(__PCD__)
#include <30F2010.h>
#fuses HS, NOWDT, NOPROTECT
#use delay(clock=20000000)
#use rs232(baud=9600, UART1A)
#endif
//#include"prototypes.h" // ksrinivas
#include<stddef.h>
#include"mkm14_cnvrt.h" // ksrinivas
#include"mkm14_fram.h" // ksrinivas
#include"mkm14_crus.h" // ksrinivas
#include"mkm14_eprm.h" // ksrinivas
//#include<stddef.h> // for offsetof()
|
void energy_manager(void) -- here is the line whare I am getting the similar issue in .c file. Though there is no error it is reporting.
I have gone through the code as per your suggestion. But no luck.
Code: |
void energy_manager(void)
{
int8 i; //
static int8 energy_task_cntr;
energy_task_cntr= NEW_READING;
int16 chksum;
int16 fm_addr;
// ALL functions take approx 35mS
}
|
Can you please help me out |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19545
|
|
Posted: Wed Mar 04, 2015 4:55 am |
|
|
1) Learn to debug.
Start with just the simplest program. Get it to compile and work _first_.
I suspect you may have as one problem, MPLAB configured incorrectly, so it is trying to load the separate files.
2) Once you have a simple program working, add things one at a time. You should be able to add each individual include. If after the second a fault appears, then you have narrowed down where to look.
3) Once you have located where the problem appears, as a small compilable program, then you can post this. It is impossible to debug 'bits', and you are wasting our time, and yours by posting these.
4) You still have not told us the compiler version. |
|
|
muralijelije
Joined: 03 Mar 2015 Posts: 5
|
|
Posted: Wed Mar 04, 2015 5:27 am |
|
|
Thanks a lot for keeping me right direction.
I will try these steps first.
Following are the CCS compiler version details.
IDE 5.06
PCB,PCM,PCH and PCD vesrions are 5.043. |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|