我的 avr 微控制器中的任何引脚更改中断都会导致微复位

问题描述 投票:0回答:0

我正在使用 Microchip studio 为 ATmaga644p 微控制器编码。 我只想在我的微控制器上为 pinA.1、A.2、A.3 激活引脚更改中断。 但问题是当我激活它时,每个中断信号微控制器都会重置。

这就是我写代码的方式:

#include <avr/io.h>
#include <avr/interrupt.h>

ISR(PCINT1_vect)
{
}


/*************************************************************************
Function: ISR(PCINT2_vect)
Purpose:   
Input:   
Returns:  
**************************************************************************/
ISR(PCINT2_vect)
{
    
}


/*************************************************************************
Function:ISR(PCINT3_vect)
Purpose: 
Input:    
Returns:  
**************************************************************************/
ISR(PCINT3_vect)
{
    
}
/*************************************************************************
Function:void init_pin_change_INT(void)
Purpose:  
Input:
Returns:  
**************************************************************************/
void init_pin_change_INT(void)
{
    //enable Pin chane interrupt for PortA.1 , PortA.2, PortA.3
    PCMSK0|=(1<<PCINT1)|(1<<PCINT2)|(1<<PCINT3);
    //enable PCMSK0 interuppt 
    PCICR |=(1<<PCIE0);
}
void main (void )

{
cli() ;
init_pin_change_INT(v);
sei();
while (1)
}

当我禁用所有引脚更改中断时,代码运行良好,但是当信号到来时我启用的每一个中断都会导致复位。 另外,代码还有其他部分,但我只写了需要的部分。

c gcc interrupt avr microchip
© www.soinside.com 2019 - 2024. All rights reserved.