Ðề tài: Thời gian ADC = ???
View Single Post
Old 21-11-2011, 09:53 PM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi ht2_hv View Post
Cám ơn bác đã trả lời.
Em muốn hỏi thêm là như bác nói thì với thạch anh 20M thì thời gian lấy mẫu nhỏ nhất là 0.4 us, vậy sao em lấy mẫu trong 20 us mà chỉ được có 3 mẫu, các bác xem code có gì sai không???
code:

#include<16f877.h>
#include <_df_.h>
#use delay(clock = 20000000)
#use rs232(baud = 9600,parity = n,xmit = pin_C6, rcv = pin_C7)

int var_adc[];
int var_timer1_count = 0;
int16 var_adc_count = 0;

void init()
{
enable_interrupts(int_timer1);
setup_timer_1(t1_internal | t1_div_by_2);

set_timer1(65486);
//T_timer = (65536-65486)*4*2/20M = 20us
}

#int_timer1
void interrupt_timer1(void)
{
var_timer1_count++;
if(var_timer1_count != 2)
printf("%lu\n\r",var_adc_count);
set_timer1(65486);
}

void main(void)
{
enable_interrupts (GLOBAL);
setup_adc(adc_clock_div_2);
setup_adc_ports(AN0_AN1_VSS_VREF );
set_adc_channel(0);
init();
while(true)
{
if(var_timer1_count == 2)
{
var_adc[var_adc_count++] = read_adc();
}
}
}
theo như code bạn viết thì 40us mới lấy mẫu một lần
trích:
{
if(var_timer1_count == 2)//20us*2
{
var_adc[var_adc_count++] = read_adc();
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn