Haberler:

Eposta uyarılarını yanıtlamayınız ( ! ) https://bit.ly/2J7yi0d

Ana Menü

16F690 ADC Problemi.

Başlatan fatihinanc, 13 Haziran 2010, 21:29:05

fatihinanc

Arkadaşlar bugün 16F690 ile ile bir ADC denemesi yapayim dedim. FxDev'in Hi-Tech anlatan dökümanından gidiyorum. fakat 877 değil de 690 ile yapayim dedim hem yazmaçlarını da daha iyi öğrenmiş olurum dedim fakat bi türlü çalıştıramadım. yani bir kanal çalışıyor ama diğer kanaldan dijital çıkış okuyamıyorum. bir de mesela AN0 diye okuttuğum gerilim değeri AN1 diye gözküyor LCD de.
saat periyodundan(ADCS2:0)kaynaklanabilir gibi geliyor. çünkü yazmaçların değerlerini değiştirdiğimde gerilimlerde de değişmeler oluyor.

Kod:
#include <htc.h>
#include "delay.h"
#include "lcd.h"
__CONFIG(XT & WDTDIS & MCLREN);
void
main(void)
{
	int AN0;
	int AN1;
	
	TRISA=0X02;
	TRISB=0X00;
	TRISC=0X00;
	PORTA=0X00;
	PORTB=0X00,
	PORTC=0X00;
	
	ANSEL=0X03;
	ANSELH=0;
	
	ADCS0=0;
	ADCS1=1;
	ADCS2=0;
	
	VCFG=0;
	
	ADFM=1;
	ADON=1;
	
	ADIF=0;
	ADIE=1;
	PEIE=1;
	GIE=1;
	
	lcd_init();
	lcd_yaz("AN0=");
	lcd_gotoxy(2,1);
	lcd_yaz("AN1=");
	
	while (1)
	{
		CHS0=0;
		CHS1=0;
		CHS2=0;
		CHS3=0;
		DelayUs(25);
		GODONE=1;
		
		while(!GODONE);
			AN0=(int)((ADRESH*256+ADRESL)/2);
			lcd_gotoxy(1,5);
			veri_yolla(AN0/1000+48);
			veri_yolla((AN0%1000)/100+48);
			veri_yolla('.');
			veri_yolla((AN0%100)/10+48);
			veri_yolla(AN0%10+48);
			veri_yolla('V');
			
		CHS0=1;
		CHS1=0;
		CHS2=0;
		CHS3=0;
		DelayUs(25);
		GODONE=1;
			
		while(!GODONE);
			AN1=(int)((ADRESH*256+ADRESL)/2);
			lcd_gotoxy(2,5);
			veri_yolla(AN1/1000+48);
			veri_yolla((AN1%1000)/100+48);
			veri_yolla('.');
			veri_yolla((AN1%100)/10+48);
			veri_yolla(AN1%10+48);
			veri_yolla('V');
			
		}
		
	}
static void interrupt led(void)
	{
		GIE=0;
		RB4=~RB4;
		ADIF=0;
		GIE=1;
	}


Şema :


F
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

acemi2010

Merhaba;
TRISA=0X03;
yapıp deneyebilirmisin?

Timuçin

fatihinanc

@acemi 2010 teşekkür ederim.
kodu düzeltince çalıştı fakat şu an bunu nasıl göremedim diye şaşkınlık geçiriyorum.
normalde portu çıkış olarak yöndirmemişsiniz diye hata verirdi ama. portları analog seçtiğimden
dolayı olabilir. dün o kadar uğraştım. sormun cevabı 1 bit miş...
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)