Diferencia entre revisiones de «PCINT»

De ArduWiki
Saltar a: navegación, buscar
(Página creada con «== Descripcion == Existen dos tipos de interrupciones externas: * INT, interrupciones de harware externo * PCINT, interrupciones Pin Change, que actual a nivel de bancos co...»)
 
(Comentarios)
Línea 32: Línea 32:
 
|-
 
|-
 
|7||PD7||PCINT23||13||PB5||PCINT5||A5||PC5||PCINT13
 
|7||PD7||PCINT23||13||PB5||PCINT5||A5||PC5||PCINT13
]}
+
|}
  
 
== Advertencias ==
 
== Advertencias ==

Revisión del 16:52 23 sep 2019

Descripcion

Existen dos tipos de interrupciones externas:

  • INT, interrupciones de harware externo
  • PCINT, interrupciones Pin Change, que actual a nivel de bancos completos.

Sintaxis

PCICR;
PCMSK0;
PCIFR;
ISP(PCINT0_vect) //D8 a D13
ISP(PCINT1_vect) //A0 a A5
ISP(PCINT2_vect) //D0 a D7

Comentarios

Para Arduino UNO y NANO
Pin Port PCINT Pin Port PCINT Pin Port PCINT
2 PD2 PCINT18 8 PB0 PCINT0 A0 PC0 PCINT8
3 PD3 PCINT19 9 PB1 PCINT1 A1 PC1 PCINT9
4 PD4 PCINT20 10 PB2 PCINT2 A2 PC2 PCINT10
5 PD5 PCINT21 11 PB3 PCINT3 A3 PC3 PCINT11
6 PD6 PCINT22 12 PB4 PCINT4 A4 PC4 PCINT12
7 PD7 PCINT23 13 PB5 PCINT5 A5 PC5 PCINT13

Advertencias

Ejemplo

// Activar PCINT en un PIN
void pciSetup(byte pin){
    *digitalPinToPCMSK(pin) |= bit (digitalPinToPCMSKbit(pin));  //activar pin en PCMSK
    PCIFR  |= bit (digitalPinToPCICRbit(pin));                   //limpiar flag de la interrupcion en PCIFR
    PCICR  |= bit (digitalPinToPCICRbit(pin));                   //activar interrupcion para el grupo en PCICR
}
 
// Definir ISR para cada puerto
ISR(PCINT0_vect) {    
  //gestionar para PCINT para D8 a D13
}
 
ISR(PCINT1_vect){
  //gestionar PCINT para A0 a A5
}  
 
ISR(PCINT2_vect){
  //gestionar PCINT para D0 a D7
}  
 
void setup(){  
   //Activar las PCINT para distintos pins
   pciSetup(7);
   pciSetup(8);
   pciSetup(9);
   pciSetup(A0);
}
 
void loop(){
   //Nada
}

Vea tambien

  • [INT]

Referencias externas

  • [1] - Luis Llamas