PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > dsPIC - Bộ điều khiển tín hiệu số 16-bit

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

dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 25-10-2009, 04:19 PM   #1
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Gặp vấn đề ADC trong Dspic30F4011

EM đang làm về ADC trong Dspic thì gặp vấn đề giá trị của ADC ko biến đổi. Chương trình đã theo mẫu của mọi người đã làm chạy nhưng ko ăn thua :
chương trình ADC của em trong phần biến đổi ADC là :
void Init_ADC10(void) {
ADCON1bits.FORM = 0;
ADCON1bits.SSRC = 7;
ADCON1bits.ASAM = 1;
//viec chuyen doi A/D
ADCON2 = 0x0000;
ADCHS = 0x0000 ; //Kenh 0 doc tin hieu giua AN8 va AVss
ADCSSL =0x0000; //Khong quet cac ngo vao
ADCON3 = 0x0103; //Dung 1 TAD cho lay mau, dung clock he thong,
// TMR3 = 0; //Xoa thanh ghi dem cua Timer 3
// PR3 = 0x03E8; //Nguong delay cho TMR3 la khoang 1 ms
// T2CON = 0x8010; //Prescale = 1:8, bat cho TMR3 chay

_ADIF = 0; //Xoa co ngat ADC
_ADIE = 1; //Cho phep ngat ADC
_ADON = 1; //Bat module ADC
_ASAM = 1; //Khoi dong che do tu dong lay mau
} //Khoi dong che do tu dong lay mau

void _ISR _ADCInterrupt(void)
{
ADCValue = ADCBUF0;
_ADIF = 0;

}

Hiện thị lên LCD. Giá trị trên LCD cứ bằng 0 hoài. Em sợ ngắt của ADC ko xẩy ra. Vì đã có ngắt của Timer 1 rồi (Để tạo delay). Các pác giúp em mới!
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 04:57 PM   #2
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
ADCON3 = 0x0103; //Dung 1 TAD cho lay mau, dung clock he thong,
Cái này ko bit mình tính kiểu gì? sao lại có cái tận dùng 31 TAD? MOng các pác giải thích dùm!
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 05:14 PM   #3
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Em thấy nó sai ở chỗ thanh ghi : ADCCON1 !
Nếu em để ADCON1 = 0x0040 thì ko được? và 0x0060 cũng ko được?
Mà em phải để là ADCON1 = 0x00E0 thì mới được?
Mong các pác giải thích dùm!
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 09:04 PM   #4
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Bạn đã cấu hình _ASAM = 1 và Ở thanh ghi ADCON1 = 0x00E0 cấu hình cho SSRC<2:0> = 111, tức là chế độ tự động chuyển đổi ( auto convert ).
Bạn nên đọc tài liệu Dspic30F_reference_manual phần ADC,
tungnh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 09:40 PM   #5
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Cho em hỏi là ADCON3 đựoc tính như thế nào? Để tốc độ chuyển ADC cần phải đảm bào những gì?
Pác có thể cho em cái tài liệu Dspic30F_reference_manual đựoc ko?
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 09:43 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 biendt View Post
Cho em hỏi là ADCON3 đựoc tính như thế nào? Để tốc độ chuyển ADC cần phải đảm bào những gì?
Pác có thể cho em cái tài liệu Dspic30F_reference_manual đựoc ko?
Tài liệu của dsPIC thì cứ vào Microchip mà download, việc gì phải đi xin. Link cho tài liệu nói trên ở đây:
http://ww1.microchip.com/downloads/e...Doc/70064E.pdf

Tôi luôn luôn đề cập đến các tài liệu tham khảo trong các tutorial, đáng buồn là có nhiều người không quan tâm đến những thông tin như vậy.

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 25-10-2009, 10:49 PM   #7
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Anh nam cho em hỏi là tại sao trong khi tính toán trong Dspic lại không đúng vậy anh?
Em lấy ví dụ trong mạch đo nhiệt độ với ADC 10 bit.
t = ((ADCValue-559)*49)/100

Vói giá trị ADC đo đựoc là 832 thì giá trị t = 125 như vậy là ko đúng với công thức tính toán! Giá trị này bị lệch (Giá trị t thực của nó khi ADC = 832 là t = 134 mới đún) Mong anh chỉ giáo!
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2009, 11:06 PM   #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 biendt View Post
Anh nam cho em hỏi là tại sao trong khi tính toán trong Dspic lại không đúng vậy anh?
Em lấy ví dụ trong mạch đo nhiệt độ với ADC 10 bit.
t = ((ADCValue-559)*49)/100

Vói giá trị ADC đo đựoc là 832 thì giá trị t = 125 như vậy là ko đúng với công thức tính toán! Giá trị này bị lệch (Giá trị t thực của nó khi ADC = 832 là t = 134 mới đún) Mong anh chỉ giáo!
Bạn chưa cho biết đang dùng cảm biến gì, độ chính xác ra sao, nên rất khó nhận xét.

Module ADC chỉ chuyển đổi giá trị ngõ vào tương tự thành giá trị số tương ứng, giá trị này tùy thuộc vào giá trị điện áp nguồn cấp cho module ADC và điện áp tham chiếu (nếu khác với điện áp nguồn của module). Việc tính toán thế nào còn tùy vào quan hệ giữa đại lượng đo và điện áp ngõ ra của cảm biến, độ chính xác của cảm biến, độ trôi nhiệ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 26-10-2009, 04:56 AM   #9
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Em dùng cảm biến LM335 (Cảm biến nhiệt). Em hiện thị cả kết quả ADC đọc được lên LCD. Nhưng thấy kết quả tính ra nhiệt độ tử giá trị ADC này lại khác so với giá trị tính toán bằng tay của mình (Tức là CPU tình sai trong công thức t = ((ADCValue-559)*49)/100)
Nếu mà em thay đổi biểu thức trên bằng : t = ((ADCValue-559)*0.49 thì giá trị của t nhẩy lên 1 số rất lớn so với giá trị ADC đo được? em khai báo biến t là unsigned int
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-10-2009, 09:08 AM   #10
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 biendt View Post
Em dùng cảm biến LM335 (Cảm biến nhiệt). Em hiện thị cả kết quả ADC đọc được lên LCD. Nhưng thấy kết quả tính ra nhiệt độ tử giá trị ADC này lại khác so với giá trị tính toán bằng tay của mình (Tức là CPU tình sai trong công thức t = ((ADCValue-559)*49)/100)
Nếu mà em thay đổi biểu thức trên bằng : t = ((ADCValue-559)*0.49 thì giá trị của t nhẩy lên 1 số rất lớn so với giá trị ADC đo được? em khai báo biến t là unsigned int
Cơ sở nào để bạn kết luận dsPIC tính sai?

Bạn có đo giá trị điện áp ngõ vào và giá trị điện áp nguồn bằng một volt kế chính xác cao hay không? Bạn có biết rằng ứng với nhiệt độ 25 độ C, LM335 có thể cho ra điện áp từ 2.92 đến 3.04 V hay không? Bạn có biết LM335 chưa được chuẩn hóa có thể có sai số nhiệt độ đến 9 độ C trong dải nhiệt độ cho phép hay không?

Không rõ bạn lấy công thức trên ở đâu? Bạn có hiểu rõ công thức đó hay không?

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 26-10-2009, 12:44 PM   #11
biendt
Đệ tử 1 túi
 
Tham gia ngày: Sep 2009
Bài gửi: 21
:
Em nhầm trong code một chút anh à! Trong ngắt ADC lại bật cho ADC hoạt động! Em sửa lại rồi và OK!
biendt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-10-2009, 07:27 PM   #12
tungnh
Đệ tử 5 túi
 
Tham gia ngày: Sep 2007
Bài gửi: 94
:
Trích:
Nguyên văn bởi biendt View Post
Em nhầm trong code một chút anh à! Trong ngắt ADC lại bật cho ADC hoạt động! Em sửa lại rồi và OK!
Hãy bắt đầu làm việc với Pic thông qua các tutorial của anh Nam và đọc kỹ datasheet , sẽ hiệu quả hơn rất nhiều.
tungnh 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à 04:27 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