MikroC hakkında ne dersiniz ?

Başlatan EMG81, 12 Mayıs 2011, 08:30:21

EMG81

Selam candaşlar

Ben pic için ASM kullanırdım. PC içinde Visual basic. Bu sene proton ile bikaç birşey yaptım. Aynı süreçtede C öğrenmeye başladım. Mikroelektronika nın Compiler ları insanın işini çok kolaylaştırıyor gerçekten. Bende C bilgimin artması açısından MikroC compiler ını indirdim. Ne dersiniz pic,ds ve 24f serileri, pic32, AVR.. Hepsi için C compiler ı mevcut. MikroC leri önerirmisiniz ? yoksa hiç bulaşmıyayım mı ?

NaMcHo

ANSI C öğrenmek daha faydalı olur bence.
Bunuda C kitaplarında bulunan örnekleri yaparak ayrıca Nümerik Analiz kitaplarında bulunan Müller,Newton Rapshon gibi nümerik yöntem algoritmalarını yazmaya çalışılarak C kalibiyeti gelişir.

Bir örnek :
/*
NÜMERİK ANALİZ ÖDEVİ #Newton Rapshon ALGORİTMASI
*/

#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <math.h>

_inline long double hesapla(double s1,double s2);						//_inline tanımı fonksiyonların belleklde daha az yer kaplamasını sağlıyor
_inline void katsayial(short int derece);								//fonksiyon cok uzun olmamak kaydıyla bu tanım daha verimli oluyor sade tanıma göre.
_inline long double tureval(short int derece);

int a;
unsigned short int sayac=0;
short int derece;
long double katsayi[BUFSIZ];
long double sonuc1=0.00,sonuc2=0.00,s1,s2,turevkat[BUFSIZ],Xo,kontrol=0.00,f=0.00,f1=0.00,N,Xn,gecici;
void main(void)
{ 
	printf("\tNewton Rapshon Algoritmasi #\n");
	printf("Cos,Sin,Log...gibi katsayi barindiran fonksiyonlar icin gecerli değildir!\n");

	while(true)
	{
		printf("Denklem Derecesi Giriniz: ");
		scanf("%d",&derece);	printf("\n");					//Denklem derecesi alinip bir alt satira geçiliyor.
		printf("BASLANGIC DEGERINI GIRINIZ :\t");
		scanf("%lf",&Xo);
		printf("TOLERANS DEGERINIZI YAZINIZ :\t"); 
		scanf("%lf",&N);
		printf("SINIR DEGERLERINI GIRINIZ :");
		scanf("%lf %lf",&s1,&s2);
		printf("\n\n\t");
		
		while(true)
		{
			katsayial(derece);										//Katsayi al fonksiyonuna gidiliyor.
			tureval(derece);
			gecici=hesapla(s1,s2);
			sonuc1=0;
			sonuc2=0;
			if(gecici)
			{
				printf("\t\tGIRMIS OLDUGUNUZ SINIR DEGERLERI ARASINDA KOK YOKTUR!\n");	
				break;
			}
			printf("\t\t%d.LITERASYONDA SONUCA ULASILDI\n",sayac);
			printf("\t\tYAKLASIK KOK DEGERI : %lf\n",Xn);

			printf("PROGRAMDAN CIKMAK ICIN 'C' TUSUNA BASINIZ!\n");
			a=getchar();	
			printf("\n\n");
			break;
		}
		if(a=='C')
			break;
	}
}

_inline long double hesapla(double s1,double s2)
{
	for(short int x=0;x<derece+1;x++)
	{
		sonuc1+=pow(s1,x)*katsayi[x];						//pow fonksiyonu üst alıyor s1^x şeklinde.
		sonuc2+=pow(s2,x)*katsayi[x];
	}
	if(sonuc1*sonuc2>0)
		return 1;
	else if(sonuc1*sonuc2<0)								
	{
		do
		{
			if(sayac)											//Ilk anda Xn'i Xo a atama ama ilk aşamadan sonra her turda Xn'i Xo'a ata,kontrolü temizle.
			{
				Xo=Xn;
				kontrol=0.00;
			}
			for(short int y=0;y<derece+1;y++)					//Xo'ın fonksiyondaki degeri hesaplanıyor f(Xo)
				f+=pow(Xo,y)*katsayi[y];
			for(short int y=0;y<derece;y++)						//f'(Xo) hesaplanıyor.
				f1+=pow(Xo,y)*turevkat[y];
		
			Xn=Xo-f/f1;											//Yaklasık kök değeri hesaplanıyor.
			f=0;
			f1=0;
			for(short int y=0;y<derece+1;y++)					//Bulduğumuz yaklasık kök değeri fonksiyonda yerine konulup hesaplanıyor ve kontrol değişkenine
				kontrol+=pow(Xn,y)*katsayi[y];					//atanıyor.

			sayac++;
		}while(abs(kontrol)>N);									//kontrol değişkeni tolerans değerindenbuyukse literasyona devam ediliyor.							

		return 0;
	}
	else if(sonuc1*sonuc2==0)
	{
		if(sonuc1==0)
			printf("%lf DENKLEMIN BIR KOKUDUR!\n",s1);
		else if(sonuc2==0)
			printf("%lf DENKLEMIN BIR KOKUDUR!\n",s2);
		return 0;
	}
	return 0;
}
_inline void katsayial(short int derece)
{
	printf("Fonksiyon Katsayilarini Giriniz : \n");
	for(short int x=0;x<derece+1;x++)
	{
		if(x==0)
			printf("Fonksiyonun x=0 noktasindaki degerini giriniz :\t");
		else
			printf("{%d} INDISLI TERIMI :\t",x);
		scanf("%lf",&katsayi[x]);
		printf("\n");
	}	
}
_inline long double tureval(short int derece)
{
	for(short int x=0;x<derece;x++)
		turevkat[x]=0.00;							//turevkat dizisindeki terimler sıfırlanıyor.
	for(short int x=1;x<derece+1;x++)
		turevkat[x-1]=x*katsayi[x];
	return 0;
}

dumansiz

Şu anki yapısını bilmiyorum ama 2-3 sene önce MikroC ile uğraşırken , kütüphanelerine tam erişim izni vermiyordu.
Başlangıç için gerçekten kolay bir derleyici ama ileride mutlaka Ansi-C ye geçmelisin.

Erol YILMAZ

#3
Anladığım kadarı ile hemen "Mikro C" de bulunan "bol sürücü" güzelliğinden faydalanmak istiyorsunuz.

Eğer bu işi meslek olarak kabul ediyorsanız,

Tavsiyem;
Sade bir derleyici ile (misal Hi-Tech PICC) çalışmanızdır.

Zaten daha önce ASM yazdığınızdan hiçbir zorluk çekmeyecek ve kodu kendiniz yazdığınız için kendinizi geliştirme şansı bulacaksınız.

Daha önce ASM bilmeyen veya C yi hiç tanımamış arkadaşlar için C derleyici dersek
o zaman tanışma için  "CCS" veya "Mikro C" diyebiliriz.

Bunun yanında yine bir sürücü lazımsa MikroC den CCS den yada bi başkasından kopya çekebilirsin  ;)

C korkusunun aştıktan sonra yine Hi-tech PICC  :)

jackal183

allegro hocama kesinlikle katılıyorum, zaten asm temeliniz olduğunuz için sizin için en iyisi hi-tec olacaktır

tekosis

Alıntı yapılan: Allegro - 12 Mayıs 2011, 11:08:37
Anladığım kadarı ile hemen "Mikro C" de bulunan "bol sürücü" güzelliğinden faydalanmak istiyorsunuz.

Eğer bu işi meslek olarak kabul ediyorsanız,

Tavsiyem;
Sade bir derleyici ile (misal Hi-Tech PICC) çalışmanızdır.

Zaten daha önce ASM yazdığınızdan hiçbir zorluk çekmeyecek ve kodu kendiniz yazdığınız için kendinizi geliştirme şansı bulacaksınız.

Daha önce ASM bilmeyen veya C yi hiç tanımamış arkadaşlar için C derleyici dersek
o zaman tanışma için  "CCS" veya "Mikro C" diyebiliriz.

Bunun yanında yine bir sürücü lazımsa MikroC den CCS den yada bi başkasından kopya çekebilirsin  ;)

C korkusunun aştıktan sonra yine Hi-tech PICC  :)

Allegro ustam saygılar. Ben ccs c de çalışıyorum. Bunda dahi yeterince kütüphane vs desteği mevcut, baya profesyonel işler çıkabiliyor. Merak ettiğim neden Hi-tech PICC bu kadar önde gidiyor, artısı nedir? Profesyonelleri cezbeden nedir bu programda? Cevabınız için şimdiden teşekkür ederim.
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

memo333

yazdığım yazılımların önemli bir kısmını mikroC de yazmıştım. Fakat bazı anlamsız hatalarla boğuştum.

Bu nedenler Hi-Tech C ye geçtim şimdi daha rahatım. En azından yeni bir işlemci çıktığında aylarca beklemiyorsunuz....
Gömülü Linux Notları --> http://linuxedu.xyz/

Erol YILMAZ

#7
Alıntı yapılan: tekosis - 12 Mayıs 2011, 12:15:02
Allegro ustam saygılar. Ben ccs c de çalışıyorum. Bunda dahi yeterince kütüphane vs desteği mevcut, baya profesyonel işler çıkabiliyor. Merak ettiğim neden Hi-tech PICC bu kadar önde gidiyor, artısı nedir? Profesyonelleri cezbeden nedir bu programda? Cevabınız için şimdiden teşekkür ederim.

Misal ARM a geçeceksin yarın öbürgün, PIC lerin Performans/Fiyat ları düşük gelmeye başladı...
Keil-IAR da benzer profesyonellikte işler çıkartabilecek misin ? <Misal doğru dürüst sürücü yok içinde>

CCS sağladığı kolaylıklar(?) ile kullanıcının kendine has yöntemler bulup problemleri çözmesine mani oluyor,
diye düşünüyorum.

Yani sadece sürücüsü bol diye bir ortamda kalmayın...
Kendi sistemlerinizi kurabileceğiniz,
Kendi Multitasking kodlarınızı oluşturabileceğiniz,
Kendi sürücülerinizi yazabileceğiniz orta seviyeli alanları tercih etmenin avantajları çok daha fazla.

Hi-tech ten Keil'e geçtiğimde bu yüzden hiç zorluk çekmeyip  aynen devam edebildim.
Aynı şekilde CCS den Keil e geçince neden, sanki C yi baştan öğreniyor etkisine kapılalım ki ?

Bu yüzden ben o şekilde tercih ediyorum. Başka birisi bu konularda CCS nin daha iyi old. düşünebilir.

Tagli

Microchip C18 ve C30'un adları hiç anılmamış. Bunlar da bir seçenek olabilir. Ben de assembly'den C18'e geçtim, oldukça rahatım.

C18/C30 ile Hi-Tech derleyicileri arasında belirgin bir fark var mı bilmiyorum. Bilen arkadaşlar bu konuda deneyimlerini paylaşırlarsa faydalı olur.
Gökçe Tağlıoğlu

Erol YILMAZ

Hi-tech burada önplana çıkan oldu ama Keil, IAR, C18, C30 tipteki DERLEYİCİLER diyelim biz buna.

iyildirim

C30 kullanıyorum, oldukça da memnunum. Bedava ve gayet yeterli iş görüyor. IDE ile entegre vs.

Bana göre hi-tech'den artısı da güncellenme hızı..
Daha nerdeyse sadece adı ortada olan 60mhz lik 33fe lerin bile header dosyaları şimdiden mevcut.

Ayrıca bütün microchip örnekleri de zaten bu derleyiciye göre yazılmış.. Diğerleri kadar high level kütüphane desteği olmasa bile herhangi bir sıkıntı oluşmuyor.
Üstelik gayet düzgün çalışan DSP, fixed point lib'leri de var.


Aynı seviye de tecrübeli olmasam da yukarıda yazdıklarımı C32 için de söyleyebilirim.

lojikmemo1


MikroC de o kadar yabana atmayın bence. IDE ortamı, deney setleri, Ek kartları, derleyici ve veya geliştirime kartları ile ilgili hemen sonuca ulaşabileceğiniz destek forum'u, örnek kodları, örnek şemaları vs.. gayet kullanışlı. Tabi kütüphane kullanımına ters bakan bazı arkadaşlar yine mikroC ile kod yazıp kütüphanelerini kullanmadan da çalışabilirler. Şahsen bir derleyicinin IDE ortamı çok önemli. Ayrıca kod asistanı da vaz geçilmez (ctr + space) sırf bu yüzden keil den nefret ediyorum ama belki yeni sürümlerinde eklemişlerdir.
Sadece mikroC değil MikroBasic ve mikroPascal da var ve bu derleyicilerin PIC16-18 , PIC24-DSPIC, PIC32, AVR, 8051 gibi işlemci desteği olan versiyonları da mevcut. Aslında birde ARM çıkarsalar tam süper olacak :)
İnsanlara Akılları Ölçüsünde Söz Söyleyiniz.

Tagli

Evet, IDE konusunda haklısın. MPLAB'in pek iyi durumda olduğu söylenemez. Ama yeni versiyondan oldukça umutluyum. Betadan çıkmasını heyecanla bekliyorum :) Hatta bazen beklemeyip betasını kullandığım da oluyor...
Gökçe Tağlıoğlu

EMG81

#13
Selam beyler. Konuya geç yazı yazdım kusura bakmayın.

Tüm yazılanları okudum. Herkese teşekkür ederim.

Genel bir kesim Hitech, c18, c30, c32 önermiş. MikroC yi hazır kütüphaneleri var diyerekten indirdim. Fakat dediğiniz gibi standart C den biraz uzak. Tamam. Hitech veya C30 kullanayım. Problem değil fakat şunu öğrenmem gerekli.

Programın en başına Include ... şeklinde H uzantılı dosyalar ekliyorsunuz. Örneğin LCD ler için.. Bu H uzantılı dosyayı nasıl yazıyorsunuz ? Nereye kopayalıyorsunuz ? (Asm da include derken dosyanın c:\.... şeklinde yerinden çağırıyoruz) H uzantılı dosya yapmak zormu ? Hazır mı kullanmalıyım yoksa oturup tek tek yazmalımıyım ?

Ayrıca MikroC de de şöyle birşeyler yapabildim.  8)

[IMG]http://img819.imageshack.us/img819/7062/adszreg.png[/img]


qeek

arkadaşım bence ccs c den başla hazır kütüphanesi çok c ye alışıncaya kadar hazır kütüphaneleri kullanırsın sonrada kendi kütüphanelerini yazarsın zaten kendi kütüphanelerini yazdıktan sonra istediğini kullan çok fark etmez sonuçta hepsi c biraz değişir sadece