View Single Post
Old 19-03-2009, 02:50 AM   #3
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 conglong View Post
Thầy Nam cho em hỏi là trong file p30f2010.h của phần mềm mplap C30 có đoạn họ định nghĩa về 16 buffer chứa kết quả tạm thời của ADC là :
" extern volatile unsigned int ADCBUF0 __attribute__((__sfr__));
extern volatile unsigned int ADCBUF1 __attribute__((__sfr__));
extern volatile unsigned int ADCBUF2 __attribute__((__sfr__));
extern volatile unsigned int ADCBUF3 __attribute__((__sfr__));
.........."
vậy ở đây __attribute__((__sfr__)) có nghĩa là gì hả thầy?

Cho em hỏi câu nữa là em muốn cùng một lúc 6 ngõ vào AD là AN0 ... AN5 , thì em phải làm thiết lập sao? bởi vì em thấy trong Farmily rerence .... chỉ thấy có 4 chanels chuyển đổi nên khi dung 6 ngõ vào AD có vấn đề ? chắc em hiểu chưa cặn kẽ về AD module mong thầy chỉ rõ dùm em.
Em cảm ơn.
Trân trọng !.
__attribute__((__sfr__)) thể hiện rằng các thanh ghi này là các thanh ghi SFR (Special File Register) của dsPIC.

dsPIC30F2010 chỉ có một bộ chuyển đổi A/D (là phần tử ADC trong sơ đồ ở hình 18-1 của datasheet). dsPIC30F2010 có thể lấy mẫu (sample) mỗi lần 1 ngõ vào, 2 ngõ vào, hay 4 ngõ vào, tùy theo sự thiết lập của các bit CHPS trong thanh ghi ADCON2. dsPIC30F2010 có thể lấy mẫu cả 4 kênh một lần nhờ vào sự hiện diện của 4 bộ S/H (Sample and Hold), được ký hiệu là CH0 đến CH3 trong sơ đồ nêu trên. Dù bạn lấy mẫu kiểu nào đi nữa, mỗi tín hiệu được lấy mẫu đều được xử lý bởi cùng một bộ chuyển đổi A/D.

Để chuyển đổi 6 ngõ vào AN0 đến AN5, bạn sẽ phải lấy mẫu 6 ngõ vào đó theo một thứ tự nào đó (phù hợp với sự bố trí các chân analog đến các bộ S/H), và lần lượt chuyển đổi các tín hiệu đã được lấy mẫu đó. Ví dụ, bạn có thể chỉ dùng một bộ S/H CH0 và lần lượt lấy mẫu, sau đó chuyển đổi các ngõ vào AN0 đến AN5. Hoặc bạn có thể dùng 2 bộ S/H CH0 và CH1, để cùng lúc lẫy mẫu AN0 và AN1, sau đó lần lượt chuyển đổi các ngõ vào này, rồi sau đó thiết lập để dùng 4 bộ S/H từ CH0 đến CH3, để cùng lúc lấy mẫu AN2 đến AN5, và sau đó lần lượt chuyển đổi các ngõ vào này.

Với mỗi cách thực hiện, code để hiện thực sẽ có sự thay đổi tương ứng. Đề nghị bạn đọc thêm về bộ ADC 10-bit trong tài liệu "dsPIC30F Family Reference Manual" (mã của tài liệu là DS70046) trước khi đặt tiếp câu hỏi (điều này sẽ giúp bạn hiểu được những câu trả lờ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

thay đổi nội dung bởi: namqn, 24-03-2009 lúc 12:40 AM. Lý do: thiếu 2 từ
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn