PDA

View Full Version : Hỏi về kiểu dữ liệu fractional trong ADC của dspic


uydanh
28-10-2008, 04:32 PM
Chào các bạn.
Mình dùng dspic30f6014A, và đang làm phần biến đổi ADC tín hiệu âm thanh. ADC của dspic30f6014a là ADC 12 bits và dạng dữ liệu đưa ra bus thuộc 4 dạng : integer, signed integer, fractional và signed fractional. Mình đã đọc kỹ trong datasheet của nó và đã hình dung được cách lưu 12 bits đó trong thanh ghi 16 bits của dspic ra sao nhưng vẫn không hiểu kiểu fractional là như thế nào. Cách sử dụng nó ra sao. Và tại sao người ta phải lưu nó dưới dạng này thì mới sử dụng như là các toán hạng trong xử lý số (ma trận,v.v....).
Mình đã search trên diễn đàn, nhưng đa phần nhiều bạn hiểu về vấn đề này rồi thì lại không nói ra. Mong mọi người giúp đỡ.
Nhân đây cho mình hỏi luôn : Các câu lệnh

extern fractional inputSignal[NUMSAMP];
extern int doFilterFlag;
extern fractional* iPtr;
volatile unsigned int * adcPtr;

nếu bỏ đi từ khóa extern và volatile thì sẽ ra sao. Nói chung là mình chưa hiểu nó có ý nghĩa gì.
Cảm ơn mọi người.

hutk53
25-04-2012, 10:22 PM
Theo mình biết thì từ khóa Extern nghĩa là biến được khai báo sẽ được phép dùng trong các file link với file bạn đang viết.
Với volatile : Trong các chương trình dịch thường có các chức năng optimize,tối ưu hóa bộ nhớ, nên nếu các biến khai báo thông thường,nếu trong chương trình chính bạn không dùng đến nó thì Optimize sẽ xóa nó đi, lúc đó chương trình không đúng nữa.
còn khi khai báo volatile nghĩa là biến được cố tình tạo ra và yêu cầu Optimize không được xóa khi dịch chương trình.