Altera SoCAL  16.0
The Altera SoC Abstraction Layer (SoCAL) API Reference Manual
 All Data Structures Variables Typedefs Groups
Register : Interrupt Register - CIR

Description

If several interrupts are pending, the CAN Interrupt Register will point to the pending interrupt with the highest priority, disregarding their chronological order. An interrupt remains pending until the CPU has cleared it. If IntID is different from 0x00 and CCTRL.MIL is set, the interrupt port CAN_INT_MO is active. The interrupt port remains active until IntID is back to value 0x00 (the cause of the interrupt is reset) or until CCTRL.MIL is reset. If CCTRL.ILE is set and CCTRL.MIL is reseted the Message Object interrupts will be routed to interrupt port CAN_INT_STATUS. The interrupt port remains active until IntID is back to value 0x00 (the cause of the interrupt is reset) or until CCTRL.MIL is set or CCTRL.ILE is reset.

The Message Object's interrupt priority decreases with increasing message number.

A message interrupt is cleared by clearing the Message Object's IntPnd bit.

Register Layout

Bits Access Reset Description
[7:0] R 0x0 Interrupt Identifier
[14:8] ??? 0x0 UNDEFINED
[15] R 0x0 A Status Interrupt has occurred
[31:16] ??? 0x0 UNDEFINED

Field : Interrupt Identifier - IntId

0x00 No Message Object interrupt is pending.

0x01-0x80 Number of Message Object which caused the interrupt.

0x81-0xFF unused.

Field Access Macros:

#define ALT_CAN_PROTO_CIR_INTID_LSB   0
 
#define ALT_CAN_PROTO_CIR_INTID_MSB   7
 
#define ALT_CAN_PROTO_CIR_INTID_WIDTH   8
 
#define ALT_CAN_PROTO_CIR_INTID_SET_MSK   0x000000ff
 
#define ALT_CAN_PROTO_CIR_INTID_CLR_MSK   0xffffff00
 
#define ALT_CAN_PROTO_CIR_INTID_RESET   0x0
 
#define ALT_CAN_PROTO_CIR_INTID_GET(value)   (((value) & 0x000000ff) >> 0)
 
#define ALT_CAN_PROTO_CIR_INTID_SET(value)   (((value) << 0) & 0x000000ff)
 

Field : A Status Interrupt has occurred - StatusInt

The Status Interrupt is cleared by reading the Status Register.

Field Access Macros:

#define ALT_CAN_PROTO_CIR_STATINT_LSB   15
 
#define ALT_CAN_PROTO_CIR_STATINT_MSB   15
 
#define ALT_CAN_PROTO_CIR_STATINT_WIDTH   1
 
#define ALT_CAN_PROTO_CIR_STATINT_SET_MSK   0x00008000
 
#define ALT_CAN_PROTO_CIR_STATINT_CLR_MSK   0xffff7fff
 
#define ALT_CAN_PROTO_CIR_STATINT_RESET   0x0
 
#define ALT_CAN_PROTO_CIR_STATINT_GET(value)   (((value) & 0x00008000) >> 15)
 
#define ALT_CAN_PROTO_CIR_STATINT_SET(value)   (((value) << 15) & 0x00008000)
 

Data Structures

struct  ALT_CAN_PROTO_CIR_s
 

Macros

#define ALT_CAN_PROTO_CIR_OFST   0x10
 
#define ALT_CAN_PROTO_CIR_ADDR(base)   ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_CAN_PROTO_CIR_OFST))
 

Typedefs

typedef struct ALT_CAN_PROTO_CIR_s ALT_CAN_PROTO_CIR_t
 

Data Structure Documentation

struct ALT_CAN_PROTO_CIR_s

WARNING: The C register and register group struct declarations are provided for convenience and illustrative purposes. They should, however, be used with caution as the C language standard provides no guarantees about the alignment or atomicity of device memory accesses. The recommended practice for writing hardware drivers is to use the SoCAL access macros and alt_read_word() and alt_write_word() functions.

The struct declaration for register ALT_CAN_PROTO_CIR.

Data Fields
const uint32_t IntId: 8 Interrupt Identifier
uint32_t __pad0__: 7 UNDEFINED
const uint32_t StatusInt: 1 A Status Interrupt has occurred
uint32_t __pad1__: 16 UNDEFINED

Macro Definitions

#define ALT_CAN_PROTO_CIR_INTID_LSB   0

The Least Significant Bit (LSB) position of the ALT_CAN_PROTO_CIR_INTID register field.

#define ALT_CAN_PROTO_CIR_INTID_MSB   7

The Most Significant Bit (MSB) position of the ALT_CAN_PROTO_CIR_INTID register field.

#define ALT_CAN_PROTO_CIR_INTID_WIDTH   8

The width in bits of the ALT_CAN_PROTO_CIR_INTID register field.

#define ALT_CAN_PROTO_CIR_INTID_SET_MSK   0x000000ff

The mask used to set the ALT_CAN_PROTO_CIR_INTID register field value.

#define ALT_CAN_PROTO_CIR_INTID_CLR_MSK   0xffffff00

The mask used to clear the ALT_CAN_PROTO_CIR_INTID register field value.

#define ALT_CAN_PROTO_CIR_INTID_RESET   0x0

The reset value of the ALT_CAN_PROTO_CIR_INTID register field.

#define ALT_CAN_PROTO_CIR_INTID_GET (   value)    (((value) & 0x000000ff) >> 0)

Extracts the ALT_CAN_PROTO_CIR_INTID field value from a register.

#define ALT_CAN_PROTO_CIR_INTID_SET (   value)    (((value) << 0) & 0x000000ff)

Produces a ALT_CAN_PROTO_CIR_INTID register field value suitable for setting the register.

#define ALT_CAN_PROTO_CIR_STATINT_LSB   15

The Least Significant Bit (LSB) position of the ALT_CAN_PROTO_CIR_STATINT register field.

#define ALT_CAN_PROTO_CIR_STATINT_MSB   15

The Most Significant Bit (MSB) position of the ALT_CAN_PROTO_CIR_STATINT register field.

#define ALT_CAN_PROTO_CIR_STATINT_WIDTH   1

The width in bits of the ALT_CAN_PROTO_CIR_STATINT register field.

#define ALT_CAN_PROTO_CIR_STATINT_SET_MSK   0x00008000

The mask used to set the ALT_CAN_PROTO_CIR_STATINT register field value.

#define ALT_CAN_PROTO_CIR_STATINT_CLR_MSK   0xffff7fff

The mask used to clear the ALT_CAN_PROTO_CIR_STATINT register field value.

#define ALT_CAN_PROTO_CIR_STATINT_RESET   0x0

The reset value of the ALT_CAN_PROTO_CIR_STATINT register field.

#define ALT_CAN_PROTO_CIR_STATINT_GET (   value)    (((value) & 0x00008000) >> 15)

Extracts the ALT_CAN_PROTO_CIR_STATINT field value from a register.

#define ALT_CAN_PROTO_CIR_STATINT_SET (   value)    (((value) << 15) & 0x00008000)

Produces a ALT_CAN_PROTO_CIR_STATINT register field value suitable for setting the register.

#define ALT_CAN_PROTO_CIR_OFST   0x10

The byte offset of the ALT_CAN_PROTO_CIR register from the beginning of the component.

#define ALT_CAN_PROTO_CIR_ADDR (   base)    ALT_CAST(void *, (ALT_CAST(char *, (base)) + ALT_CAN_PROTO_CIR_OFST))

The address of the ALT_CAN_PROTO_CIR register.

Typedef Documentation

The typedef declaration for register ALT_CAN_PROTO_CIR.