diff --git a/bacnet-stack/ports/at91sam7s/isr.h b/bacnet-stack/ports/at91sam7s/isr.h index 79b4511b..b8d89dfb 100644 --- a/bacnet-stack/ports/at91sam7s/isr.h +++ b/bacnet-stack/ports/at91sam7s/isr.h @@ -28,6 +28,16 @@ #include +#if defined(__ICCARM__) +#include +#define isr_enable() __enable_interrupt() +#define isr_disable() __disable_interrupt() +#endif +#if defined(__GNUC__) +#define isr_enable() enableIRQ();enableFIQ(); +#define isr_disable() disableFIQ();disableIRQ(); +#endif + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ diff --git a/bacnet-stack/ports/at91sam7s/main.c b/bacnet-stack/ports/at91sam7s/main.c index df2c5e02..69750424 100644 --- a/bacnet-stack/ports/at91sam7s/main.c +++ b/bacnet-stack/ports/at91sam7s/main.c @@ -185,8 +185,7 @@ int main( init(); bacnet_init(); /* enable interrupts */ - enableIRQ(); - enableFIQ(); + isr_enable(); /* broadcast an I-Am on startup */ Send_I_Am(&Handler_Transmit_Buffer[0]); /* endless blink loop */ diff --git a/bacnet-stack/ports/at91sam7s/timer.c b/bacnet-stack/ports/at91sam7s/timer.c index 2003c12a..6c7cee2b 100644 --- a/bacnet-stack/ports/at91sam7s/timer.c +++ b/bacnet-stack/ports/at91sam7s/timer.c @@ -303,7 +303,7 @@ static void Timer0IrqHandler( { volatile AT91PS_TC pTC = AT91C_BASE_TC0; /* pointer to timer channel 0 register structure */ - unsigned int dummy; /* temporary */ + volatile unsigned int dummy; /* temporary */ /* read TC0 Status Register to clear interrupt */ dummy = pTC->TC_SR;