Arduino Uno를 사용하고 있으며 이미 찾은 설명 1 에 따라 디지털 핀 2, 3, 4 및 5에서 인터럽트로 작동하도록 설정했습니다 .
void setup()
인터럽트를 설정하는 다음 코드가 포함되어 있습니다.
//Endable Interrupts for PCIE2 Arduino Pins (D0-7)
PCICR |= (1<<PCIE2);
//Setup pins 2,3,4,5
PCMSK2 |= (1<<PCINT18);
PCMSK2 |= (1<<PCINT19);
PCMSK2 |= (1<<PCINT20);
PCMSK2 |= (1<<PCINT21);
//Trigger Interrupt on rising edge
MCUCR = (1<<ISC01) | (1<<ISC01);
이제 ISR (PCINT2_vect) 기능이 모든 인터럽트마다 트리거됩니다. 그것은 매력처럼 작동합니다. 내 질문은, 어떤 핀이 트리거되었는지 알아내는 가장 좋은 방법은 무엇입니까?
Re 에서 무언가를 찾았습니다 . 핀 2, 3에서 ISR (PCINT2_vect) 또는 attachInterrupt를 사용하는 것이 더 낫습니까? ,하지만 코드를 이해하지 못하고 즉시 작동하지 않습니다. 그러나 인상적입니다 ...
해결 방법이 무엇입니까?
[2] http://arduino.cc/forum/index.php/topic,72496.15.html#lastPost
편집하다:
현재 입력 핀 레지스터에서 핀 상태를 읽습니다.
if (PIND & 0b00000100)
Serial.println( "PIN 2" );
if (PIND & 0b00001000)
Serial.println( "PIN 3" );
if (PIND & 0b00010000)
Serial.println( "PIN 4" );
if (PIND & 0b00100000)
Serial.println( "PIN 5" );
결국, 핀의 인터럽트를 계산하고 싶습니다. 그러나 두 번 계산되지 않는다는 것을 어떻게 확신 할 수 있습니까?
전자 제품에서는 더 많은 사람들이 Arduino 및 기타 전자 제품을 엉망으로 만들었습니다.
—
Earlz
당신이 생각한다면, 질문은 저기에 있어야합니다. 로그인 문제를 해결했습니다.
—
madc
@Earlz : 이것은 프로그래밍 문제이므로 주제에 관한 것 입니다. 그것이 취미 플랫폼을위한 것이라는 사실은 관련이 없습니다. 투시 유래 다른 아두 이노 질문 수백 참조 할 수 있습니다.
—
BlueRaja-대니 Pflughoeft