找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 5791|回复: 3
收起左侧

求教AVR高手解决定时器计数器的同步问题

[复制链接]
ID:29573 发表于 2011-7-7 19:07 | 显示全部楼层 |阅读模式

AVR我从一无所知学到现在也懂了些皮毛  我想用M16制作一个频率计,我的设计思路是这样的:在精确定时的一秒中内对输入的脉冲方波进行计数;在这一秒钟内对计数器的溢出次数进行累计,那么,输入脉冲的频率=溢出次数X计数器最高计数+最后一次计数器内的计数值!------------可是怎样才能制作一个能同时开启计数器ATTR0和定时器ATTRB的闸门,闸门的触发由输入方波的某一上升沿触发???

我编了一个简单的程序  可是可是经Proteus仿真总是相差几微妙不能同步开启  还有  没有能用输入上升沿触发定时和计数。

//ICC-AVR application builder : 2011-6-4 22:14:10

 

 

源代码如下:


// Target : M16
// Crystal: 8.0000Mhz

#include <iom16v.h>
#include <macros.h>

#define  uchar unsigned char
#define  uint  unsigned int
uint num=0,n=0;
#pragma interrupt_handler miao:9 mm:10;
//#pragma interrupt_handler miao:9
//中断向量10为TCCR0的,中断向量9为TCCR1的
#pragma data:code
///-----------------------延时函数---------------------------------------
void delay(uint ms)
{
    uint i;
 for(i=0;i<ms;i++);
}
//------------------------------计数函数---------------------------------------*/
void mm()
{
     TCNT0=0X9C;
 PORTD|=BIT(0);
 PORTD&=~BIT(0);
}

//-----------------------------定时函数-----------------------------------
   void miao()
{
TIMSK|=BIT(0);
if (n==1)
    {
 TIMSK=0X00;
 num=TCNT0;
 }
 else
 TCNT1H=0X85;
 TCNT1L=0XEF;
 
    PORTA|=BIT(3);
 PORTA&=~BIT(3);
 n++;
 //TIMSK&=~BIT(2);
}
//---------------------------------初始化函数---------------------------------------
void csh()
{
    TCNT0=0X9C;
 TCNT1H=0X85;
 TCNT1L=0XEF;
    delay(20);          //改变延时凑足总中断为一秒
 TCCR0=0X07;     //T/C0 为输入上升沿驱动
 TCCR1B=0X04;    //T/C1B为256分频
 
 TIMSK|=BIT(2);  //T/C1溢出中断使能
        SREG|=BIT(7);   //总中断使能
}
//-----------------------主函数-------------------------------------
void main()
{

 DDRA|=0XFF;
 DDRD=0XFF;
 DDRC=0XFF;
 
 
 csh();         //此句占用1个周期


}

回复

举报

ID:20559 发表于 2011-7-11 17:14 | 显示全部楼层
要想立即检测到,你可以采用捕获中断控制啊MG16硬件资源有这个功能的。
回复

举报

ID:29573 发表于 2011-7-11 20:41 | 显示全部楼层

我不是想立即检测到,而是想让计数和定时在同一起点开始,这个起点由输入信号的上升沿启动!

回复

举报

ID:29573 发表于 2011-7-11 20:41 | 显示全部楼层
不过还是要谢谢你的支持!
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表