- Cài đặt lại thông số biến PORT_ADC phù hợp với các cổng ADC mà bạn sử dụng.Ví dụ dùng cổng ADC A1,A2 A4 thì PORT_ADC=(BIT1+BIT2+BIT4);
- Có hai chế độ hoạt động được sử dụng trong thư viện này là chuyển đổi từng kênh và chuyển đổi liên tục.Không thể sử dụng đồng thời cả hai chế độ.
- Với chế độ chuyển đổi từng kênh,mỗi khi muốn đọc giá trị ADC,chúng ta gọi hàm ADC10_Read_Channel( ... ).Khi đó hàm này sẽ thực hiện lấy mẫu,và lấy dữ liệu ADC mới nhất ra.Việc này sẽ mất vài chục uS .
- Với chế độ chuyển đổi đa kênh,module ADC sẽ lần lượt đọc tất cả các giá trị ADC ở các kênh có cài đặt chức năng ADC và chuyển dữ liệu vào 1 mảng định trước ( Dùng chức năng DTC) .Ưu điểm là có thể đọc được nhiều kênh cùng lúc mà không cần sự can thiệp của CPU,vì vậy tốc độ thực thi nhanh hơn.DTC là chức năng chuyển tiếp dữ liệu từ thanh ghi vào bộ nhớ,gần giống DMA.Để sử dụng hàm này các bạn cần tạo 1 mảng kiểu Int có độ dài ít nhất bằng số kênh ADC chuyển đổi,ví dụ như:
unsigned int Data[8];
Sau đó chỉ cần khai báo hàm "ADC10_DTC(channel,pointer[],sequence); " một lần ,dữ liệu từ các cổng ADC sẽ liên tục được cập nhật và chuyển trực tiếp vào các biến.Công việc của chúng ta chỉ là đọc các biến đó thôi.
- Hàm void ADC10_DTC(channel,pointer[],sequence);
+ Nếu sequence = 0 thì ghi giá trị của kênh thứ Channel vào *pointer
+ Nếu sequence = 1 thì các giá trị ADC sẽ được lần lượt ghi vào *pointer từ A(channel) đến A0.
Anh ơi , sao em lấy thư viện của anh về dùng thì cứ báo lỗi các dòng có : V_tham_chieu anh giải thích giúp em với !
ReplyDeleteCảm ơn anh nhiều !
Em thay void ADC10_Init(V_tham_chieu) ở chỗ Function bằng void ADC10_Init(Vref V_tham_chieu) nhé,thực ra anh debug ko thấy báo lỗi,cũng lạ thật
Delete