blob: dd27a3140bab9f4c0cd7587e41ad8b4bc7f1b5e2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
/**
* @file
* @authors Matt "MateoConLechuga" Waltz
* @authors Jacob "jacobly" Young
* @brief Interrupt configuring and setting
*/
#ifndef INTCE_H
#define INTCE_H
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief Enable global interrupts
*/
#define int_Enable() \
asm("ei")
/**
* @brief Diasble global interrupts
*/
#define int_Disable() \
asm("di")
/**
* @brief Blocking wait for an interrupt to trigger
*/
#define int_Wait() \
asm("halt")
#ifdef FORCE_INTERRUPTS
#warning TI has removed custom interrupt support on CE models with hardware revision >= I. Please check that this is acceptable.
/**
* Initizalize to use custom interrupts
* @note Saves status of current interrupt state
* @warning TI has removed custom interrupt support on CE models with hardware revision >= I.
*/
void int_Initialize(void);
/**
* Resets interrupts back to the OS expected values
* @warning Must have called int_Initialize before using
* @warning TI has removed custom interrupt support on CE models with hardware revision >= I.
*/
void int_Reset(void);
/**
* Sets up an interrupt vector given an ISR
* @param ivect Interrupt vector to set
* @param handler Handler to interrupt service routine
* @warning TI has removed custom interrupt support on CE models with hardware revision >= I.
*/
void int_SetVector(uint8_t ivect, void (*handler)(void));
#endif
#define ON_IVECT 0 /**< [on] key interrupt source */
#define TIMER1_IVECT 1 /**< Timer 1 interrupt source */
#define TIMER2_IVECT 2 /**< Timer 2 interrupt source */
#define TIMER3_IVECT 3 /**< Timer 3 interrupt source */
#define TIMEROS_IVECT 4 /**< Timer OS interrupt source */
#define KEYBOARD_IVECT 10 /**< Keyboard interrupt source */
#define LCD_IVECT 11 /**< LCD interrupt source */
#define RTC_IVECT 12 /**< Real Time Clock interrupt source */
#define USB_IVECT 13 /**< USB interrupt source */
#define INT_ON 1<<ON_IVECT /**< [on] key interrupt source mask */
#define INT_TIMER1 1<<TIMER1_IVECT /**< Timer 1 interrupt source mask */
#define INT_TIMER2 1<<TIMER2_IVECT /**< Timer 2 interrupt source mask */
#define INT_TIMER3 1<<TIMER3_IVECT /**< Timer 3 interrupt source mask */
#define INT_TIMEROS 1<<TIMEROS_IVECT /**< Timer OS interrupt source mask */
#define INT_KEYBOARD 1<<KEYBOARD_IVECT /**< Keyboard interrupt source mask */
#define INT_LCD 1<<LCD_IVECT /**< LCD interrupt source mask */
#define INT_RTC 1<<RTC_IVECT /**< Real Time Clock interrupt source mask */
#define INT_USB 1<<USB_IVECT /**< USB interrupt source mask */
#define int_RawStatus (*(volatile uint24_t*)0x0F00000) /**< State of interrupt signals */
#define int_MaskedStatus (*(volatile uint24_t*)0x0F00014) /**< Masked state of interrupt signals */
#define int_EnableConfig (*(uint24_t*)0x0F00004) /**< Enabled interrupt signals */
#define int_LatchConfig (*(uint24_t*)0x0F0000C) /**< Latchable interrupt signals */
#define int_InvertConfig (*(uint24_t*)0x0F00010) /**< Invertable interrupt signals */
#define int_Acknowledge (*(uint24_t*)0x0F00008) /**< Acknowledge interrupt signals */
#ifdef __cplusplus
}
#endif
#endif
|