50 #ifndef MRF24J40_ARCH_H_
51 #define MRF24J40_ARCH_H_
60 #define MRF24J40_RESETn PORTGbits.RG15
61 #define MRF24J40_INT PORTAbits.RA15
62 #define MRF24J40_CSn PORTFbits.RF12
63 #define MRF24J40_WAKE PORTGbits.RG12
66 #define MRF24J40_TRIS_RESETn TRISGbits.TRISG1
67 #define MRF24J40_TRIS_INT TRISAbits.TRISA15
68 #define MRF24J40_TRIS_CSn TRISFbits.TRISF12
69 #define MRF24J40_TRIS_WAKE TRISGbits.TRISG12
72 #define MRF24J40_HARDRESET_LOW() MRF24J40_RESETn = 0
73 #define MRF24J40_HARDRESET_HIGH() MRF24J40_RESETn = 1
74 #define MRF24J40_CSn_LOW() MRF24J40_CSn = 0
75 #define MRF24J40_CSn_HIGH() MRF24J40_CSn = 1
78 #ifdef __USE_MRF24J40_SPI_PORT_1__
79 #define MRF24J40_SPI_PORT_INIT pic32_spi1_init
80 #define MRF24J40_SPI_PORT_WRITE pic32_spi1_write
81 #define MRF24J40_SPI_PORT_READ pic32_spi1_read
82 #elif defined __USE_MRF24J40_SPI_PORT_1A__
83 #define MRF24J40_SPI_PORT_INIT pic32_spi1A_init
84 #define MRF24J40_SPI_PORT_WRITE pic32_spi1A_write
85 #define MRF24J40_SPI_PORT_READ pic32_spi1A_read
86 #elif defined __USE_MRF24J40_SPI_PORT_2A__
87 #define MRF24J40_SPI_PORT_INIT pic32_spi2A_init
88 #define MRF24J40_SPI_PORT_WRITE pic32_spi2A_write
89 #define MRF24J40_SPI_PORT_READ pic32_spi2A_read
90 #elif defined __USE_MRF24J40_SPI_PORT_3A__
91 #define MRF24J40_SPI_PORT_INIT pic32_spi3A_init
92 #define MRF24J40_SPI_PORT_WRITE pic32_spi3A_write
93 #define MRF24J40_SPI_PORT_READ pic32_spi3A_read
95 #define MRF24J40_SPI_PORT_INIT pic32_spi3A_init
96 #define MRF24J40_SPI_PORT_WRITE pic32_spi3A_write
97 #define MRF24J40_SPI_PORT_READ pic32_spi3A_read
101 #define MRF24J40_ISR() ISR(_EXTERNAL_4_VECTOR)
102 #define MRF24J40_INTERRUPT_FLAG_SET() IFS0SET = _IFS0_INT4IF_MASK
103 #define MRF24J40_INTERRUPT_FLAG_CLR() IFS0CLR = _IFS0_INT4IF_MASK
104 #define MRF24J40_INTERRUPT_ENABLE_SET() IEC0SET = _IEC0_INT4IE_MASK
105 #define MRF24J40_INTERRUPT_ENABLE_CLR() IEC0CLR = _IEC0_INT4IE_MASK
106 #define MRF24J40_INTERRUPT_ENABLE_STAT() IEC0bits.INT4IE
108 #define MRF24J40_PINDIRECTION_INIT() \
110 MRF24J40_TRIS_RESETn = 0; \
111 MRF24J40_TRIS_INT = 1; \
112 MRF24J40_TRIS_CSn = 0; \
113 MRF24J40_TRIS_WAKE = 0; \
116 #define MRF24J40_INTERRUPT_INIT(p, s) \
118 MRF24J40_INTERRUPT_ENABLE_CLR(); \
119 MRF24J40_INTERRUPT_FLAG_CLR(); \
120 INTCONCLR = _INTCON_INT4EP_MASK; \
121 IPC4CLR = _IPC4_INT4IP_MASK | _IPC4_INT4IS_MASK; \
122 IPC4SET = (p << _IPC4_INT4IP_POSITION) | (s << _IPC4_INT4IS_POSITION); \
123 MRF24J40_INTERRUPT_ENABLE_SET(); \
Header file for the radio API