External interrupt på PC0 vid falling edge

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

External interrupt på PC0 vid falling edge

Inlägg 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å.
void
Inlägg: 119
Blev medlem: 8 juli 2007, 11:06:50
Ort: Enköping

Re: External interrupt på PC0 vid falling edge

Inlägg av void »

Eller så kan du använda "External Interrupt Request" istället (INT0, INT1, INT2).
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: External interrupt på PC0 vid falling edge

Inlägg 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. :)
Skriv svar