Op mijn Atmega328P heb ik op Pin PC1 een PIR sensor zitten.
Nu wil ik dus bij beweging een externe interrupt genereren.
De volgende interrupt routine laat inderdaad bij beweging het led op mijn board toggelen.
c code:
ISR (PCINT1_vect)
{
led_toggle();
}
Echter deze routine triggerd ook op andere pinnen, dus zul je hem verder moeten uitpluizen welke pin er dan veranderd is.
Echter de volgende routine laat mijn led permanent uit.
Het lijkt erop dat hij PINC register niet kan uitlezen.
c code:
ISR (PCINT1_vect)
{
if( (PINC & (1 << PINC1)) == 1 )
{
/* LOW to HIGH pin change */
led_on();
}
else
{
/* HIGH to LOW pin change */
led_off();
}
}
Wat kan hier fout gaan?
Overigens op PC2 & PC3 bemonster ik ADC ingangen.
Kan dat nog van invloed zijn?