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ế

Trả lời
 
Ðiều Chỉnh Xếp Bài
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
Old 02-03-2008, 12:13 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Chỉ có chương trình thì rất khó nhận xét lỗi nằm ở đâu. Bạn nên cho biết các chân liên quan đến module ADC kết nối ra sao.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2008, 12:21 AM   #3
photoman
Nhập môn đệ tử
 
Tham gia ngày: Jul 2005
Bài gửi: 9
:
Chân AN1/VREF- : để hở không nối vào nguồn nào;
Chân AN8 : được nối trực tiếp vào chân giữ của biến trở.
Các nguồn AVdd,Avss được nối với nguồn cung cấp (lấy theo đường usb).

vấn đề là khi dùng AN0 em cũng làm như thế mà vẫn đo được ( do là cùng mạch KIT)
photoman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2008, 01:48 AM   #4
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi photoman View Post
Chân AN1/VREF- : để hở không nối vào nguồn nào;
Chân AN8 : được nối trực tiếp vào chân giữ của biến trở.
Các nguồn AVdd,Avss được nối với nguồn cung cấp (lấy theo đường usb).

vấn đề là khi dùng AN0 em cũng làm như thế mà vẫn đo được ( do là cùng mạch KIT)
Phần cứng của bạn không ổn khi dùng với code phía trên. Mạch và code của bạn khi dùng với AN0 ra sao. Bạn đã đọc tutorial của tôi về ADC chưa (tutorial 5 cho dsPIC)?

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2008, 10:17 PM   #5
photoman
Nhập môn đệ tử
 
Tham gia ngày: Jul 2005
Bài gửi: 9
:
Đây là sở đồ mạch kit của em. khi dùng AN0 không có gì khác biệt.Nhưng gí trị thu đc còn thay đổi tương ứng với vặn biến trở, đằng này dùng AN8 thì chả có gì thay đổi mà cái giá trị nó trả về là trên trời rơi xuống và không đổi.Mong bác giải thích
Hình Kèm Theo
File Type: jpg dsPIC30F4011.jpg (50.4 KB, 213 lần tải)

thay đổi nội dung bởi: namqn, 02-03-2008 lúc 10:49 PM.
photoman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2008, 11:22 PM   #6
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi photoman View Post
Đây là sở đồ mạch kit của em. khi dùng AN0 không có gì khác biệt.Nhưng gí trị thu đc còn thay đổi tương ứng với vặn biến trở, đằng này dùng AN8 thì chả có gì thay đổi mà cái giá trị nó trả về là trên trời rơi xuống và không đổi.Mong bác giải thích
Sơ đồ của bạn vẫn chưa thể hiện điện áp analog được đưa vào các chân AN0, AN7, và AN8 ra sao. Bạn cần lưu ý, tất cả các cặp chân Vcc, GND đều cần ít nhất một tụ decoupling 104 đặt càng gần chúng càng tốt.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-03-2008, 11:03 PM   #7
photoman
Nhập môn đệ tử
 
Tham gia ngày: Jul 2005
Bài gửi: 9
:
hì. điện áp đưa vào của em chỉ là cắm con biến trở bên ngoài thôi. các chân analog đều để dạng jump thôi vì thế em không vẽ vào đây.Nhưng em kô hiểu sao ko sử dụng đc AN8, AN7.Mong bác chỉ điểm.ở đây e chưa nói đến vấn đề đúng hay không mà là không đo được cái gì cả.
photoman vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 04-03-2008, 02:55 AM   #8
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi photoman View Post
hì. điện áp đưa vào của em chỉ là cắm con biến trở bên ngoài thôi. các chân analog đều để dạng jump thôi vì thế em không vẽ vào đây.Nhưng em kô hiểu sao ko sử dụng đc AN8, AN7.Mong bác chỉ điểm.ở đây e chưa nói đến vấn đề đúng hay không mà là không đo được cái gì cả.
Điều quan trọng là bạn nối biến trở ra sao. Nếu bạn đưa điểm giữa của biến trở vào AN0, hay AN7, hay AN8, còn hai chân còn lại lần lượt nối vào VDD và GND, thì việc bạn không nối gì đến chân AN1/Vref- và viết code như vậy tất sẽ dẫn đến việc đọc được các giá trị ngẫu nhiên.

Nếu bạn nối biến trở như tôi đã nói ở trên thì bạn nên nối chân AN1/Vref- đến Avss và không sửa code gì cả (AN1/Vref- lúc này đóng vai trò Vref- cho bộ sample-and-hold CH0). Cách thứ hai là bạn sửa code lại để ADCHSbits.CH0NA=0; (như vậy chân - của bộ sample-and-hold CH0 sẽ nối vào AVss) và không thay đổi thêm gì ở phần cứng.

Tại sao bạn không bắt đầu với tutorial của tôi và chỉnh sửa lại theo nhu cầu của bạn?

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2009, 07:46 PM   #9
TANDEM
Đệ tử 2 túi
 
Tham gia ngày: Aug 2008
Bài gửi: 40
:
Em đang bị mắc về ADC, nhờ các huynh chỉ giáo: Việc là em muốn đọc 2 giá trị ADC. Ở AN0 thì xuất ra Port_B còn ở AN1 thì xuất ra Port_D đối với PICF887A. Vậy em phải làm thế nào?
TANDEM vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-05-2009, 11:17 PM   #10
cuongthinh
Đệ tử 2 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 34
:
He, bạn cho adc=ADBUF8 thi làm gì mà chẳng thu được tín hiệu kô đổi. phải cho adc=ADCBUF0 chứ. kết quả chuyển đổi đưa vào đấy cơ mà
cuongthinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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à 09:35 AM.


Đượ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