PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Analog - Bộ nhớ - Bảo mật - Cảm biến nhiệt độ Thảo luận việc sử dụng và thay thế các sản phẩm Analog, Memory, KEELOG và cảm biến nhiệt độ của Microchip cho các thiết kế

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 01-03-2008, 10:57 PM   #1
photoman
Nhập môn đệ tử
 
Tham gia ngày: Jul 2005
Bài gửi: 9
:
Angry Vấn đề khó hiểu khi dùng ADC của ds30F4011

Em có một chương trình sử dụng chân AN8 của dsPic30f4011 như sau :
Code:
#define Fcy 	16000000 // Hz
#define Fad		8000000 //

	_FOSC(CSW_FSCM_OFF & FRC_PLL8);		//Clock = 64 MHz
	_FWDT(WDT_OFF);
	_FBORPOR(MCLR_EN & PBOR_OFF&PWMxL_ACT_HI&PWMxH_ACT_HI);
	_FGS(CODE_PROT_OFF);

unsigned int adc;

void Init_Timer1(void)
{
   TMR1=0;
   PR1=25000; // 100ms ;   PR1=(_Fcy/prescale)*time;
   _T1IF=0;
   T1CON=0x8020;
   _T1IE=1;
}

void _ISR _T1Interrupt(void)
{
  _T1IF=0;
}

void _ISR_ADCInterrupt(void)
{
  adc=ADCBUF8;
  _ADIF=0;
}

void init_adc()
{
  TRISBbits.TRISB8=1; 	// dat pin la input
  ADPCFGbits.PCFG8=0; 	// dat che do analog cho chan
  
  ADCON1bits.ASAM=  1; 	// chon che do chuyen doi tu dong.
  ADCON1bits.SSRC=  7; 	// tu dong chuyen doi theo chu ky
  ADCON1bits.FORM=  0; 	// dang du lieu chuyen doi la integer
  ADCON1bits.ADSIDL=0; 	// ngung hoat dong khi o che do IDEL
 
  ADCON2bits.VCFG=0;  	// chon dien ap chuan la nguon cung cap.
  ADCON2bits.CSCNA=0; 	// khong scan cac dau vao kenh 0
  ADCON2bits.CHPS=0;  	// chon kenh 0 de chuyen doi
  ADCON2bits.BUFS=0;  	// chi co tac dung khi BUFM=1
  ADCON2bits.SMPI=0;  	// ngat xuat hien sau moi lan chyen doi
  ADCON2bits.BUFM=0;  	// thanh ghi dem o che do 16 bit
  ADCON2bits.ALTS=0;  	// chon MUX A

  ADCON3bits.ADCS=3; 	// chon chu ky chuyen doi Tad=2*Tcy
  ADCON3bits.ADRC=0; 	// chon nguon clock A/D la tu xung he thong
  ADCON3bits.SAMC=11; 	// chon thoi gian lay mau la 10 Tad

  ADCHSbits.CH123NB=0; 	// chon dau vao am cho cac kenh 1,2,3 khi su dung MUXB
  ADCHSbits.CH123SB=0; 	// chon dau vao duong cho cac kenh 1,2,3 khi su dung MUXB  
  ADCHSbits.CH0NB=0;   	// chon dau vao am cho kenh 0 khi su dung MUXB
  ADCHSbits.CH0SB=0;  	// chon dau vao duong cho kenh 0 khi dung MUXB
  ADCHSbits.CH123NA=0; 	// chon dau vao am cho cac kenh 1,2,3 khi su dung MUXA
  ADCHSbits.CH123SA=0;	// chon dau vao duong cho cac kenh 1,2,3 khi su dung MUXA
  ADCHSbits.CH0SA=8;  	// chon dau vao duong cua kenh 0 la AN8
  ADCHSbits.CH0NA=1;  	// chon dau vao am cua kenh 0 la AN1
  
  ADCSSL =0;	      	// khong cho phep quet tat ca cac dau vao


  
  _ADIF=0;                     // xoa co ngat ADC
  _ADIE=1;			// cho phep ngat ADC
  _ADON=1;			// module ADC san sang hoat dong 
}



int main(void) 
{
 init_adc();
    _ADIE=1;
}

Chương trình tuy nhiên không hiểu sao, giá trị adc thu được luôn cố định ở một giá trị . Hơn nữa vấn đề sảy ra tương tự với AN7. Em đã thử với AN0 thì vẫn bình thường . Mong các bác giải đáp. thanks.

thay đổi nội dung bởi: namqn, 01-03-2008 lúc 11:04 PM.
photoman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 11:34 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam