當一個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