PIC18 LaurTec Library  3.3.1
Open Source C Library for PIC18 Microcontrollers based on C18 - XC8 Compilers
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros
MCP2300x.c File Reference
#include "MCP2300x.h"

Go to the source code of this file.

Functions

void MCP2300x_initialize (unsigned char crystal_frequency_MHz, unsigned int baud_rate_KHz)
 
signed char MCP2300x_set_register (unsigned char device_address, unsigned char register_add, unsigned char data)
 
unsigned char MCP2300x_get_register (unsigned char device_address, unsigned char register_add)
 
signed char MCP2300x_set_port_direction (unsigned char device_address, unsigned char direction)
 
signed char MCP2300x_set_port_value (unsigned char device_address, unsigned char value)
 
signed char MCP2300x_set_port_polarity (unsigned char device_address, unsigned char value)
 
signed char MCP2300x_set_port_pull_up_resistor (unsigned char device_address, unsigned char value)
 
unsigned char MCP2300x_get_port_value (unsigned char device_address)
 
signed char MCP2300x_set_port_interrupt (unsigned char device_address, unsigned char value)
 
signed char MCP2300x_set_port_configuration (unsigned char device_address, unsigned char value)
 
signed char MCP2300x_set_interrupt_compare_value (unsigned char device_address, unsigned char value)
 
signed char MCP2300x_set_interrupt_compare_enable (unsigned char device_address, unsigned char value)
 
unsigned char MCP2300x_get_port_interrupt_flag (unsigned char device_address)
 
unsigned char MCP2300x_get_port_interrupt_capture (unsigned char device_address)
 

Function Documentation

unsigned char MCP2300x_get_port_interrupt_capture ( unsigned char  device_address)

This function reads from the INTCAP register, enabling the read of the pin flags that caused the interrupt. In particular INTCAP register it captures the value at the time of the interrupt so it may differ from the value of INTF register.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
Returns
Content of the interrupt flag register captured at the time of the interrupt event.
Note
This register is read only. A bit set to 1 it means that the input has generated an interrupt.

Definition at line 183 of file MCP2300x.c.

References get_register_MCP2300x, and MCP2300x_INTCAP.

unsigned char MCP2300x_get_port_interrupt_flag ( unsigned char  device_address)

This function reads from the INTF register, enabling the read of the pin flags that caused the interrupt.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
Returns
Content of the interrupt flag register.
Note
This register is read only. A bit set to 1 it means that the input has generated an interrupt.

Definition at line 174 of file MCP2300x.c.

References get_register_MCP2300x, and MCP2300x_INTF.

unsigned char MCP2300x_get_port_value ( unsigned char  device_address)

This function reads from the GPIO register, which is equivalent to read the value of the external pins.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
Returns
It returns the values of the external pins.

Definition at line 123 of file MCP2300x.c.

References get_register_MCP2300x, and MCP2300x_GPIO.

unsigned char MCP2300x_get_register ( unsigned char  device_address,
unsigned char  register_add 
)

This function reads from any register of the MCP2300x device.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
register_addAddress of the register that must be written.
Returns
Content out of the pointed register.
Note
For the register address you can use the name of the register as in the data sheet. The same name, upper case, are defined in the header file.

Definition at line 75 of file MCP2300x.c.

References INTERNAL_ADDRESS.

void MCP2300x_initialize ( unsigned char  crystal_frequency_MHz,
unsigned int  baud_rate_KHz 
)

This function initialize the I2C module accordingly to the clock and baud rate.

Parameters
crystal_frequency_MHzClock frequency expressed in MHz
baud_rate_KHzBaud rate expressed in KHz
Returns
Note
If other devices are connected on the I2C bus the baud rate would be changed by the function. Among several call from different device initializations, only the last one will be reflected in the I2C module configuration.

Definition at line 49 of file MCP2300x.c.

signed char MCP2300x_set_interrupt_compare_enable ( unsigned char  device_address,
unsigned char  value 
)

This function writes into INTCON register, which is equivalent to select the interrupt modality. A zero sets an interrupt on pin change, while a 1 enable the comparison with the DEFVAL Register.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueValue that enables the pins where the comparison must be activated.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Note
Refer to the data sheet for more details on the interrupt on change and on comparison with DEFVAL register

Definition at line 165 of file MCP2300x.c.

References MCP2300x_INTCON, and set_register_MCP2300x.

signed char MCP2300x_set_interrupt_compare_value ( unsigned char  device_address,
unsigned char  value 
)

This function writes into DEFVAL register, which is equivalent to set the value for the interrupt comparison. If bit 2 is set to 1 a 0 into pin 2 will trigger the interrupt.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueByte that reflects the value of interest to be used for the comparison.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Note
Refer to the data sheet for more details on the interrupt on change and on comparison with DEFVAL register.

Definition at line 156 of file MCP2300x.c.

References MCP2300x_DEFVAL, and set_register_MCP2300x.

signed char MCP2300x_set_port_configuration ( unsigned char  device_address,
unsigned char  value 
)

This function writes into IOCON register, enabling some internal configurations. SEQOP, DISSLW, ODR, INTPOL

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueValue that reflects the pins where the comparison must be enabled.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Note
Refer to the data sheet for more details on available options. Constants are defined in the to enable and easy use of the settings.

Definition at line 149 of file MCP2300x.c.

References MCP2300x_IOCON, and set_register_MCP2300x.

signed char MCP2300x_set_port_direction ( unsigned char  device_address,
unsigned char  direction 
)

This function writes into IODIR register, defining the direction of the pin. A 1 in a bit is equivalent to set the corresponding pin as input, while a 0 sets it to Output.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
directionValue that defines the direction of each pin.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision

Definition at line 87 of file MCP2300x.c.

References MCP2300x_IODIR, and set_register_MCP2300x.

signed char MCP2300x_set_port_interrupt ( unsigned char  device_address,
unsigned char  value 
)

This function writes into GPINTEN register, which is equivalent to activate the interrupts. A bit set to 1 enables the interrupt to the corresponding pin. This option affects only pins that are set as inputs.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueValue to enable the pins where the interrupt must be activated.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Warning
The interrupt of the MCP2300x device must be enabled before the Microcontroller General Interrupt Enable. A dummy read of the GPIO register is internally performed to clear any pending interrupt.

Definition at line 133 of file MCP2300x.c.

References get_register_MCP2300x, MCP2300x_GPINTEN, MCP2300x_GPIO, and set_register_MCP2300x.

signed char MCP2300x_set_port_polarity ( unsigned char  device_address,
unsigned char  value 
)

This function writes into IPOL register, which defines the polarity of the input pins.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueThe value sets the corresponding pin with an inverting value (input only).
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision

Definition at line 105 of file MCP2300x.c.

References MCP2300x_IPOL, and set_register_MCP2300x.

signed char MCP2300x_set_port_pull_up_resistor ( unsigned char  device_address,
unsigned char  value 
)

This function writes into GPPU register, which is equivalent to activate the pull-up resistor. A bit set to 1 enables the pull-up resistor to the corresponding pin. This option affect only the pins that are set as inputs.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueValue to enable the pins where the pull-up resistor must be activated.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision

Definition at line 114 of file MCP2300x.c.

References MCP2300x_GPPU, and set_register_MCP2300x.

signed char MCP2300x_set_port_value ( unsigned char  device_address,
unsigned char  value 
)

This function writes into the GPIO register, which is equivalent to write to the output port.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
valueValue that must be written to the output port.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Note
Writing to the output port affects only the pins that are set as output.

Definition at line 96 of file MCP2300x.c.

References MCP2300x_GPIO, and set_register_MCP2300x.

signed char MCP2300x_set_register ( unsigned char  device_address,
unsigned char  register_add,
unsigned char  data 
)

This function writes into any register of the MCP2300x device.

Parameters
device_addressHardware Address of the device (A0, A1, A2 only) [min: 0, max: 7].
register_addAddress of the register that must be written.
dataData that must be written into the register.
Returns
status 1: The byte has been properly written -1: Bus Collision error -2: Not Ack error condition -3: Write collision
Note
For the register address you can use the name of the register as in the data sheet. The same name, upper case, are defined in the header file.

Definition at line 60 of file MCP2300x.c.

References INTERNAL_ADDRESS.