View Single Post
Old 17-12-2008, 09:23 PM   #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 han_nang_008 View Post
bác namqn có thể nói rõ hơn khi mình dùng nhiều hơn 1 chân ADC, bác có thể viết 1 đoặn ví dụ cụ thể dc ko ah.
Ví dụ dùng AN0 và AN6, chân AN0 lấy tín hiệu từ triết áp để điều khiển tốc độ động cơ, còn chân AN6 lấy tín hiệu dòng phản hồi của động cơ, rồi hiện thì lên LCD chẳng han,thì cấu hình như nào, tốc độ lấy mẫu như nào thì phù hợp ah, với AN0 thì dùng PWM chấm dứt lấy mẫu, còn với AN6 mình dùng TIMER3 chấm dứt lấy mẫu có hợp lý ko anh, ADCHS mình khai báo như nào ah kết quả chuyển đổi từ 2 chân trên mình lấy ở đâu ra ah, có phải từ ADCBUF0 và ADCBUF6 ko bác
EM hỏi thêm bác đoặn này
bit 5-2 SMPI<3:0>: Sample/Convert Sequences Per Interrupt Selection bits
1111 = Interrupts at the completion of conversion for each 16th sample/convert sequence
1110 = Interrupts at the completion of conversion for each 15th sample/convert sequence
.....
0001 = Interrupts at the completion of conversion for each 2nd sample/convert sequence
0000 = Interrupts at the completion of conversion for each sample/convert sequence
cái này có phải lựa chon ngắt xảy ra sau 1 đến 16 lần chuyển đổi xong, hay ngắt khi lấy mẫu 1 đến 16 lần rồi chuyển đôi.
Em thấy cái thứ nhất có vẻ đúng hơn, có phải ko hả bác
Mong bác giúp đỡ em
Bạn cần tham khảo hình 20-1 trong datasheet (hay hình 17-1 trong tài liệu "dsPIC30F Family Reference Manual") về cách thức kết nối các ngõ vào đến các bộ sample-and-hold (S/H), và xem thêm các khả năng sử dụng các bộ multiplexer A và B.

Tôi không có thói quen dùng hàm thư viện của MPLAB C Compiler for dsPIC, do đó tôi chỉ nêu những thay đổi đối với các thanh ghi liên quan đến module ADC, cho trường hợp ví dụ của bạn, sử dụng AN0 và AN6.

Dựa vào hình vẽ 20-1 trong datasheet, có thể thấy để lấy mẫu các ngõ vào AN0 và AN6, cần thiết lập để kênh S/H số 0 (CH0) sử dụng AN6, và kênh S/H số 1 (CH1) sử dụng AN0. Để làm việc này, thanh ghi ADCHS sẽ được thiết lập là 0x0006 (bạn xem "dsPIC30F Family Reference Manual" về ý nghĩa của các trường trong thanh ghi này). Đồng thời, các bit CHPS<1:0> trong thanh ghi ADCON2 cần được thiết lập là '01' để việc chuyển đổi được thực hiện cho CH0 và CH1. Tất nhiên, thanh ghi ADPCFG cũng cần cập nhật để các bit 6 và 0 là '0' (do đó các chân AN6 và AN0 sẽ là các chân analog).

Bạn có thể dùng chế độ tự động lấy mẫu, thay vì chọn một trong các nguồn tín hiệu chấm dứt lấy mẫu.

ADCBUF chỉ là một bộ đệm được lần lượt điền các kết quả vào, không có chuyện ánh xạ kết quả của AN0 vào ADCBUF0, và của AN6 vào ADCBUF6. Tôi chân thành đề nghị bạn đọc mục 17 của tài liệu "dsPIC30F Family Reference Manual", có rất nhiều ví dụ với hình minh họa về cách sử dụng bộ đệm ADCBUF. Câu hỏi của bạn về field SMPI<3:0> cũng được trả lời rõ trong phần này, theo như ý đầu tiên của bạn: ngắt sau 1 đến 16 chu kỳ lấy mẫu/chuyển đổi.

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