Sto cercando di attivare l' ISR(PCINT2_vect) che corrisponde al cambio di stato sul pin 0
per farlo faccio
PCMSK2 |= 1;
PCICR |= 1 << 2;
ma non si attiva, cosa manca?
Sto cercando di attivare l' ISR(PCINT2_vect) che corrisponde al cambio di stato sul pin 0
per farlo faccio
PCMSK2 |= 1;
PCICR |= 1 << 2;
ma non si attiva, cosa manca?
Guarda, io in una mia applicazione che usa pinChangeInt faccio:
Enable dell'interrupt:
PCICR |= (1 << PCIE2); // Enable pin change int 2
PCIFR |= (1 << PCIF2); // Interrupt flag is set for 2
PCMSK2 |= (1<<PCINT16); // set Pin change interrupt masks for pin PD0
... che disablito al ricevimento di un interrupt (... poi lo riabilito finito il trattamento) con :
PCICR &= ~(1 << PCIE2); // Disable pin change int 2
Spero possa esserti utile ... :![]()
Guglielmo
io ho fatto questo test
ISR(PCINT0_vect)
{
Serial.println("I0");
}
ISR(PCINT1_vect)
{
Serial.println("I1");
}
ISR(PCINT2_vect)
{
Serial.println("I2");
}
void setup() {
Serial.begin(9600);
uint8_t i;
for(i = 0; i < 20; ++i)
pinMode(i, INPUT);
cli();
PCICR = 0x3;
PCIFR = 0x3;
PCMSK2 = 0xFF;
PCMSK1 = 0x7F;
PCMSK0 = 0xFF;
sei();
}
void loop() {
// put your main code here, to run repeatedly:
}
ma il 2 non funzia.... lo 0 e l'1 si.....
che pirla!
PCICR = 0x7;
PCIFR = 0x7;