View previous topic :: View next topic |
Author |
Message |
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
error compiling ccs code in mplab x ide |
Posted: Fri Apr 03, 2020 8:00 am |
|
|
Hello friends, best regards, good, I tell you I have a problem when compiling a ccs code in mplab x ide. I have installed the ccs plugin in mplab x ide as shown in the video developed by ccs, but when compiling the ccs code in mplab x ide generates a compilation error, I attach the corresponding image.
I share it on google drive.
https://drive.google.com/file/d/1mv66SgxVdmFL93YAkbs_4_3-T4nzyP7d/view?usp=sharing
I hope and can help me thanks |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Apr 03, 2020 8:14 am |
|
|
It 'looks' like you don't have the PIC processor type header as the FIRST line in your program....
Without seeing your program. that's my guess. |
|
|
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
|
Posted: Fri Apr 03, 2020 8:26 am |
|
|
This is my ccs code to make it compile in mplab x ide.
Code: |
#include <30F4013.h>
#Fuses NOWDT,XT,MCLR,NOPROTECT,NOWRT
#device adc=12
#use delay(clock=4000000)
#include <lcd.c>
#include <math.h>
#include <stdlib.h>
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_F5
#define LCD_DATA5 PIN_F4
#define LCD_DATA6 PIN_F1
#define LCD_DATA7 PIN_F0
float voltage;
float Lect_adc;
void main()
{
Lect_adc=0;
voltage=0;
lcd_init();
setup_adc_ports(sAN0|VREF_VREF);
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_2);
while(true)
{
set_adc_channel(0);
Lect_adc=read_adc();
delay_ms(20);
voltage=((20.0*Lect_adc)/4095);
lcd_putc("\f");
lcd_gotoxy(1,2);
printf(lcd_putc,"Voltage = %f",Voltage);
delay_ms(500);
}
}
|
Also this code with the ccs compiler does NOT generate any error and compiles without any problem and generates the hex file.
I am trying to compile it in Mplab X ide so that it generates the file with the elf extension. Reason the dspic 30f4013 in Proteus does not have its libraries, and the multi-sim simulator does have this dsPIC, and the multi-sim only accepts files with an elf extension.
The ccs plugin for Mplab X ide has worked for me a little, but now compiling this code is giving me an error.
I hope for your help again and thanks.
|
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9244 Location: Greensville,Ontario
|
|
Posted: Fri Apr 03, 2020 11:07 am |
|
|
re: Reason the dspic 30f4013 in Proteus does not have its libraries,
so you're using PROTEUS and NOT real hardware ? |
|
|
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
|
Posted: Fri Apr 03, 2020 11:15 am |
|
|
proteus does NOT have libraries for dspic 30f and pic 32,
I am NOT using Proteus since it does not have these libraries, I am using multisim 14.02 and I do not use real hardware because in my country Colombia is quarantined by the COVID-19 pandemic, also the electronic stores are closed.
watch the video of the ccs plugin in mplab x ide I send you the link
https://www.youtube.com/watch?v=uziNEmDdF3g
to see if you can help me thanks
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19544
|
|
Posted: Fri Apr 03, 2020 11:42 am |
|
|
In the IDE.
Project.
You have only this 'main' file in the section for 'source files'?.
It needs to be the only file here.
The other files can be in the 'header files' section, but must not be
in the source files section.
Otherwise the compiler will be asked to compile the other files
separately, which will not work. |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19544
|
|
Posted: Fri Apr 03, 2020 12:32 pm |
|
|
It's interesting.
The 'automatic inclusion', you seemed to see, I have never seen
happen. However, I always work from a new project, and just specify the
main file and headers myself.
The behaviour here is quite annoying. Like several other 'features'
of the Netbeans platform (it does a similar thing, automatically 'finding'
other compilers, which really costs a lot of time and speed).
This sort of 'feature', makes the platform very annoying at times.... |
|
|
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
|
Posted: Fri Apr 03, 2020 3:57 pm |
|
|
Friends, I have followed the instructions as indicated in the manual but it still generates a compilation error, it will be that someone will be able to connect back to my pc through teamviewer to see how to add the respective mplab directories with ccs and thus be able to learn. What do you say? |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Apr 03, 2020 7:33 pm |
|
|
I don't want to do teamviewer.
Post the complete error message you get in MPLAB X.
You only posted 7 lines in your Google Drive image.
I have the feeling that there are more lines than that.
-----------------------------
Regarding bugs in your program:
If you're changing the default pins used in lcd.c, you need to put the
#define statements above the #include line for the lcd.c file.
Here is the correct way to do it:
Code: |
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_F5
#define LCD_DATA5 PIN_F4
#define LCD_DATA6 PIN_F1
#define LCD_DATA7 PIN_F0
#include <lcd.c>
|
Now your LCD should work. |
|
|
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
|
Posted: Fri Apr 03, 2020 8:54 pm |
|
|
Hello friend, thank you for answering. Through this google drive link, you will find the program folder in mplab with ccs code. You will also find in jpg image the 8 errors that the mplab x ide finds.
I have also changed what you told me and follow the same errors.
Link of google drive:
https://drive.google.com/file/d/1wSZi0BoevzTdlMCfQ6Uu6Ma50MIV5AMp/view?usp=sharing
Code: |
#include <30F4013.h>
#Fuses NOWDT,XT,MCLR,NOPROTECT,NOWRT
#device adc=12
#use delay(clock=4000000)
#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_F5
#define LCD_DATA5 PIN_F4
#define LCD_DATA6 PIN_F1
#define LCD_DATA7 PIN_F0
#include <lcd.c>
#include <math.h>
#include <stdlib.h>
float voltage;
float Lect_adc;
void main()
{
Lect_adc=0;
voltage=0;
lcd_init();
setup_adc_ports(sAN0|VREF_VREF);
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_2);
while(true)
{
set_adc_channel(0);
Lect_adc=read_adc();
delay_ms(20);
voltage=((20.0*Lect_adc)/4095);
lcd_putc("\f");
lcd_gotoxy(1,2);
printf(lcd_putc,"Voltage = %f",Voltage);
delay_ms(500);
}
}
|
Can you help me ? Thanks |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Fri Apr 03, 2020 11:40 pm |
|
|
For anyone who's interested, I have converted the jpeg of the errors to
text as shown below. To summarize the errors, it says:
It can't open 30F4013.h
It wants a '#device 30F4013' line but that's in the missing 30F4013.h file.
It can't interpret the '#device adc=12' line unless it knows the PIC.
It can't interpret #use delay() unless it knows the the PIC.
It can't open lcd.c
It can't open math.h
It can't open stdlib.h
It want a '#device 30F4013' before it uses stdlib.h
Quote: |
"C:\PROGRA~2\PICC\CCSC0N.exe" out="build/default/production" Volt2.c +FD +DF +CC +Y=9 +EA +DF +LN +T +A +M +J +Z -P #__dsPIC30F4013__ =1
Compiling E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2 on 03-abr.-20 at 21:32
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:1:9: Error#18 File can not be opened
Not in source "E:\VOLTIMETRO DSPIC 30F\Volt2.X\30F4013.h"
Not in local "30F4013.h"
Not in project "E:\VOLTIMETRO DSPIC 30F\Volt2.X\30F4013.h"
Not in default "E:\VOLTIMETRO DSPIC 30F\Volt2.X\30F4013.h"
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:2:7: Error#128 A #DEVICE required before this line
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:3:9: Error#123 A #DEVICE required before this line
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:4:5: Error#44 Internal Error - Contact CCS PPUSE
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:12:10: Error#18 File can not be opened
Not in source "E:\VOLTIMETRO DSPIC 30F\Volt2.X\lcd.c"
Not in local "Icd.c"
Not in project "E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c\lcd.c"
Not in default "E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c\lcd.c"
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:13:10: Error#18 File can not be opened
Not in source "E:\VOLTIMETRO DSPIC 30F\Volt2.X\math.h"
Not in local "math.h"
Not in project "E:\VOLTIMETRO DSPIC 30F\Volt2.X\Math.h"
Not in default "E:\VOLTIMETRO DSPIC 30F\Volt2.X\Math.h"
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:14:10: Error#128 File can not be opened
Not in source "E:\VOLTIMETRO DSPIC 30F\Volt2.X\stdlib.h"
Not in local "stdlib.h"
Not in project "E:\VOLTIMETRO DSPIC 30F\Volt2.X\stdlib.h"
Not in default "E:\VOLTIMETRO DSPIC 30F\Volt2.X\stdlib.h“
E:\VOLTIMETRO DSPIC 30F\Volt2.X\Volt2.c:14:10: Error#128 A #DEVICE required before this line
8 Errors, 0 Warnings.
Build Failed.
nbproject/Makeflle-default.mk:114: recipe for target 'build/default/production/Volt2.o' failed
make[2]: Leaving directory *E:/VOLTIMETRO DSPIC 30F/Volt2.X'
nbproject/Hakefile-default.xak:114: recipe for target 'build/default/producticn/Volt2.c' failed
make[2]: Leaving directory *E:/VOLTIMETRO DSPIC 30F/Volt2.X'
nbproject/Makefile-default-mk:50: recipe for target '.build-ccnf' failed
make[1]: Leaving directory ' 2:/VOLTIMETRO DSPIC 30F/Volt2.X'
nbproject/Makefile-impl.ink:35: recipe for target ' .build-impl' failed
make[2]: *** [build/default/production/Volt2.o] Error 1
make[1]: *** [.build-conf] Error 2
make: ** * [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 2s) |
|
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sat Apr 04, 2020 12:00 am |
|
|
I took his Volt2.X folder and copied it to this folder in Windows 10:
\This PC\OS (C:)\Users\Home\MPLABXProjects
Then I opened the project in MPLAB X.
I don't have the PCD compiler. I then made it work for PCH.
I clicked on the Project Properties icon in MPLAB X (looks like a wrench
and nuts) and changed the PIC to 18F87K22. I selected the CCS compiler.
I changed the #include line in Volt2.c to 18F87K22.h.
That PIC apparently doesn't have a PIN_F0, so I changed it to PIN_F2.
Then it compiled without errors. Build Successful.
I'm not familiar enough with the MPLAB X to know why it works for me
but fails for him. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19544
|
|
Posted: Sat Apr 04, 2020 12:56 am |
|
|
OK.
As I have PCD, decided to see what happened for me.
Don't know what version of MPLAB-X he has, but my current version
had to 'upgrade' the project file when I loaded it.
I then looked at the project properties as directly imported. Immediately
saw the problem.
Select project.
Right click - Properties.
CCS C Complier
Compiler options.
The 'Include directories' entry here is empty.
This needs to contain the directories where the compiler include files
are contained. So wherever the compiler is\Devices and another line for
\Examples, and finally one for \Drivers. Without these the compiler
cannot find it's includes.....
So added these.
Then selected 'Build', and the code merrily compiled for me.
He has not put the settings for the compiler include paths into the
project....
ON my copy, I put these in, when I installed the compiler into the
toolchain, and they are always automatically filled in when the compiler
is selected as you create a project. |
|
|
jose_pic16f887
Joined: 06 Sep 2018 Posts: 11
|
|
Posted: Sat Apr 04, 2020 7:24 am |
|
|
Friends thanks for answering and trying to help me, I realized that this compiling ccs code in mplab x ide is very complicated. Well my ccs code is compiled without any problem and generates the hex file. My goal was to test the simulator multisim with dspic 30f and pic 32. This simulator requires file with elf extension. The mplab x ide generates it and I don't know why Labcenter has not placed these libraries in its own Proteus simulator for dspic 30f and pic 32.
I have made digital voltmeter code for low-end pics pic 16f886, etc. and wanted to test how high-end pics like dspic 30f and pic 32 work with the multi-sim simulator.
The other option that remains for me is to make a code in mplab x ide and the c16 compiler and use the dspic 30f and try again, so not to use the ccs plugin with the mplab x ide.
Anyway thank you very much friends for your dedication and your kind responses.
thanks
|
|
|
|