initial isr. has problems.
This commit is contained in:
parent
09b15558a1
commit
10fdafbcb2
22
include/isr.h
Normal file
22
include/isr.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
#ifndef ISR_H
|
||||||
|
#define ISR_H
|
||||||
|
|
||||||
|
#include "embedded_types.h"
|
||||||
|
|
||||||
|
#define INTBASE (0x80020000)
|
||||||
|
#define INTENNUM_OFF (0x8)
|
||||||
|
#define INTSRC_OFF (0x30)
|
||||||
|
|
||||||
|
#define INTENNUM INTBASE + INTENNUM_OFF
|
||||||
|
#define INTSRC INTBASE + INTSRC_OFF
|
||||||
|
|
||||||
|
|
||||||
|
#define no_isrs() no_tmr_isr();
|
||||||
|
|
||||||
|
#define enable_tmr_irq() *(volatile uint32_t *)(INTENNUM)
|
||||||
|
#define no_tmr_isr() void tmr_isr(void) { return; }
|
||||||
|
|
||||||
|
extern void tmr_isr(void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
20
src/isr.c
Normal file
20
src/isr.c
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
#include "embedded_types.h"
|
||||||
|
#include "interrupt-utils.h"
|
||||||
|
#include "isr.h"
|
||||||
|
|
||||||
|
#define reg32(x) (*(volatile uint32_t *)(x))
|
||||||
|
|
||||||
|
__attribute__ ((interrupt("IRQ")))
|
||||||
|
void isr(void)
|
||||||
|
{
|
||||||
|
// ISR_ENTRY();
|
||||||
|
/* check for TMR0 interrupt */
|
||||||
|
// tmr_isr(); // led turns off if I have this, indicating that the isr does jump to tmr_isr
|
||||||
|
// if(reg32(INTSRC) & (1<<5)) { tmr_isr(); }
|
||||||
|
// asm("SUBS PC,R14_IRQ,#4")
|
||||||
|
// enableIRQ(); // I think this is necessary, but the LED never turns off when I have this
|
||||||
|
// ISR_EXIT(); // behavior doesn't change if I have this or not.
|
||||||
|
|
||||||
|
/* putting anything in here breaks the other code :( */
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue