InterruptMask library allows masking/unmasking GPIO interrupts (attached to either the rise or falling edges). It also allows clearing pending interrupts which may come handy before unmasking them.
InterruptMask.cpp
- Committer:
- nleoni
- Date:
- 2014-02-18
- Revision:
- 0:9db76e6c71ce
- Child:
- 2:0e3b2bc65131
File content as of revision 0:9db76e6c71ce:
#include "InterruptMask.h" InterruptMask::InterruptMask(void){ }; InterruptMask::InterruptMask(int somePin){ switch(somePin){ case p5: case p6: case p7: case p8: case p9: case p10: case p11: case p12: case p13: case p14: case p15: case p16: case p17: case p18: //These pins are in Port 0 of the LPC1768, so the proper register is selected below IOIntEnF = &(LPC_GPIOINT->IO0IntEnF); IOIntEnR = &(LPC_GPIOINT->IO0IntEnR); IOIntClr = &(LPC_GPIOINT->IO0IntClr); this->mPin=somePin; //assign pin to internal member variable mask=~(1<<( (this->mPin)-P0_0)); unmask=~mask; break; case p21: case p22: case p23: case p24: case p25: case p26: case p27: case p28: case p29: case p30: //These pins are in Port 0 of the LPC1768, so the proper register is selected below IOIntEnF = &(LPC_GPIOINT->IO2IntEnF); IOIntEnR = &(LPC_GPIOINT->IO2IntEnR); IOIntClr = &(LPC_GPIOINT->IO2IntClr); this->mPin=somePin; //assign pin to internal member variable mask=~(1<<( (this->mPin)-P2_0)); unmask=~mask; break; default: exit(1); } } void InterruptMask::maskIntR(void){ (*(this->IOIntEnR)) &= this->mask; } void InterruptMask::maskIntF(void){ (*(this->IOIntEnF)) &= this->mask; } void InterruptMask::unMaskIntR(void){ (*(this->IOIntEnR)) |= this->unmask; } void InterruptMask::unMaskIntF(void){ (*(this->IOIntEnF)) |= this->unmask; } void InterruptMask::ClrInt(void){ (*(this->IOIntClr)) |= this->unmask; }