自从从51过来AVR后,不少东西都要重新习惯一下,比如AVR不支持位操作,对一个位操作,他可能是 PORTA |= (1<<PA1) 又或者是 PORTA &= ~(1<<PA1) 虽然都是一句,但是我觉得51的方法还是有一定的先入为主的性质,感官上是比较简单容易理解一点...也算是个习惯问题吧.
由于比较back EMF 需要一个比较器,当然,片内都载了一个模拟比较器.这样就省了外部电路了,但我需要在比较出答案以后,打开定时器,计时,然后再在下一次匹配上的时候关闭定时器.想了一阵,还是觉得用中断比较合适.正好比较器有他自己的中断,从手册上可以看到,他的名字叫做 模拟比较器中断 $020 ANA_COMP ..前前后后对比一下,猜他可能就是用这名字进入中断.但是在interrupt.h里面我们找不到中断的名字,他上面是有中断的用法ISR(vect [attribute])...突然想到,他的中断定义应该是存放在芯片的宏定义文件里面(iom16.h) 怎么说他只是一个寄存器嘛,打开一找,果然是
|
|其他中断的宏定义
|
/* Analog Comparator */
#define ANA_COMP_vect _VECTOR(16)
#define SIG_COMPARATOR _VECTOR(16)
|
|
显然, ISR(ANA_COMP_vect) {//code} 只要这样,就可以像定时器中断那样跳进服务进程了.
同时,也可以看见,无论用什么样的开发环境,都应该时刻查看他的 include 和 其他宏定义 头文件 等等.
AVR-3 进入比较器中断的服务程序
最新推荐文章于 2024-02-06 10:00:00 发布