Sida 1 av 1

External interrupt på PC0 vid falling edge

Postat: 25 juni 2013, 18:36:21
av MicaelKarlsson
Hej på er, sitter och funderar över extern interrupt ATMEGA324P. Som det är nu genererar den interrupt både på rising och falling edge och jag vill ha en interrupt _endast_ på falling edge. Hur bär man sig åt då?

Så här ser koden ut för att sätta upp external interrupt ut:

Kod: Markera allt

PCICR |= (1<<PCIE2);
PCMSK2 |= (1<<PCINT16);
och vektorn för external interrupt:

Kod: Markera allt

ISR(PCINT2_vect)
	{
 //Superhemlig kod för att generera ett pip......
	}
Så hur får jag min interrupt att köra koden enbart på falling edge, om det nu går?

EDIT: Kom på hur jag skall göra. Var ju barnsligt enkelt

Kod: Markera allt

ISR(PCINT2_vect)
	{
	if(bit_get(PINC,BIT(0))==0)  //Denna rad ger "falling edge"
		{
 //Superhemlig kod för att generera ett pip......
		}
	}
Edit 2: Struntar i macron för bit_get och BIT, för det kan säkert alla som läser detta ändå.

Re: External interrupt på PC0 vid falling edge

Postat: 25 juni 2013, 19:05:37
av void
Eller så kan du använda "External Interrupt Request" istället (INT0, INT1, INT2).

Re: External interrupt på PC0 vid falling edge

Postat: 25 juni 2013, 21:20:03
av MicaelKarlsson
Okej, har inte dykt så mycket i databladet, har lite ont om tid och tog det första bästa jag hittade. Får kolla upp (INT0, INT1, INT2) när det inte är så bråttom.

Tack för tipset. :)