Β Important :
- The library uses the SPI module for communication. User must initialize the appropriate SPI module before using the Port Expander Library.
- Library does not use Port Expander interrupts.
Β
External dependencies of Port Expander Library
The following variables must be defined in all projects using Port Expander Library: | Description : | Example : |
---|---|---|
extern sfr sbit SPExpanderRST; |
Reset line. | sbit SPExpanderRST at RC0_bit; |
extern sfr sbit SPExpanderCS; |
Chip Select line. | sbit SPExpanderCS at RC1_bit; |
extern sfr sbit SPExpanderRST_Direction; |
Direction of the Reset pin. | sbit SPExpanderRST_Direction at TRISC0_bit; |
extern sfr sbit SPExpanderCS_Direction; |
Direction of the Chip Select pin. | sbit SPExpanderCS_Direction at TRISC1_bit; |
Library Routines
- Expander_Init
- Expander_Init_Advanced
- Expander_Read_Byte
- Expander_Write_Byte
- Expander_Read_PortA
- Expander_Read_PortB
- Expander_Read_PortAB
- Expander_Write_PortA
- Expander_Write_PortB
- Expander_Write_PortAB
- Expander_Set_DirectionPortA
- Expander_Set_DirectionPortB
- Expander_Set_DirectionPortAB
- Expander_Set_PullUpsPortA
- Expander_Set_PullUpsPortB
- Expander_Set_PullUpsPortAB
Expander_Init
Prototype | void Expander_Init(char ModuleAddress); |
---|---|
Returns | Nothing. |
Description | Initializes Port Expander using SPI communication. Port Expander module settings :
Parameters :
|
Requires | Global variables :
must be defined before using this function. |
Example |
// Port Expander module connections sbit SPExpanderRST at RC0_bit; sbit SPExpanderCS at RC1_bit; sbit SPExpanderRST_Direction at TRISC0_bit; sbit SPExpanderCS_Direction at TRISC1_bit; // End Port Expander module connections ... ANSEL = 0; // Configure AN pins as digital I/O ANSELH = 0; // If Port Expander Library uses SPI module SPI1_Init(); // Initialize SPI module used with PortExpander Expander_Init(0); // Initialize Port Expander |
Expander_Init_Advanced
Prototype | void Expander_Init_Advanced(char *rstPort, char rstPin, char haen); |
---|---|
Returns | Nothing. |
Description | Initializes Port Expander using SPI communication. Parameters :
|
Requires |
must be defined before using this function. |
Example |
// Port Expander module connections sbit SPExpanderRST at RC0_bit; sbit SPExpanderCS at RC1_bit; sbit SPExpanderRST_Direction at TRISC0_bit; sbit SPExpanderCS_Direction at TRISC1_bit; // End Port Expander module connections ... ANSEL = 0; // Configure AN pins as digital I/O ANSELH = 0; // If Port Expander Library uses SPI module SPI1_Init(); // Initialize SPI module used with PortExpander Expander_Init_Advanced(&PORTB, 0, 0); // Initialize Port Expander |
Expander_Read_Byte
Prototype | char Expander_Read_Byte(char ModuleAddress, char RegAddress); |
---|---|
Returns | Byte read. |
Description | The function reads byte from Port Expander. Parameters :
|
Requires | Port Expander must be initialized. |
Example |
// Read a byte from Port Expander's register char read_data; ... read_data = Expander_Read_Byte(0,1); |
Expander_Write_Byte
Prototype | void Expander_Write_Byte(char ModuleAddress, char RegAddress, char Data); |
---|---|
Returns | Nothing. |
Description | Routine writes a byte to Port Expander. Parameters :
|
Requires | Port Expander must be initialized. |
Example |
// Write a byte to the Port Expander's register Expander_Write_Byte(0,1,0xFF); |
Expander_Read_PortA
Prototype | char Expander_Read_PortA(char ModuleAddress); |
---|---|
Returns | Byte read. |
Description | The function reads byte from Port Expanderβs PortA. Parameters :
|
Requires | Port Expander must be initialized.
Port Expanderβs PortA should be configured as input. |
Example |
// Read a byte from Port Expander's PORTA char read_data; ... Expander_Set_DirectionPortA(0,0xFF); // set expander's porta to be input ... read_data = Expander_Read_PortA(0); |
Expander_Read_PortB
Prototype | char Expander_Read_PortB(char ModuleAddress); |
---|---|
Returns | Byte read. |
Description | The function reads byte from Port Expanderβs PortB. Parameters :
|
Requires | Port Expander must be initialized.
Port Expanderβs PortB should be configured as input. |
Example |
// Read a byte from Port Expander's PORTB char read_data; ... Expander_Set_DirectionPortB(0,0xFF); // set expander's portb to be input ... read_data = Expander_Read_PortB(0); |
For more detail: Extend I/O Ports using PICΒ