не работают внешние прерывания на UNO

cc_coba
Offline
Зарегистрирован: 06.03.2014

решил наконец то попробовать прерывания, но толи лыжи не едут толи одно из двух :)

 

короче вот код 

int pPin = 2;

void setup(){
  Serial.begin(9600);
  pinMode(pPin, INPUT);
  attachInterrupt(pPin, screenon, CHANGE );   
  } 


void loop(){
 Serial.println(digitalRead(pPin));
  }
  
void screenon(){
  Serial.println("Interrupt-------");
  while(1){
  }
}  

 

screenon никогда не срабатывает

схемы никакй нет. просто беру и подключаю 2 к нулю или 5v

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

attachInterrupt(0, blink, CHANGE);

Цифра "0"   -  это номер прерываня. Не имеет никакой связи с номером пина.

Прерываня бывают "0"  и "1"  -это адрес прерывания. ( в Унах) Там нет третьего (2),  а вы его вызываете.

Нулевое прерывание приходит от пина 2, первое от пина 3

Ну и про дребезг, понятно подумайте.

И скорость-бы подняли до 115200 чтобы вывод в сериал успевал за вашими прерываниями.

Пин компатибле:

attachInterrupt((pPin-2), screenon, CHANGE );


void setup(){
  Serial.begin(115200);
  attachInterrupt(0, screenon, CHANGE );   
}
void loop(){
}
void screenon(){
   static volatile unsigned int i=0;
  Serial.println(i);
}  

 

cc_coba
Offline
Зарегистрирован: 06.03.2014

pPin-2 - !!!!! блин, не догадался.

функцию назову в вашу честь :)

а про подтягивающие резистры я вкурсе, это я для примера описал. так то у меня там pir - датчик будет

Про сериал, ок. попробую

cc_coba
Offline
Зарегистрирован: 06.03.2014

pPin-2 - !!!!! блин, не догадался.

функцию назову в вашу честь :)

а про подтягивающие резистры я вкурсе, это я для примера описал. так то у меня там pir - датчик будет

Про сериал, ок. попробую