ATmega8 单片机怎么测频率?

来源:百度知道 编辑:UC知道 时间:2024/09/22 18:15:10
有一个正弦波输入ATmega8的单片机内
我知道用ICP1来输入,然后来一个输入捕捉,用TCNT1来记录,可是我不知道怎么来中断
最好有一些类似的代码,这是不是一个复杂的
还有,我已经用了TCCR1来创造输出PWM的波了,那么怎么样再设置这个呢?
我找了好多网站,他们都是很复杂的那种.
请大家能告诉主要思路怎么样的吗?谢谢,我已经纠结这个问题两天了,谢谢高手们了,答案录用的话,再追加100分,谢谢!
我是用C来编的....
万分感谢

正弦波先要整形成方波再送入M8进行中断,不然容易出错

例子;给你参考一下吧  外部中断来了 你就在外部中断函数里面写你中断以后你要执行的程序就可以了,就这么简单  PWM占空比,周期  都可以通过定时器寄存器初值来设定

//ICC-AVR application builder : 2009-09-11 19:02:05

// Target : M8

// Crystal: 8.0000Mhz

#include <iom8v.h>

#include <macros.h>

void port_init(void)

{

 PORTB = 0x00;

 DDRB  = 0x00;

 PORTC = 0x00; //m103 output only

 DDRC  = 0x00;

 PORTD = 0x00;

 DDRD  = 0x00;

}

//TIMER1 initialize - prescale:64

// WGM: 0) Normal, TOP=0xFFFF

// desired value: 1mSec

// actual value:  1.000mSec (0.0%)

void timer1_init(void)

{

 TCCR1B = 0x00;