반응형
Pin Change Interrupt (ATtiny85 사용), Arduino
Pin Change Interrupt 란?
핀으로 입력되는 신호의 레벨이 바뀔 때 발생하는 인터럽트이다.
예를들면 신호가 High에서 Low로 바뀔 때 인터럽트가 발생하고,
반대로 Low에서 High로 바뀔 때도 인터럽트가 발생한다.
가장 기본이되는 코드는 아래와 같다.
void setup()
{
GIMSK = 0b00100000; // turns on pin change interrupts
PCMSK = 0b00010011; // turn on interrupts on pins PB0, PB1, PB4
sei(); // enables interrupts
}
void loop()
{
}
ISR(PCINT0_vect)
{
// your code
}
코드 출처: https://thewanderingengineer.com/2014/08/11/pin-change-interrupts-on-attiny85/
사용방법은 간단하다.
GIMSK 레지스터에서, 핀 체인지 인터럽트를 활성화하고,
PCMSK 레지스터에서, 어느 핀을 인터럽트 핀으로 사용할 것인지 설정한 뒤,
sei() 로 전체 인터럽트를 활성화 한다.
그러면 해당 핀에 입력 신호레벨이 바뀔 때
ISR(PCINT0_vect) 로 즉시 이동해 함수가 실행된다. 실제 코드는 여기에 짜면 된다.
Pin Change Interrupt 에 사용된 레지스터를 살펴보자.
GIMSK 레지스터에서 5번 비트 PCIE는 Pin Change Interrupt Enable 이다.
PCIE를 1로 바꾸면 핀체인지 인터럽트가 활성화된다.
PCMSK는 ATtiny85의 어느 핀을 인터럽트 핀으로 사용할 것인지 설정하는 레지스터이다.
부품 핀속성을 보고 참고하자. 사용하려는 핀에 해당하는 비트를 1로 설정하면 된다.
반응형
'프로그래밍 > 프로그래밍_여러가지' 카테고리의 다른 글
아두이노 - PE43712 Attenuator SPI 통신 (0) | 2019.05.24 |
---|---|
아두이노 - ATtiny85 SPI통신 Slave 모드, USI(Universal Serial Interface) (0) | 2019.04.29 |
아두이노 - ATtiny85를 아두이노로 만들기 & AD-USBISP V03.6로 PC와 연결 (0) | 2019.04.09 |
아두이노 - Multiple MAX31865+PT1000 Temperature Sensors for ARDUINO (1) | 2019.03.25 |
C언어 기초 추천글 모음 - 전자공작 (0) | 2018.01.09 |