当一个5v输入提供给int0时,应该发生一个外部中断向量。 中断应更改一个易失性整数标志,以允许指示灯连接到PORTB上的某个引脚。在Atmel工作室中编译没有错误。当5v电源发送到int0引脚时,问题不会发生变化。这是中断不触发吗?ATMEGA328P外部中断avr gcc不会发生
#include <avr/io.h>
#include <stdio.h>
#define F_CPU 16000000UL
#include <util/delay.h>
#include <avr/interrupt.h>
volatile int pwm_flag=0;
int main(void)
{
DDRD &= ~(1 << DDD2); // Clear the PD2 pin
// PD2 (PCINT0 pin) is now an input
PORTD |= (1 << PORTD2); // turn On the Pull-up
// PD2 is now an input with pull-up enabled
EICRA |= (1 << ISC00)|(1 << ISC10); // set INT0 to trigger on Rising edge
EIMSK |= (1 << INT0); // Turns on INT0
sei(); // turn on interrupts
DDRB = 0xFF;
PORTB = 0x00;
while(1)
{
if(pwm_flag==1)//if flag is raised
{
PORTB = 0xFF;//turn on all pins of portb
pwm_flag=0;//reset flag to 0
}
}
}
ISR (INT0_vect)
{
/* interrupt code here */
pwm_flag =1;//raise flag
}
AVR可以为LED提供充足的电流。 – JimmyB
对于一个小的是的,但我仍然认为最好的做法是沉入电流而不是提供电流。 – DeeCee
这是个人偏好还是一般性建议? - 尽管如此,AVR的数据表显示“端口B输出缓冲器具有对称的驱动特性,同时具有高吸收和源功能。”所以在这方面没有太多的错误要做。 – JimmyB