View Single Post
Old 08-04-2008, 01:57 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
Acquisition time phụ thuộc vào nhiều yếu tố, bạn tham khảo trong datasheet về cách tính và chọn. Để hiện thực được thời gian này thì lẽ đương nhiên phải dựa vào tần số thực thi lệnh của PIC.

Realtime conversion phụ thuộc vào cách bạn viết code, và tiêu chí "realtime" của bạn (nếu bạn muốn ngõ vào thay đổi thì sự thay đổi phải được phản ánh trong vòng 10 us thì xin thưa là không có PIC 8-bit nào làm được chuyện này).

Bạn có thể dùng 8-bit cao nhất của kết quả để hiện thị trên một port 8-bit. Tất nhiên những thay đổi trong phạm vi 2 bit thấp nhất thì không được thể hiện.

Ngay trước khi chuyển đổi một giá trị ngõ vào, bạn phải chờ một khoảng thời gian (acquisition time), sau đó mới chuyển đổi giá trị ngõ vào đã được giữ lại. Thời gian này không được quá nhỏ, cũng không nên quá lớn. Code của bạn dùng ít nhất 200 ms cho khoảng thời gian này, như vậy là quá lâu. Port B là một port nhận giá trị nhị phân, bạn lại chuyển đổi kết quả A/D thành số float, tôi không rõ bạn làm vậy để làm gì. Bạn nên dùng portb = readadc() >> 2; để hiển thị 8-bit cao nhất thì tốt hơn.

Sau mỗi lần hiển thị kết quả A/D được 100 ms thì bạn lại xuất 0 ra port B và chờ 100 ms, như vậy các LED của bạn có vẻ rung rung với tần số khoảng 5 Hz là điều dễ hiểu.

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