Picproje Elektronik Sitesi

DERLEYİCİLER => Hi-Tech => Konuyu başlatan: fatihinanc - 13 Haziran 2010, 21:29:05

Başlık: 16F690 ADC Problemi.
Gönderen: fatihinanc - 13 Haziran 2010, 21:29:05
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 :
(http://img689.imageshack.us/img689/3562/adc.jpg)

F
Başlık: Ynt: 16F690 ADC Problemi.
Gönderen: acemi2010 - 14 Haziran 2010, 19:18:15
Merhaba;
TRISA=0X03;
yapıp deneyebilirmisin?

Timuçin
Başlık: Ynt: 16F690 ADC Problemi.
Gönderen: fatihinanc - 14 Haziran 2010, 22:28:06
@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ş...