ATMEGA128

ATMEGA128, CodeVisonAVR, GPIO, gpio_intr

CoyoteUgly 2018. 8. 28. 19:45

ATMEGA128, CodeVisonAVR, GPIO, gpio_intr


현재 사용하고 있는 보드에

연결된 버튼이 인터럽트를 지원하지 않아

별도로 구성하였습니다.


PORTE.7 이 INT7과 mapping되기에 사용하였고

PORTA.0를 LED 로 사용하였습니다.


1. ATmega128 Pinmap



2. Ports > PORTA.0, Output

LED로 사용함



3. External IRQ > INT7 Enabled, Falling Edge


4. 소스 설명


#include <mega128.h>

// External Interrupt 7 service routine
interrupt [EXT_INT7] void ext_int7_isr(void)
{
// Place your code here
    // INT7 mapping to PORTE.7
   
    // LED Blink
    PORTA ^= 0x01;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=0
PORTA=0x00;
DDRA=0x01;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: Off
// INT5: Off
// INT6: Off
// INT7: On
// INT7 Mode: Falling Edge
EICRA=0x00;
EICRB=0x80;
EIMSK=0x80;
EIFR=0x80;


// Global enable interrupts
#asm("sei")

while (1)
      {
      // Place your code here
      }
}