C18 kullanan varmı?

Başlatan serdararikan, 30 Eylül 2010, 13:42:02

serdararikan

elimde bir uygulama var hitech 9.63 de deniyorum derlemiyor.9.64 te derliyor fakat 9.64 derleme işleminde mplab ı kapatıyor.hep sorun çıkıyor.kodu c18 e geçirip yoluma oradan devam ediyim diyorum.Ne dersiniz?
hitech e benzermi c18?

F493

Selam,
  Kesinlikle süper olur. C18 çok stabil. Hi-Tech 18 serisinde bence çok zayıf. Ben yaklaşık 3 yıl önce kodu Hi-Tech'den C18' aktardım ve tek hamlede çalıştı. Saç baş yolmuştum hi-tech'de. Ufak bir kaç farklılık var. Çok farklılık yok. Kısım kısım çevirip test ederek gidin sorun olmaz. Takıldığınız nokta olursa yardımcı olmaya çalışırız.

Esen kalın.

serdararikan

kodu aktardım.derleme yaptım

MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - linker command file required.
Errors    : 1

şeklinde bir hata verdi.olayı tam anlayamadım.sanırım eksik bişey var.

F493

Selam,

  Üstad öncelikle C:\MCC18\lkr buradan hangi işlemciyi kullanıyorsan onun linker dosyasını bul ve proje dosyanın altına kopyala, sonrasında project penceresinde "Linker Script"  sekmesine sağ tıkla add files ve linker dosyasını ekle.

Esen kalın.

F493

Selam ,

Zamanlamalar için #include <delays.h> başlık dosyasını projenize ekleyin.

Delay10TCYx( 1) //  1 yazarsan 10 instruction cycle bekler.
Delay1KTCYx(1);   // 1000cycle bekler.

Daha fazlası

c18 user manual
http://ww1.microchip.com/downloads/en/devicedoc/51288f.pdf
sayfa 32.

Esen kalın.

serdararikan

evet işin o kısmını çözdüm.fakat build all dediğimde

sırasıyla dosyaları derlemeye çalışıyor.anladıüım kadarıyla ilk önce her dosyanın dosyaadi.o şeklinde "o" uzantılı bir dosyasını oluşturuyor.fakat bende hiçbir o uzantılı dosya oluşturamıyor.bu yüzden derleme başarısız oluyor.
[IMG]http://img829.imageshack.us/img829/307/adszgp.jpg[/img]

derleme sonucu bu şekilde.

F493

Selam,

Üstad buradan bişi söylemek zor , ancak şunları kontrol et.
Project
        -> Build Options
                               -> Project' e tıkla.

Karşına çıkan pencerede "Directories" sekmesine tıkla orada show directories for : bölümünde sırasıyla

Linker - Search Path -> C:\MCC18\lkr
Library Search path -> C:\MCC18\lib
Include Search Path -> Include

bölümlerini göstermelisin. Bu klasörler C18 altında.

Bu şekilde sorun çözülebilir.

Esen kalın.
 

serdararikan

forumdan bir upgrade dosyası buldum.
https://www.picproje.org/index.php?topic=10967.0
23.9MByte

onu indirip upgrade ettim.derlemeye çalıştım.bazı satırlarda hata verdi ilginçtirki satırların yerlerini değiştirdi düzeldi.şimdi hitechdeki

void interrupt isr(void)
{   

}

satırlarımda bir hata var.sanırım bu c18 deki interrupt olayı biraz farklı.

mihri

#pragma interrupt HighISR
void HighISR(void)
{
 
        
    if(PIR1bits.ADIF && PIE1bits.ADIE)
        PIR1bits.ADIF=0;
    
} //

#pragma interrupt LowISR
void LowISR(void)
{

} //



#pragma code highVector=0x08
void HighVector (void)
{
    _asm goto HighISR _endasm
}
#pragma code /* return to default code section */



#pragma code lowhVector=0x18
void LowVector (void)
{
    _asm goto LowISR _endasm
}
#pragma code /* return to default code section */


C18 kesme alt programlarına bu şekilde dallanılıyor. Ayrıca Hi-Tech ile 18F serisi programlamaya çalışmayın kafanızda saç kalmaz :)
"Eppur si muove!"

F493

#9
Selam,

/*

Bu program TIMER0 test programıdır.

TMR0 = 8 bit

Prescaler = 1 / 128 

XTAL = 20MHZ

1cycle = 200ns

Mainden itibaren 6.556200 milisan.

128(prescaler) * 255(8bit) = 32640 * 0.2(200ns) = ~6.5ms


*/


#include <p18f452.h>
#include<stdio.h>


//=======================================
// CONFIG MEMORY

#pragma	config	OSC = HS
#pragma	config	OSCS = OFF
#pragma	config	PWRT = ON
#pragma	config	BOR = OFF
#pragma	config	WDT = OFF
#pragma	config	LVP = OFF
#pragma	config	DEBUG = OFF


unsigned char	count = 0;


void Startup(void)
{
	
	INTCONbits.TMR0IE = 1;

	T0CON = 0b11000110;			
// TMR0 on - TMR0 8bit - internal cycle -
//						1/128 prescaler;

	INTCONbits.TMR0IF = 0 ;
	INTCONbits.GIE = 1;

	return ;	
}

void main (void)
{

	Startup();
	

	Nop(); 	// 	timer' buradan itibaren 
			//	ölçmeye başlıyoruz burada stopwatch'ı
			// sıfırlıyoruz ve kesmede degere bakıyoruz
			
	while(1) ;
	
	
	return ;

}



/////////////////Bu iki satır arasını her projenize aynen kopyalayın. Sonra seri port, TMR, CCP ne olursa olsun interrupt rutininizi yazın. Bu sabit., gerekli.///////////////////////////////////////
void ISR_High(void);

#pragma code InterruptVectorHigh = 0X08

void InterruptVectorHigh(void)
{
 	_asm

		goto ISR_High

	_endasm
}
#pragma code
#pragma interrupt ISR_High
////////////////////////////////////////////////////////


void ISR_High(void)
{

 	if(INTCONbits.TMR0IE & INTCONbits.TMR0IF)
	{
		++count;   // burada geçen süre ortaya çıkar


 		INTCONbits.TMR0IF = 0;
	}



}


Esen kalın.