지난 Lab.2-1 Digital I/O 실습에 이어 Arduino 와 DE2-115 보드를 활용하여 External Interrupt 를 실습한다.
[GPIO]
[exISR.ino]
외부 인터럽트가 발생하면 신호를 발생하는 아두이노 코드는 다음과 같다.
더보기
/////exISR-----------------------------------/////
int pin = 13;
volatile int state = LOW;
/////----------------------------------------/////
void setup() {
pinMode(pin, OUTPUT);
Serial.begin(9600);
attachInterrupt(0, btInterupt, RISING);
}
/////----------------------------------------/////
void loop() {
digitalWrite(LED_BUILTIN, state);
while (state) {
n=0;
for (int n=0; n < N; n++) {
float x = sin(2 * PI * n / N);
Serial.println(x*2047);
delay(125);
}
}
}
/////----------------------------------------/////
void btInterupt(){
state = !state;
}
UNO interrupt: 0 (D2), 1 (D3)
DUE interrupt: pin number
Interrupt mode: LOW, CHANGE, RISING, FALLING, HIGH
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode | Digital Pins With Interrupts |
detachInterrupt() | Turns off the given interrupt. |
[Test Result]
회로를 구성하고 이를 테스트 하면 외부 인터럽트에 따라서 신호가 발생함 을 알 수 있다.
Arduino 를 활용하여 간단하게 ISR (Interrupt Service Routine) 을 실습한다.
[참조]
'찐s > Arduino' 카테고리의 다른 글
[Arduino] Lab.3-1: Analog input (0) | 2020.10.17 |
---|---|
[Arduino] Lab.2-2: Digital Input & Output (0) | 2020.08.15 |
[Arduino] Lab.2-1: Digital Input (0) | 2020.08.09 |
[Arduino] Lab.1: Serial Monitor (0) | 2020.08.08 |