|
楼主 |
发表于 2006-3-2 18:41:05
|
显示全部楼层
有谁能帮忙看看这个程序?
http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=590799&bbs_page_no=1&bbs_id=1000
请教:如何用模拟比较器来触发定时器1的输入捕获使能功能?
我的问题是在写超声波测距实验中碰到的。我的思路是:让从超声波接收电路得到的高电平经单片机的AIN0与AIN1的0.5V电压进行比较,使模拟比较器控制和状态寄存器ACSR的ACO置位,比较器的输出被直接连接到输入捕捉的前端逻辑,从而使得比较器可以利用T/C1 输入捕捉中断逻辑的噪声抑制器及触发沿选择功能。
这是部分程序,已经用CVAVR编译通过,并用VMLAB仿真到T/C1中的模拟比较器控制和状态寄存器ACSR中的ACO位已经有高电平输出,却在输入捕捉寄存器中ICR1中检测不到捕获到的时间值?如果这样写不对,应该怎样使用输入捕获使能功能?请CVAVR高手多多指教!
我用的CVAVR编译,VMLAB3.12仿真,其中,1.prj为CVAVR的工程文件,my_idea.prj为VMLAB的工程文件,望高手多加指点!
点击此处下载armok01104846.rar
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.1d Standard
Automatic Program Generator
Chip type : ATmega8515L
Clock frequency : 3.686400 MHz
*****************************************************/
#include <mega8515.h>
unsigned int rising_time;
unsigned char mid=0;
interrupt[TIM1_CAPT] void timer1_capt_isr(void)
{
mid=ACSR&0x20;
if(mid)
{
rising_time=(256*ICR1H)+ICR1L;
}
ACSR=0x07;
}
void main(void)
{
TCCR1A=0x00; //普通模式
TCCR1B=0xC1; ////输入噪声抑制,上升沿触发,无分频系数
ACSR=0x07;//模拟比较器触发输入捕获使能
TIMSK=0x08;// T/C1 capture :on
#asm("sei");
while (1)
{
..............
}
}
-----此内容被easyfly_step于2006-03-02,18:41:36编辑过
-----此内容被easyfly_step于2006-03-02,18:42:54编辑过 |
|