Gets the register number for a PIC register
uint8_t XEOS_HAL_PIC_GetRegister(
XEOS_HAL_PIC_Controller c,
XEOS_HAL_PIC_Register r );
The register number
Checks if an IRQ line is masked
bool XEOS_HAL_PIC_IRQLineMasked(
XEOS_HAL_PIC_IRQ irq );
True if the IRQ line is masked, otherwise false
Masks an IRQ line
void XEOS_HAL_PIC_MaskIRQLine(
XEOS_HAL_PIC_IRQ irq );
Reads data from a PIC
uint8_t XEOS_HAL_PIC_ReadData(
XEOS_HAL_PIC_Controller c );
The data read
Remaps the PIC (Programmable Interrupt Controller)
void XEOS_HAL_PIC_Remap(
uint8_t masterBase,
uint8_t slaveBase );
Sends a command to a PIC
void XEOS_HAL_PIC_SendCommand(
XEOS_HAL_PIC_Controller c,
uint8_t command );
Sends data to a PIC
void XEOS_HAL_PIC_SendData(
XEOS_HAL_PIC_Controller c,
uint8_t data );
Sends EOI (End Of Interrupt)
void XEOS_HAL_PIC_SendEOI(
XEOS_HAL_PIC_Controller c );
Unmasks an IRQ line
void XEOS_HAL_PIC_UnmaskIRQLine(
XEOS_HAL_PIC_IRQ irq );
Programmable Interrupt Controller
typedef enum {
XEOS_HAL_PIC_Controller1 = 0x00,
XEOS_HAL_PIC_Controller2 = 0x01
} XEOS_HAL_PIC_Controller;
PIC Initialization Command Word (ICW) 1
typedef enum {
XEOS_HAL_PIC_ICW1None = 0x00,
XEOS_HAL_PIC_ICW1IC4 = 0x01,
XEOS_HAL_PIC_ICW1SNGL = 0x02,
XEOS_HAL_PIC_ICW1ADI = 0x04,
XEOS_HAL_PIC_ICW1LTIM = 0x08,
XEOS_HAL_PIC_ICW1Init = 0x10
} XEOS_HAL_PIC_ICW1;
PIC Initialization Command Word (ICW) 4
typedef enum {
XEOS_HAL_PIC_ICW4None = 0x00,
XEOS_HAL_PIC_ICW4UPM = 0x01,
XEOS_HAL_PIC_ICW4AEOI = 0x02,
XEOS_HAL_PIC_ICW4MS = 0x04,
XEOS_HAL_PIC_ICW4BUF = 0x08,
XEOS_HAL_PIC_ICW4SFNM = 0x10
} XEOS_HAL_PIC_ICW4;
IRQ lines
typedef enum {
XEOS_HAL_PIC_IRQ0 = 0x00,
XEOS_HAL_PIC_IRQ1 = 0x01,
XEOS_HAL_PIC_IRQ2 = 0x02,
XEOS_HAL_PIC_IRQ3 = 0x03,
XEOS_HAL_PIC_IRQ4 = 0x04,
XEOS_HAL_PIC_IRQ5 = 0x05,
XEOS_HAL_PIC_IRQ6 = 0x06,
XEOS_HAL_PIC_IRQ7 = 0x07,
XEOS_HAL_PIC_IRQ8 = 0x08,
XEOS_HAL_PIC_IRQ9 = 0x09,
XEOS_HAL_PIC_IRQ10 = 0x0A,
XEOS_HAL_PIC_IRQ11 = 0x0B,
XEOS_HAL_PIC_IRQ12 = 0x0C,
XEOS_HAL_PIC_IRQ13 = 0x0D,
XEOS_HAL_PIC_IRQ14 = 0x0E,
XEOS_HAL_PIC_IRQ15 = 0x0F
} XEOS_HAL_PIC_IRQ;
PIC register
typedef enum {
XEOS_HAL_PIC_RegisterCommand = 0x00,
XEOS_HAL_PIC_RegisterStatus = 0x01,
XEOS_HAL_PIC_RegisterData = 0x02,
} XEOS_HAL_PIC_Register;