Trích:
Nguyên văn bởi ht2_hv
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();
}