ADCON3 = 0x0103; được tính như thế nào? help?
Em nghiên cứu mãi mà ko bit ADCON3 = 0x0103; nó được tính như thế nào? sao phải là /Dung 1 TAD cho lay mau 250ns. KHi em thay bằng kiểu các khác giá trị ADC là cái khác? Em thấy thay đổi cái này nó có ảnh hưởng đến giá trị ADC? Em ko bít tính nó nhưthees nào trong còn DSpic4011? Mong các pác giúp?
Khi cho tần số thực thi lệnh tăng lên thì có liên quan gì đến cái này ko? |
Trích:
|
cũng thư rồi pác à! Nhưng tôi muốn hỏi là giá trị đó đựoc tính như thế nào? đối với ADC 10 bit sao tốc độ phải là 250ns. ứng với ADCON3=0x0103 hay nó có cách tính như thến ào?
|
Trích:
http://ww1.microchip.com/downloads/e...Doc/70064E.pdf Bạn đọc thử xem, có chỗ nào không hiểu thì đặt câu hỏi. Thân, |
Em còn gặp 1 trường hợp như thế này. Em có chương trình như thế này :
#include <p30f4011.h> #include "ADC.h" #include "LCD.h" #include <math.h> unsigned int ADCValue,t,t1; void Init_ADC10(void) { TRISB=0x0001; ADPCFG = 0xFFFE; //Cac chan khac la digital, chan AN0/RB0 la analog ADCON1 = 0x00E0; // Cham dut lay mau ADC //viec chuyen doi A/D ADCON2 = 0; // Lua chon kenh 0 cho tin hieu dau vao ADCHS = 0x0000 ; //Kenh 0 doc tin hieu giua AN0 va AVss ADCSSL =0x0000; //Khong quet cac ngo vao ADCON3 = 0x0103; //Dung 1 TAD cho lay mau, dung clock he thong, Tad = 2 x Tcy = 250ns _ADIF = 0; //Xoa co ngat ADC _ADIE = 1; //Cho phep ngat ADC _ADON = 1; //Bat module ADC _ASAM = 1; //Khoi dong che do tu dong lay mau } //Khoi dong che do tu dong lay mau void _ISR _ADCInterrupt(void) { ADCValue = ADCBUF0;// Get gia tri ADC _ADIF = 0; } void calc_temperature() { t1 = ADCValue-559; // Tinh luon gia tri ADC t=t1*4.9; LCD_Position(1,1); LCD_WriteString("Temp:"); Delay_ms(1); LCD_Position(1,6); LCD_WriteNumber(t/10); Delay_ms(1); LCD_Position(1,9); LCD_WriteNumber(t%10); Delay_ms(1); LCD_Position(1,10); LCD_WriteString("C"); Delay_ms(1); LCD_Position(1,8); LCD_WriteString("."); Delay_ms(1); LCD_Position(2,1); LCD_WriteNumber(ADCValue); Delay_ms(1); LCD_Position(2,5); LCD_WriteNumber(263); } Khi em để tần số thực thi lệnh là 8MPis thì kết quả tính ra giá trị t phù hợp với giá trị ADC đo được. Khi em chuyển sang tân số thực thi lệnh là 16MPis thì kết quả ADC vẫn như vậy nhưng giá trị t của mình lại ko đúng theo công thức.(GIá trị t bị sai so với công thức trong chương trình) |
em ko hiểu cái ADCON3<5:0> nghĩa là sao ? con <5:0> nghĩa là thế nào?
|
Trích:
Thân, |
Cho em hỏi thì nó được tính như thế nào khi tổng cộng gồm 6 bit?
|
thì 6 bít thì giá trị từ 0 đến 2^6-1 (=63 hoặc 0x3F)
|
Múi giờ GMT. Hiện tại là 08:04 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam