chuchuang 发表于 2013-4-3 17:38:38

mage 8 T/C1的捕获中断向量的地址问题

我用ICCAVR写的代码,芯片为ATMAGE 8,主要有以下问题,求帮忙解决!多谢大侠
[1、若ICP脚上升沿来时,中断向量的地址写为不同的数(0X7,0X8,0X9,0XA,0XB,iv_TIMER0_OVF )都会进入我的中断函数,
2、同样的代码我用ATMAGE 16修改了一下向量地址,ATMAGE 16就是唯一的地址对应此中断函数,ATMAGE 8的中断地址就有问题,
3、我用T/C1的捕获功能,测试频率,测得的频率值准确;
代码如下,请大侠帮忙分析一下,

本人的QQ:346328006

#include<iom8v.h>
#include <AVRdef.h>
#define uint unsigned int   
#define uchar unsigned char
uint count1, count2;
uint temp1=0, temp2=0;
//#pragma interrupt_handler Timer0_time:iv_TIMER0_OVF
#pragma interrupt_handler icp:iv_TIMER1_CAPT
//#pragma interrupt_handler icp:7
//#pragma interrupt_handler icp:8
//#pragma interrupt_handler icp:9
//#pragma interrupt_handler icp:iv_TIMER0_OVF
void Timer1_init()//定时器1初始化
{      
PORTB=0XFF;//带上拉电阻;
DDRB=0XFE;//为输入口;
TCCR1A = 0x00;
TCNT1 = 0;
ICR1=0;            
GICR=0X00;
TCCR1B=0X00;
TIMSK=0x00;
CLI();    //关全局有中断   
TCCR1B = (1<<ICNC1)|(1<<ICES1)|(1<<CS11);//打开输入捕捉噪声抑制器 |上升沿触发捕捉 ,8分频       SREG=BIT(7);//全局中断开放
SREG=BIT(7);//全局中断开放       
}
void main()
{
DDRD=0xff;
PORTD=0;
Timer1_init();
TIMSK |= (1<<TICIE1);//打开输入捕捉器中断使能
while(1);
}
void icp()
{   
TCNT1 = 0;
ICR1=0;   
PORTD=~PORTD;
}

页: [1]
查看完整版本: mage 8 T/C1的捕获中断向量的地址问题