<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Pic dsPIC Arm7 Arm Cortex Programlama ve Projeler &#187; C</title>
	<atom:link href="http://www.uicroarm.com/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.uicroarm.com</link>
	<description>ds-pic arm-7 cortex nxp proje uygulama</description>
	<lastBuildDate>Fri, 23 Apr 2010 19:11:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>STM32-Özel Kütüphane</title>
		<link>http://www.uicroarm.com/stm32-ozel-kutuphane</link>
		<comments>http://www.uicroarm.com/stm32-ozel-kutuphane#comments</comments>
		<pubDate>Fri, 23 Apr 2010 19:06:25 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[STM32 Uygulamaları]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[arm]]></category>
		<category><![CDATA[arm cortex]]></category>
		<category><![CDATA[ARM7 Uygulamaları]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[cortex m3]]></category>
		<category><![CDATA[KEIL]]></category>
		<category><![CDATA[STM32]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=139</guid>
		<description><![CDATA[
Merhaba,
STM32; arm cortex m3 core tabanlı bir işlemcidir. Özellikleri tek kelimeyle mükemmel denebilir. Hızı 72Mhz&#8217;dir ama yeni versiyonlarında 120Mhz&#8217;e kadar çıkıyor. Dahili donanım microcontroller olarak nerdeyse herşey var. (12bit ADC, DAC, DMA, I2C, SPI, UART, USB vs.) Programlanması ise ST kütüphanesini kullanırsanız çok basittir ama çok fonksiyonel olmaz. Avantajı ise pek kafa patlatmazsınız, nasılsa hazır [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_main.jpg" alt="" title="ABCD0006_main" width="295" height="221" class="alignnone size-full wp-image-140" /><span id="more-139"></span></p>
<p>Merhaba,</p>
<p>STM32; arm cortex m3 core tabanlı bir işlemcidir. Özellikleri tek kelimeyle mükemmel denebilir. Hızı 72Mhz&#8217;dir ama yeni versiyonlarında 120Mhz&#8217;e kadar çıkıyor. Dahili donanım microcontroller olarak nerdeyse herşey var. (12bit ADC, DAC, DMA, I2C, SPI, UART, USB vs.) Programlanması ise ST kütüphanesini kullanırsanız çok basittir ama çok fonksiyonel olmaz. Avantajı ise pek kafa patlatmazsınız, nasılsa hazır fonksiyonlar.</p>
<p>Benim seçtiğim yol ise en zoru diyebiliriz. Kendi kütüphanemi kendim oluşturdum ve 1bit/16bit/32bit erişim saylayan bir kütüphane oluşturdum. ST kütüphanesini kullanan arkadaşların çoğu arka planda işlemci neyapıyor bilmez. Bu kütüphaneyi oluşturmam yaklaşık 10 günümü aldı ama mükemmel sonuç oldu diyebilirim. </p>
<p>Öncelikle şunu söylüyeyim kütüphaneyi burada paylaşmıyacağım fakat kod örnekleri olacak, bilmeyenler mantığı kapacaktır. C ve derleyicinin gücü sayesinde böyle bir kütüphane oluşturulabilir.</p>
<p>Aşağıda bazı örnekler ekliyeceğim ve 32bite PIC&#8217;e bit bit yazıldığı gibi yazıldığını göreceksiniz. Size yeni fikirler verecektir.</p>
<pre class="brush: cpp;">
/**********************************************************/
/**********************************************************/
/*============Aykut ULUSAN, Elektronik Mühendisi, İzmir============= */
/**********************************************************/
/**********************************************************/

#define	    mylcd			my_lcd_reg-&gt;lcd    // porta mylcd olarak isim verdim

mylcd.bits.rs=1;               // 1bit yazılır - Register Selecte Bagli pin 1

mylcd.bits.data_4bit=da_ta&gt;&gt;4;   // 4bit yazılır - high order nibble

mylcd.bits.enb=1;                      // 1bit yazılır - enable 1

// systick'in load registerine 32bit sayı yükle
stk_load.b32=(u32)us*k_us; 

// systick'in Control registerinin Enable bitini 1 yap
stk_ctrl.bits.ENABLE=1;

// systick'in Control registerinin COUNTFLAG == 0 iken bekle
 while(!stk_ctrl.bits.COUNTFLAG);// bekle 

// porta'nın 9'unu 50Mhz bus hızı ve alternate pushpull yap
// 2'şer bit erişim
gpioa_crh.bits.MODE9=GpioMODE_50mhz_out;    // 50mhz out
gpioa_crh.bits.CNF9=GpioCNF_PUPD_in_APP_out;  // alternate pushpull

// 16bit erişim
usart1_brr.b16.low=0x16DA;  // 9600,
rcc_apb2enr.b16.low=0x007d;                      // A,B,C,D,E ve AF enable

/*
Aşağıda STM32 Reset Clock Configurasyon ayarlarını yapan program var,
Programın nasıl yapıldığını gösteren bir örnek.
*/

void
rcc_init(void){
    rcc_cr.bits.HSION=1;
    while(!rcc_cr.bits.HSIRDY);
//Reset SW[1:0], HPRE[3:0], PPRE1[2:0], PPRE2[2:0], ADCPRE[1:0] and MCO[2:0]
    rcc_cfgr.b32&amp;=(u32)0xF8FF0000;
    rcc_cr.b32&amp;=(u32)0xFEF6FFFF;
// HSEBYP bit clear
    rcc_cr.b32&amp;=0xFFFBFFFF;
// PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE bits clear
    rcc_cfgr.b32&amp;=(u32)0xFF80FFFF;
    rcc_cir.b32=0;

	rcc_cr.bits.HSERDY=0;
    rcc_cr.bits.HSEON=1;            // enable
    while(!rcc_cr.bits.HSERDY);      

    rcc_cfgr.bits.HPRE=0;           

    rcc_cfgr.bits.PPRE2=0;
    rcc_cfgr.bits.PPRE1=4;
// 56/8=7Mhz'de çalışsın , acelesi yok
    rcc_cfgr.bits.ADCPRE=3;
    flash_acr.b32&amp;=((u32)0x00000038);
    flash_acr.bits.LATENCY=2;
    flash_acr.bits.PRFTBE=1;        // Prefetch buffer enable, flash'a yazmak için gerekli
// Pllclk=8mhz*7mhz=56mhz
    rcc_cfgr.bits.PLLXTPRE=0;       // xtal'i bölme
    rcc_cfgr.bits.PLLSRC=1;         // PLL'e HSE'yi bağla
    rcc_cfgr.bits.PLLMUL=5;
// pll nable
    rcc_cr.bits.PLLON=1;
    while(!rcc_cr.bits.PLLRDY);
    rcc_cfgr.bits.SW=2;
    while(rcc_cfgr.bits.SWS!=2);
}
/**********************************************************/
/**********************************************************/
/**********************************************************/
</pre>
<p><a href="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_1000.jpg" rel="lightbox[139]"><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/ABCD0006_1000-150x150.jpg" alt="" title="ABCD0006_1000" width="150" height="150" class="alignnone size-thumbnail wp-image-141" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/stm32-ozel-kutuphane/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PIC24-PWM</title>
		<link>http://www.uicroarm.com/pic24-pwm</link>
		<comments>http://www.uicroarm.com/pic24-pwm#comments</comments>
		<pubDate>Fri, 16 Apr 2010 17:59:24 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[PIC24F dsPIC30F dsPIC33F Uygulamaları]]></category>
		<category><![CDATA[16Bit]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c30]]></category>
		<category><![CDATA[dsPIC30F]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[PIC24]]></category>
		<category><![CDATA[PWM]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=137</guid>
		<description><![CDATA[
Bu örneğimizde PWM uygulaması yapacağız. Program aşağıdaki gibidir. 

/*
Aykut ULUSAN
Elektronik Mühendisi
IZMIR

www.uicroarm.com

JP5 ve JP19 on konumda olacak

PWM özelliğini kullanacağız
*/

#include &#60;p24Fxxxx.h&#62;

_CONFIG1(0x3F20)  // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x78EF)	// Dahili fast rc osc enable, xtal uçları boş olacak

// X*10US
void
DLY_10US(unsigned int us){
	while(us--) {
		__asm__ volatile (&#34;repeat #33&#34;);
		__asm__ volatile (&#34;nop&#34;);
	}
}

// 65536ms'ye kadar
void
DLY_MS(unsigned int ms){
	while(ms--){
		DLY_10US(100);
	}
}

volatile unsigned char duty=0;

int
main(void){

	AD1PCFG=0xFFFF;				// portlar dijital
	TRISB = [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/main3.jpg" alt="" title="main" width="295" height="221" class="alignnone size-full wp-image-138" /><span id="more-137"></span></p>
<p>Bu örneğimizde PWM uygulaması yapacağız. Program aşağıdaki gibidir. </p>
<pre class="brush: cpp;">
/*
Aykut ULUSAN
Elektronik Mühendisi
IZMIR

www.uicroarm.com

JP5 ve JP19 on konumda olacak

PWM özelliğini kullanacağız
*/

#include &lt;p24Fxxxx.h&gt;

_CONFIG1(0x3F20)  // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x78EF)	// Dahili fast rc osc enable, xtal uçları boş olacak

// X*10US
void
DLY_10US(unsigned int us){
	while(us--) {
		__asm__ volatile (&quot;repeat #33&quot;);
		__asm__ volatile (&quot;nop&quot;);
	}
}

// 65536ms'ye kadar
void
DLY_MS(unsigned int ms){
	while(ms--){
		DLY_10US(100);
	}
}

volatile unsigned char duty=0;

int
main(void){

	AD1PCFG=0xFFFF;				// portlar dijital
	TRISB = 0x1FFF;
	_LATB14=1;
	_LATB13=1;
	RPOR7bits.RP15R = 18;  // rb15 pwm portu
	T2CON = 0;
	TMR2 = 0;
	PR2 = 255;
	OC1CON = 0x0006;
	OC1RS = duty;			//duty cycle'ı bir reg ile değiştireceğiz.
	T2CON = 0x8000;
	T3CON = 0;
	TMR3 = 0;
	PR3 = 143;
	T3CON = 0x8030;   

	while(1){
		DLY_MS(20);
		OC1RS = ++duty;
	}

	return 0;
}

/*************************************************************/
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/pic24-pwm/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>PIC24-CN interrupt(Buton)</title>
		<link>http://www.uicroarm.com/pic24-cn-interruptbuton</link>
		<comments>http://www.uicroarm.com/pic24-cn-interruptbuton#comments</comments>
		<pubDate>Fri, 16 Apr 2010 17:53:49 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[PIC24F dsPIC30F dsPIC33F Uygulamaları]]></category>
		<category><![CDATA[16Bit]]></category>
		<category><![CDATA[asm16]]></category>
		<category><![CDATA[Buton]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c30]]></category>
		<category><![CDATA[interrupt]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[PIC24]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=135</guid>
		<description><![CDATA[
Bu örneğimizde buton okumaya göre karaşimsek led akış hızını değiştireceğiz. Buton okuma işini ise interrupt ile
gerçekleştiriyoruz. Umarım faydalı olur.

/*
Buton okumayla karaşimşek hızını değiştirme

Aykut ULUSAN,Elektronik Mühendisi,IZMIR
www.uicroarm.com 

Uygulama boardu : EX16L-A (16bit development board)
www.expkits.com'dan temin edebilirsiniz. 

Not :
1)Bu programda tuş okuma için CN interrupt kullandım ama kenar algılamalı interrpt kullanırsanız
daha anlaşılır olur.
2) Karşimşek ledlerindeki RB4'ün yanması için [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/main2.jpg" alt="" title="main" width="295" height="221" class="alignnone size-full wp-image-136" /><span id="more-135"></span></p>
<p>Bu örneğimizde buton okumaya göre karaşimsek led akış hızını değiştireceğiz. Buton okuma işini ise interrupt ile<br />
gerçekleştiriyoruz. Umarım faydalı olur.</p>
<pre class="brush: cpp;">
/*
Buton okumayla karaşimşek hızını değiştirme

Aykut ULUSAN,Elektronik Mühendisi,IZMIR
www.uicroarm.com 

Uygulama boardu : EX16L-A (16bit development board)
www.expkits.com'dan temin edebilirsiniz. 

Not :
1)Bu programda tuş okuma için CN interrupt kullandım ama kenar algılamalı interrpt kullanırsanız
daha anlaşılır olur.
2) Karşimşek ledlerindeki RB4'ün yanması için SWDIP6'daki rb4 on konumuna geterilmeli
*/

/*
Çalışması RA0'a basılıp çekildiğinde karaşimşek hız değişir
*/

#include &lt;p24Fxxxx.h&gt;	// burada PIC24F serisi kullanacağımızı ifade ettik ama işlemciyi MPLAB içinde seçilir
_CONFIG1(0x3F20)  // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x78EF)	// Dahili fast rc osc enable, xtal uçları boş olacak

void __attribute__((interrupt, no_auto_psv)) _CNInterrupt(void);
void DLY_10US(unsigned int us);
void DLY_MS(unsigned int ms);

unsigned char asm_reg,akis_hizi;

int
main(void){
	PORTA=0;			// latch'leri temizle
	INTCON1 = 0;
  	INTCON2 = 0;
	AD1PCFG=0xFFFF;		// portlar dijital
	TRISA=1; asm(&quot;NOP&quot;);		// Ra0 giriş
	TRISB=0;
	IFS1bits.CNIF=0;
	CNPU1bits.CN2PUE=1;
	CNEN1bits.CN2IE=1;
	IEC1bits.CNIE=1;
	asm_reg=0x01;				// default olarak RB0=1
	akis_hizi=35;
	while(1) {
			while(asm_reg!=0x10){
				PORTB=asm_reg;
				DLY_MS(akis_hizi);
				asm_reg&lt;&lt;=1;
			}
			while(asm_reg!=0x1){
				PORTB=asm_reg;
				DLY_MS(akis_hizi);
				asm_reg&gt;&gt;=1;
			}
			if(!_CN2IE&amp;&amp;_RA0){
				_CNIF=0;
  				_CN2IE=1;
  				_CNIE=1;
			}
	}
	return 0;
}

void
__attribute__((interrupt, no_auto_psv)) _CNInterrupt(void){
  _CNIF=0;
  _CN2IE=0;
  _CNIE=0;
  if(akis_hizi==35) akis_hizi=100;
  else akis_hizi=35;
  while(!_RA0);
}

// X*10US
void
DLY_10US(unsigned int us){
	while(us--) {
		__asm__ volatile (&quot;repeat #33&quot;);
		__asm__ volatile (&quot;nop&quot;);
	}
}

// 65536ms'ye kadar
void
DLY_MS(unsigned int ms){
	while(ms--){
		DLY_10US(100);
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/pic24-cn-interruptbuton/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PIC24-LED(Karasimsek)</title>
		<link>http://www.uicroarm.com/pic24-ledkarasimsek</link>
		<comments>http://www.uicroarm.com/pic24-ledkarasimsek#comments</comments>
		<pubDate>Sun, 11 Apr 2010 08:54:12 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[PIC24F dsPIC30F dsPIC33F Uygulamaları]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c30]]></category>
		<category><![CDATA[dsPIC30F]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[PIC24F]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=133</guid>
		<description><![CDATA[
Merhaba,
Daha önce söylediğim gibi önceden hazırladığım küçük örnek programları sırasız olarak paylaşacağımı söylemiştim. Şimdi de led uygulamaları kapsamına giren karaşimsek led uygulamasının programını ekliyorum. Özellikle yeni başlayanlar için faydalı olacaktır.

/*
RB0-RB4 arasında karaşimşek led uygulaması

Aykut ULUSAN,Elektronik Mühendisi,IZMIR
www.uicroarm.com 

Uygulama boardu : EX16L-A (16bit development board)
www.expkits.com'dan temin edebilirsiniz.
*/

#include &#60;p24Fxxxx.h&#62;		// burada PIC24F serisi kullanacağımızı ifade ettik ama işlemciyi MPLAB [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/main1.jpg" alt="" title="main" width="295" height="221" class="alignnone size-full wp-image-134" /><span id="more-133"></span></p>
<p>Merhaba,<br />
Daha önce söylediğim gibi önceden hazırladığım küçük örnek programları sırasız olarak paylaşacağımı söylemiştim. Şimdi de led uygulamaları kapsamına giren karaşimsek led uygulamasının programını ekliyorum. Özellikle yeni başlayanlar için faydalı olacaktır.</p>
<pre class="brush: cpp;">
/*
RB0-RB4 arasında karaşimşek led uygulaması

Aykut ULUSAN,Elektronik Mühendisi,IZMIR
www.uicroarm.com 

Uygulama boardu : EX16L-A (16bit development board)
www.expkits.com'dan temin edebilirsiniz.
*/

#include &lt;p24Fxxxx.h&gt;		// burada PIC24F serisi kullanacağımızı ifade ettik ama işlemciyi MPLAB içinde seçilir
_CONFIG1(0x3F20)  // JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x78EF)	// Dahili fast rc osc enable, xtal uçları boş olacak

//Karşimşek ledlerindeki RB4'ün yanması için SWDIP6'daki rb4 on konumuna geterilmeli

#define NOP() 		{__asm__ volatile (&quot;nop&quot;);}
#define CLRWDT() 	{__asm__ volatile (&quot;clrwdt&quot;);}
#define SLEEP() 	{__asm__ volatile (&quot;pwrsav #0&quot;);}
#define IDLE() 		{__asm__ volatile (&quot;pwrsav #1&quot;);}

#define akis_hizi	35

void DLY_10US(unsigned int us);
void DLY_MS(unsigned int ms);

unsigned char asm_reg;

int
main(void){

    OSCCONbits.COSC=0;	// dahili osc
	CLKDIV=0;
	PORTA=0;			// latch'leri temizle
	AD1PCFG=0xFFFF;		// portlar dijital
	TRISA=0; asm(&quot;NOP&quot;);		// A portu çıkış
	TRISB=0;
	asm_reg=0x01;				// default olarak RB0=1
	while(1) {
		while(asm_reg!=0x10){
			PORTB=asm_reg;
			DLY_MS(akis_hizi);
			asm_reg&lt;&lt;=1;
		}
		while(asm_reg!=0x1){
			PORTB=asm_reg;
			DLY_MS(akis_hizi);
			asm_reg&gt;&gt;=1;
		}
	}

}

// X*10US
void
DLY_10US(unsigned int us){
	while(us--) {
		__asm__ volatile (&quot;repeat #165&quot;);
		__asm__ volatile (&quot;nop&quot;);
	}
}

// 65536ms'ye kadar
void
DLY_MS(unsigned int ms){
	while(ms--){
		DLY_10US(100);
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/pic24-ledkarasimsek/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PIC24-ADC0</title>
		<link>http://www.uicroarm.com/pic24-adc0</link>
		<comments>http://www.uicroarm.com/pic24-adc0#comments</comments>
		<pubDate>Sun, 11 Apr 2010 08:45:33 +0000</pubDate>
		<dc:creator>Aykut</dc:creator>
				<category><![CDATA[PIC24F dsPIC30F dsPIC33F Uygulamaları]]></category>
		<category><![CDATA[16Bit]]></category>
		<category><![CDATA[ADC]]></category>
		<category><![CDATA[asm16]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c30]]></category>
		<category><![CDATA[dsPIC30]]></category>
		<category><![CDATA[microchip]]></category>
		<category><![CDATA[PIC24]]></category>

		<guid isPermaLink="false">http://www.uicroarm.com/?p=131</guid>
		<description><![CDATA[
Merhaba,
Aşağıya ADC0&#8242;ın nasıl kullanıldığı ile ilgili programı ekliyorum. Umarım faydalı olur. 

/*
RA0=pot1 üzerindeki voltajı portb üzerinde binari olarak gösterelim
RB0-RB9 çıkış
SWDIP6 üzerinde xtal uçları ve RB4 on olacak
SWDIP4 üzerinde pot1 on olacak
xtal 10Mhz
işlemci 24f64ga002
*/

#include &#60;p24Fxxxx.h&#62;

_CONFIG1(0x3F20)  	// JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x7BAE)	// 10mhz xtal (HS), HSPLL enable,

typedef unsigned char 	u8;
typedef unsigned int 	u16;

void adc_read(u8 kanal);
void [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.uicroarm.com/wp-content/dosyalar/2010/04/main.jpg" alt="" title="main" width="295" height="221" class="alignnone size-full wp-image-132" /><span id="more-131"></span></p>
<p>Merhaba,<br />
Aşağıya ADC0&#8242;ın nasıl kullanıldığı ile ilgili programı ekliyorum. Umarım faydalı olur. </p>
<pre class="brush: cpp;">
/*
RA0=pot1 üzerindeki voltajı portb üzerinde binari olarak gösterelim
RB0-RB9 çıkış
SWDIP6 üzerinde xtal uçları ve RB4 on olacak
SWDIP4 üzerinde pot1 on olacak
xtal 10Mhz
işlemci 24f64ga002
*/

#include &lt;p24Fxxxx.h&gt;

_CONFIG1(0x3F20)  	// JTAG, WDF, flash memory'ye yazma kullanılmayacak
_CONFIG2(0x7BAE)	// 10mhz xtal (HS), HSPLL enable,

typedef unsigned char 	u8;
typedef unsigned int 	u16;

void adc_read(u8 kanal);
void DLY_10US(u16 us);
void DLY_MS(u16 ms);

int
main(void){
	while (OSCCONbits.COSC!=3);
	while(!OSCCONbits.LOCK);
	AD1PCFG=0xFFFE;				// AN0 analog, diğerleri dijital
	TRISB=0;
	TRISA=(u16)0x1;				// RA0 giriş
	AD1CON1=0x00E0;				// auto start ile başlatacağız
	AD1CON2=0;
	AD1CON3=0;
// TAD = TCY * (ADCS +1)
	AD1CON3bits.SAMC=17;			// acelemiz yok,
	AD1CON3bits.ADCS=16;
	AD1CSSL=0;					// scan modu off
	AD1CON1bits.ADON=1;
	DLY_MS(1);
	while(1){
		adc_read(0);				// kanal 0'ı oku
		LATB=ADC1BUF0;
		DLY_MS(100);				// 100ms'de 1 oku ve yaz
	};

	return 0;
}

void
adc_read(u8 kanal){
  AD1CHS = kanal;      			// kanalı ayarla
  AD1CON1bits.ASAM = 1;         // start
  while(!IFS0bits.AD1IF);      	// çevrim bitinceye kadar bekle
  AD1CON1bits.ASAM = 0;       	// stop
  IFS0bits.AD1IF = 0;          	// flag clear
}    

void
DLY_10US(u16 us){
	while(us--) {
		__asm__ volatile (&quot;repeat #165&quot;);
		__asm__ volatile (&quot;nop&quot;);
	}
}

// 65536ms'ye kadar
void
DLY_MS(u16 ms){
	while(ms--){
		DLY_10US(100);
	}
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.uicroarm.com/pic24-adc0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
