Hi-tech ve Mplabx derleme sorunu

Başlatan EMG81, 16 Mayıs 2011, 03:33:00

EMG81

Durum aşağıdaki gibidir. Hi-tech C18 compiler ayrıca C30 u kurdum. Mplabxbeta 6.0 ı kurdum. Mplab Hitech Compiler ı görüyor ama derlemiyor. Aşağıdaki iki hatayı veriyor.


[IMG]http://img31.imageshack.us/img31/2955/23626515.png[/img]

[IMG]http://img41.imageshack.us/img41/4972/78275423.png[/img]


Tagli

Yanlış hatırlamıyorsam orada yazan picc-18.ini içinde ufak bir değişiklik yapmak gerekiyordu. Aptal bir hata vardı, dosyadaki isimlerin başında "p" mi vardı, onun gibi bir şeydi... Tam hatırlamıyorum. Ama onu değiştirirsen muhtemelen de eski MPLAB hata verecektir. Yani geçici bir çözüm bu sadece.
Gökçe Tağlıoğlu

NaMcHo

C18 kullanıcaksanız mplab-x i kullanmayın,
LCD kütüphanem olmadan derliyorum bir çalışmamı hata vermiyor lcd kütüphanemi ekliyorum sacma sapan bir hata veriyor,mplab8.60'da derleyince aynı dosyaları sorun olmuyor.

Tagli

Merak ettim verdiği hata nedir? LCD kütüphanesinin zaten kendisinde de hata var, gerçi derlenmesine engel olmuyor o ayrı. Bu başlıkta anlatmıştım.

Kütüphanenin kullanımı zor zaten. Dosyaları proje klasörüne taşıyıp değiştirmek gerekiyor. Ayrıca header dosyaları için de, varsayılan klasördekileri değil (C18 kurulum klasörü), proje klasöründekileri göstermek gerekiyor. Yani hata yapmak çok kolay. MPLAB X'de denemedim ama eskisinde de biraz uğraştırmıştı bu LCD kütüphanesi.
Gökçe Tağlıoğlu

NaMcHo

Mplab-x main.c
#include <p18f4520.h>
#include <delays.h>
#include "LCD216_benim.h"
#include "i2c.h"

#pragma config OSC = HS , LVP = OFF , WDT = OFF , PWRT = ON , BOREN = SBORDIS
#pragma config PBADEN = OFF	,CP1 = OFF ,CP2 = OFF ,	CP3 = OFF ,  CPB = OFF, WRTC = OFF
#pragma config WRTB = OFF

unsigned char veri;
volatile unsigned char x=0;

void INT(void);
void delay(unsigned long gecikme);
void _24C02_yaz(unsigned char veri,unsigned char wadres);
void _24C02_oku(unsigned char wadres);

void main(void)
{
	ADCON1 &= 0x0F;				//Tüm AN pinleri dijital.
	TRISD=0x00;
	TRISA=0x00;
	TRISCbits.TRISC7=0;
	TRISBbits.TRISB0=1;
	LATCbits.LATC7=0;
	LATD=0;
	LATA=0;

	INTCONbits.INT0IE=1;
	INTCONbits.INT0IF=0;
	INTCON2bits.INTEDG0=1;
	INTCONbits.GIE=1;
	INTCONbits.PEIE=1;


	i2c_init(0);
	lcd_init();
	lcd_clear();
	cursor(1,1);
	lcd_send_data('V');lcd_send_data('E');lcd_send_data('R');
	lcd_send_data('I');
	lcd_send_data(':');

	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_write(0xFF);
	i2c_stop();
	delay(0x00000FFF);

	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_write('N');
	i2c_stop();
	delay(0x00000FFF);
	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x30);
	i2c_write('A');
	i2c_stop();
	delay(0x00000FFF);

	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_restart();
//	delay(0x00000FFF);
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
delay(0x00000FFF);
	lcd_send_data(veri);
veri=0;
delay(0x00000FFF);
	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x30);
	i2c_restart();
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
delay(0x00000FFF);
	lcd_send_data(veri);
	for(;;)
	{
		LATCbits.LATC7=1;
		delay(0x0000FFFF);
		LATCbits.LATC7=0;
		delay(0x0000FFFF);
		if(x)
		{

		}
	}

}

#pragma code high_vector = 0x08
void high_vector(void)
{
	_asm
		goto INT
	_endasm
}
#pragma code
#pragma interrupt INT
void INT(void)
{
	if(INTCONbits.INT0IF)
	{
		x++;
	}
	INTCONbits.INT0IF=0;
}
void _24C02_yaz(unsigned char veri,unsigned char wadres)
{
	i2c_start();
	i2c_write(0xA0);
	i2c_write(wadres);
	i2c_write(veri);
	i2c_stop();
	delay(0x00003FFF);
}
void _24C02_oku(unsigned char wadres)
{
	i2c_start();
	i2c_write(0xA0);
	i2c_write(wadres);
	i2c_restart();
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
	delay(0x00003FFF);
}
void delay(unsigned long gecikme)
{
	while(gecikme--);
}


Çıktı
/usr/bin/make -f nbproject/Makefile-default.mk SUBPROJECTS= .clean-conf
make[1]: Entering directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'
rm -f  -r build/default
rm -f  -r dist/default
make[1]: Leaving directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'

CLEAN SUCCESSFUL (total time: 902ms)
/usr/bin/make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'
/usr/bin/make  -f nbproject/Makefile-default.mk dist/default/production/I2C.X.production.cof
make[2]: Entering directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'
rm -f  build/default/production/LCD216_benim.o.d 
mkdir -p build/default/production 
C:\\MCC18\\bin\\mcc18.exe  -p18F4520 -I"C:/Users/NaMcHo/Documents/Projelerim/I2C.X"  -I C:\\MCC18\\bin\\..\\h  -fo build/default/production/LCD216_benim.o   LCD216_benim.c  > build/default/production/LCD216_benim.err 2>&1 ; if [ $? -eq 0 ] ; then cat build/default/production/LCD216_benim.err | sed 's/\(^.*:.*:\)\(Warning\)\(.*$\)/\1 \2:\3/g' ; else cat build/default/production/LCD216_benim.err | sed 's/\(^.*:.*:\)\(Error\)\(.*$\)/\1 \2:\3/g' ; exit 1 ; fi
C:/Program\ Files\ \(x86\)/Microchip/MPLABX/mplab_ide/mplab_ide/modules/../../bin/mplab-cpp  -MMD build/default/production/LCD216_benim.o.temp LCD216_benim.c __temp_cpp_output__ -D __18CXX -I C:\\Users\\NaMcHo\\Documents\\Projelerim\\I2C.X -I C:\\MCC18\\bin/../h  -DPIC18F4520
C:\MCC18\bin\..\h\p18cxxx.h:549: #error Unknown processor!
make[2]: *** [build/default/production/LCD216_benim.o] Error 33
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
make[2]: Leaving directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'
make[1]: Leaving directory `/c/Users/NaMcHo/Documents/Projelerim/I2C.X'

BUİLD FAILED (exit value 2, total time: 1s)


Mplab 8.69 main.c
#include <p18f4520.h>
#include <delays.h>
#include "LCD216_benim.h"
#include "i2c.h"

#pragma config OSC = HS , LVP = OFF , WDT = OFF , PWRT = ON , BOREN = SBORDIS
#pragma config PBADEN = OFF	,CP1 = OFF ,CP2 = OFF ,	CP3 = OFF ,  CPB = OFF, WRTC = OFF
#pragma config WRTB = OFF

unsigned char veri;
volatile unsigned char x=0;

void INT(void);
void delay(unsigned long gecikme);
void _24C02_yaz(unsigned char veri,unsigned char wadres);
void _24C02_oku(unsigned char wadres);

void main(void)
{
	ADCON1 &= 0x0F;				//Tüm AN pinleri dijital.
	TRISD=0x00;
	TRISA=0x00;
	TRISCbits.TRISC7=0;
	TRISBbits.TRISB0=1;
	LATCbits.LATC7=0;
	LATD=0;
	LATA=0;

	INTCONbits.INT0IE=1;
	INTCONbits.INT0IF=0;
	INTCON2bits.INTEDG0=1;
	INTCONbits.GIE=1;
	INTCONbits.PEIE=1;

	
	i2c_init(0);
	lcd_init();
	lcd_clear();
	cursor(1,1);
	lcd_send_data('V');lcd_send_data('E');lcd_send_data('R');
	lcd_send_data('I');
	lcd_send_data(':');
	
	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_write(0xFF);
	i2c_stop();
	delay(0x00000FFF);

	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_write('N');
	i2c_stop();
	delay(0x00000FFF);
	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x30);
	i2c_write('A');
	i2c_stop();
	delay(0x00000FFF);

	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x28);
	i2c_restart();
//	delay(0x00000FFF);
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
delay(0x00000FFF);
	lcd_send_data(veri);
veri=0;	
delay(0x00000FFF);
	i2c_start();
	i2c_write(0xA0);
	i2c_write(0x30);
	i2c_restart();
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
delay(0x00000FFF);
	lcd_send_data(veri);
	for(;;)
	{
		LATCbits.LATC7=1;
		delay(0x0000FFFF);
		LATCbits.LATC7=0;
		delay(0x0000FFFF);	
		if(x)
		{

		}
	}
	
}

#pragma code high_vector = 0x08
void high_vector(void)
{
	_asm
		goto INT
	_endasm
}
#pragma code
#pragma interrupt INT
void INT(void)
{
	if(INTCONbits.INT0IF)
	{
		x++;
	}
	INTCONbits.INT0IF=0;
}
void _24C02_yaz(unsigned char veri,unsigned char wadres)
{
	i2c_start();
	i2c_write(0xA0);
	i2c_write(wadres);
	i2c_write(veri);
	i2c_stop();
	delay(0x00003FFF);
}
void _24C02_oku(unsigned char wadres)
{
	i2c_start();
	i2c_write(0xA0);
	i2c_write(wadres);
	i2c_restart();
	i2c_write(0xA1);
	veri=i2c_read();
	i2c_stop();
	delay(0x00003FFF);
}
void delay(unsigned long gecikme)
{
	while(gecikme--);
}


Çıktısı
----------------------------------------------------------------------
Debug build of project `C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.mcp' started.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mcc18.exe v3.36, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Mon May 16 09:51:16 2011
----------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\i2c.o".
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\LCD216_benim.o".
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\main.o".
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.cof".
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.hex".
Clean: Deleted file "C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.mcs".
Clean: Done.
Executing: "C:\MCC18\bin\mcc18.exe" -p=18F4520 /i"D:\MCC18\h" "i2c.c" -fo="i2c.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
Executing: "C:\MCC18\bin\mcc18.exe" -p=18F4520 /i"D:\MCC18\h" "LCD216_benim.c" -fo="LCD216_benim.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
Executing: "C:\MCC18\bin\mcc18.exe" -p=18F4520 /i"D:\MCC18\h" "main.c" -fo="main.o" -D__DEBUG -Ou- -Ot- -Ob- -Op- -Or- -Od- -Opa-
Executing: "C:\MCC18\bin\mplink.exe" /p18F4520 /l"C:\MCC18\lib" "i2c.o" "LCD216_benim.o" "main.o" /u_CRUNTIME /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"24C02.cof" /M"24C02.map" /W
MPLINK 4.37, Linker
Copyright (c) 1998-2010 Microchip Technology Inc.
Errors    : 0

MP2HEX 4.37, COFF to HEX File Converter
Copyright (c) 1998-2010 Microchip Technology Inc.
Errors    : 0

Loaded C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.cof.
----------------------------------------------------------------------
Debug build of project `C:\Users\NaMcHo\Documents\Projelerim\C18 Denemelerim\i2c\24C02.mcp' succeeded.
Language tool versions: mpasmwin.exe v5.37, mplink.exe v4.37, mcc18.exe v3.36, mplib.exe v4.37
Preprocessor symbol `__DEBUG' is defined.
Mon May 16 09:51:17 2011
----------------------------------------------------------------------
BUILD SUCCEEDED

Tagli

MPLAB X'de ben de benzer bir hata alıyorum normal programlarda bile. Garip bir şekilde derleme düğmesine tekrar bastığımda hatasız derliyor. Aynı şey debug için de geçerli. Yalnız "clean" olan düğmeye (üzerinde süpürge olan) basmadan dene, diğerini kullan.
Gökçe Tağlıoğlu

NaMcHo

Şimdi düzeldi  :D bende hep ilk derlememi yaptıkdan sonra süpürge ile derliyodum , Mplab-x e devam

EMG81

Evet sorunum çözüldü. sağolasın FX.

Bu sorun neden oluyor ? Yani bir derleyicinin bu tarz bir sorunu olmaması lazım bence..  >:(

EMG81

#8
Bir dakika ! Verdiği çıktılar aşağıdaki gibi ama Program hex file üretmiyor.. !

make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory `/c/Users/Desktop/testio/Mplabx deneme.X'
make  -f nbproject/Makefile-default.mk dist/default/production/Mplabx_deneme.X.production.cof
make[2]: Entering directory `/c/Users/Desktop/testio/Mplabx deneme.X'
make[2]: `dist/default/production/Mplabx_deneme.X.production.cof' is up to date.
make[2]: Leaving directory `/c/Users/Desktop/testio/Mplabx deneme.X'
make[1]: Leaving directory `/c/Users/Desktop/testio/Mplabx deneme.X'

BUİLD SUCCESSFUL (total time: 804ms)
Loading C:/Users/Desktop/testio/Mplabx deneme.X/dist/default/production/Mplabx_deneme.X.production.cof...
Loading completed



Ayrıca 5-10 kerede bazen 1-2 kerede 1 kez hata veriyor. Hiç birşeyi düzeltemeden Tekrar build diyorum. BU sefer hiç hata vermiyor..

EMG81

#9
C:\Program Files\HI-TECH Software\PICC-18\PRO\9.65\dat

İçerisindeki dosyaya Kullandığım MCU nun önüne PIC yazınca Pic in registerlarına ulaşamıyor fakat hatada vermiyor, Hex üretmiyor 2-3 kerede 1 hata veriyor. Klasik Mplab 8.60 ile denedim. Dosya içerisindeki PIC yazısını kaldırdım. Onda herşey sağlam. Hex ini de üretiyor, hatasız da derliyor. Mplab x "beta" tabirinden kurtulana kadar gereksiz bir derleyici olmaktan kurtulamayacak gibi.

Erhan YILMAZ

Microchipin kendi c18 derleyicisini kurdum fakat mplapx'e adapte edemedim.Proje oluşturacakken sadece mspasm ile asm30 derleryicisi görünüyor.Tool kısmından yeni derleyici ekliyeyim dedim c18in kurulu olduğu dizini gösteriyorum fakat bi sonuç alamadım. Nasıl yapıldığını bilen arkadaşlar yardımcı olabilir mi?

Tagli

MPLAB 8 ile MPLAB X'in kullandığı C18 derleyicileri farklı olabilir. Buradaki C18'i çekip dene. MPLAB X içinde yer göstermeye gerek kalmadan çalışması lazım.
Gökçe Tağlıoğlu

Erhan YILMAZ

Sağol hocam hemen çekip deniyorum. Peki c18 için hangi lite sürümü tavsiye edersiniz. Hitechmi mcc18 mi? Birde mplab ide üzerinde mcc18 projesi açtım kodlar içinde asm komutlarda vardı mcc18 derleyici hata verdi. Bu sorunu nasıl aşabilirim? Asm komut kullanmak için projede ne gibi değişiklikler gerekiyor?

Erhan YILMAZ

Hocam bu arada bahsettiğinizi derleyicileri de kurdum sonuç aynı proje oluştururken derleyicileri görmüyor.

Tagli

C18 denince benim aklıma, şimdiki adıyla "Microchip C Compiler for PIC18 MCUs" olarak bilinen derleyici geliyor. Yani Hi-Tech derleyicisi C18 olarak bilinmez. Benim deneyimlerim maalesef C18 ile sınırlı. Hi-Tech için yorum yapamam.

Henüz hiç C ve assembly kodunu karıştırma deneyimim olmadı. Ancak, C18'de kesmeler için bir satır asm kodu yazmak gerekiyor. MPLAB X bu asm kodlarının altını çizip hatalı olduklarını söylüyor. Ancak derleme sırasında herhangi bir hata vermiyorlar ve program sorunsuz çalışıyor.

MPLAB X'i bayadır Linux üzerinde kullanıyorum. Zamanında Windows üzerinde de kurmuştum ama bu tür bir sorunla karşılaştığımı hatırlamıyorum. Bir ara Windows'takini silip yeniden yükleyerek (zaten eski versiyon vardı) sonucu yazarım.
Gökçe Tağlıoğlu