- Giá trị trả về của hàm được lưu trong các thanh ghi R30, R31, R22, R23.
VII.7 ử Dụng Bộ ADC
Trong C, để sử dụng ADC ta chỉ cần khai báo các thơng số cho bộ ADC trong hàm main, sau đĩ cĩ thể sử dụng mẫu hàm đọc ADC do CodeVision AVR tạo ra. Để ý là nếu sử dụng
chức năng debug Jtag thì cĩ một số chân ADC (ADC4,..,ADC7) của AVR khơng sử dụng được. Bạn đọc nên xem phần chống nhiễu cho ADC trong datasheet. Ở đây chỉ tập trung vào khía cạnh lập trình.
Ví dụ sau dùng ADC 10bit, tốc độ 500.000 kHz, chạy từng bước. (xem thêm phần mơ tả bộ ADC trang 61)
#include <mega128.h> //Khai báo là đang dùng ATmega128 // hàm đọc kết quả ADC, tên hàm là tùy ý,theo chuẩn C
unsigned int read_adc(unsigned char adc_input) { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0); ADCSRA| =0x10; return ADCW; } // hàm main Void Main( ) {
Unsigned int adc_temp ; // khai báo biến để lưu kết quả ADC
// Khởi tạo cho bộ ADC ở đây // Tần số biến đổi: 500.000 kHz
//Chân làm điện thế so sánh cho bộ ADC là AVCC
//Điện thế của AVCC là cố định (bằng VCC cấp cho AVR)
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84; // xong phần khởi tạo
// ...
adc_temp = read_adc (0) ; //đọc kết quả ADC ở chân ADC0 adc_temp = read_adc (1) ; //đọc kết quả ADC ở chân ADC1
// ...
adc_temp = read_adc (7) ; //đọc kết quả ADC ở chân ADC7
//phải disable chức năng jtag