PCINT
De ArduWiki
Contenido
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
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