Remarks
Mcp23s09 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
private Mcp23s09 mcp;
public override Task Initialize()
{
var interruptPort = Device.CreateDigitalInterruptPort(Device.Pins.D00, InterruptMode.EdgeRising);
var chipSelectPort = Device.CreateDigitalOutputPort(Device.Pins.D01);
var resetPort = Device.CreateDigitalOutputPort(Device.Pins.D02);
mcp = new Mcp23s09(Device.CreateSpiBus(), chipSelectPort, interruptPort, resetPort);
return base.Initialize();
}
public override Task Run()
{
while (true)
{
TestBulkDigitalOutputPortWrites(20);
TestDigitalOutputPorts(2);
}
}
private void TestDigitalOutputPorts(int loopCount)
{
var out00 = mcp.CreateDigitalOutputPort(mcp.Pins.GP0);
var out01 = mcp.CreateDigitalOutputPort(mcp.Pins.GP1);
var out02 = mcp.CreateDigitalOutputPort(mcp.Pins.GP2);
var out03 = mcp.CreateDigitalOutputPort(mcp.Pins.GP3);
var out04 = mcp.CreateDigitalOutputPort(mcp.Pins.GP4);
var out05 = mcp.CreateDigitalOutputPort(mcp.Pins.GP5);
var out06 = mcp.CreateDigitalOutputPort(mcp.Pins.GP6);
var out07 = mcp.CreateDigitalOutputPort(mcp.Pins.GP7);
var outputPorts = new List<IDigitalOutputPort>()
{
out00, out01, out02, out03, out04, out05, out06, out07
};
foreach (var outputPort in outputPorts)
{
outputPort.State = true;
}
for (int l = 0; l < loopCount; l++)
{
// loop through all the outputs
for (int i = 0; i < outputPorts.Count; i++)
{
// turn them all off
foreach (var outputPort in outputPorts)
{
outputPort.State = false;
}
// turn on just one
outputPorts[i].State = true;
Thread.Sleep(250);
}
}
// cleanup
for (int i = 0; i < outputPorts.Count; i++)
{
outputPorts[i].Dispose();
}
}
private void TestBulkDigitalOutputPortWrites(int loopCount)
{
byte mask = 0x0;
for (int l = 0; l < loopCount; l++)
{
for (int i = 0; i < 8; i++)
{
mcp.WriteToPorts(mask);
mask = (byte)(1 << i);
Thread.Sleep(5);
}
}
}
Sample project(s) available on GitHub
Wiring Example
To wire a Mcp23s09 to your Meadow board, connect the following:
Mcp23s09 | Meadow Pin |
---|---|
GND | GND |
VCC | 3V3 |
SCL | D08 (SCL Pin) |
SDA | D07 (SDA Pin) |
Syntax
public class Mcp23s09 : Mcp23x0x, IDigitalInputOutputController, IDigitalInputController, IDigitalOutputController, ISpiPeripheral, II2cPeripheral, IDigitalInterruptController, IPinController
Constructors
Mcp23s09(ISpiBus, IDigitalOutputPort, IDigitalInterruptPort?, IDigitalOutputPort)
Creates an Mcp23s09 object
Declaration
public Mcp23s09(ISpiBus spiBus, IDigitalOutputPort chipSelectPort, IDigitalInterruptPort? interruptPort = null, IDigitalOutputPort resetPort = null)
Parameters
Type | Name | Description |
---|---|---|
ISpiBus | spiBus | The SPI bus |
IDigitalOutputPort | chipSelectPort | Chip select port |
IDigitalInterruptPort | interruptPort | optional interupt port, needed for input interrupts |
IDigitalOutputPort | resetPort | Optional Meadow output port used to reset the mcp expander |
Remarks
Mcp23s09 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
private Mcp23s09 mcp;
public override Task Initialize()
{
var interruptPort = Device.CreateDigitalInterruptPort(Device.Pins.D00, InterruptMode.EdgeRising);
var chipSelectPort = Device.CreateDigitalOutputPort(Device.Pins.D01);
var resetPort = Device.CreateDigitalOutputPort(Device.Pins.D02);
mcp = new Mcp23s09(Device.CreateSpiBus(), chipSelectPort, interruptPort, resetPort);
return base.Initialize();
}
public override Task Run()
{
while (true)
{
TestBulkDigitalOutputPortWrites(20);
TestDigitalOutputPorts(2);
}
}
private void TestDigitalOutputPorts(int loopCount)
{
var out00 = mcp.CreateDigitalOutputPort(mcp.Pins.GP0);
var out01 = mcp.CreateDigitalOutputPort(mcp.Pins.GP1);
var out02 = mcp.CreateDigitalOutputPort(mcp.Pins.GP2);
var out03 = mcp.CreateDigitalOutputPort(mcp.Pins.GP3);
var out04 = mcp.CreateDigitalOutputPort(mcp.Pins.GP4);
var out05 = mcp.CreateDigitalOutputPort(mcp.Pins.GP5);
var out06 = mcp.CreateDigitalOutputPort(mcp.Pins.GP6);
var out07 = mcp.CreateDigitalOutputPort(mcp.Pins.GP7);
var outputPorts = new List<IDigitalOutputPort>()
{
out00, out01, out02, out03, out04, out05, out06, out07
};
foreach (var outputPort in outputPorts)
{
outputPort.State = true;
}
for (int l = 0; l < loopCount; l++)
{
// loop through all the outputs
for (int i = 0; i < outputPorts.Count; i++)
{
// turn them all off
foreach (var outputPort in outputPorts)
{
outputPort.State = false;
}
// turn on just one
outputPorts[i].State = true;
Thread.Sleep(250);
}
}
// cleanup
for (int i = 0; i < outputPorts.Count; i++)
{
outputPorts[i].Dispose();
}
}
private void TestBulkDigitalOutputPortWrites(int loopCount)
{
byte mask = 0x0;
for (int l = 0; l < loopCount; l++)
{
for (int i = 0; i < 8; i++)
{
mcp.WriteToPorts(mask);
mask = (byte)(1 << i);
Thread.Sleep(5);
}
}
}
Sample project(s) available on GitHub
Wiring Example
To wire a Mcp23s09 to your Meadow board, connect the following:
Mcp23s09 | Meadow Pin |
---|---|
GND | GND |
VCC | 3V3 |
SCL | D08 (SCL Pin) |
SDA | D07 (SDA Pin) |
Mcp23s09(ISpiBus, IPin, IPin)
Creates an Mcp23s09 object
Declaration
public Mcp23s09(ISpiBus spiBus, IPin chipSelectPin, IPin interruptPin = null)
Parameters
Type | Name | Description |
---|---|---|
ISpiBus | spiBus | The SPI bus |
IPin | chipSelectPin | Chip select pin |
IPin | interruptPin | optional interupt pin, needed for input interrupts (InterruptMode: EdgeRising, ResistorMode.InternalPullDown) |
Remarks
Mcp23s09 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
private Mcp23s09 mcp;
public override Task Initialize()
{
var interruptPort = Device.CreateDigitalInterruptPort(Device.Pins.D00, InterruptMode.EdgeRising);
var chipSelectPort = Device.CreateDigitalOutputPort(Device.Pins.D01);
var resetPort = Device.CreateDigitalOutputPort(Device.Pins.D02);
mcp = new Mcp23s09(Device.CreateSpiBus(), chipSelectPort, interruptPort, resetPort);
return base.Initialize();
}
public override Task Run()
{
while (true)
{
TestBulkDigitalOutputPortWrites(20);
TestDigitalOutputPorts(2);
}
}
private void TestDigitalOutputPorts(int loopCount)
{
var out00 = mcp.CreateDigitalOutputPort(mcp.Pins.GP0);
var out01 = mcp.CreateDigitalOutputPort(mcp.Pins.GP1);
var out02 = mcp.CreateDigitalOutputPort(mcp.Pins.GP2);
var out03 = mcp.CreateDigitalOutputPort(mcp.Pins.GP3);
var out04 = mcp.CreateDigitalOutputPort(mcp.Pins.GP4);
var out05 = mcp.CreateDigitalOutputPort(mcp.Pins.GP5);
var out06 = mcp.CreateDigitalOutputPort(mcp.Pins.GP6);
var out07 = mcp.CreateDigitalOutputPort(mcp.Pins.GP7);
var outputPorts = new List<IDigitalOutputPort>()
{
out00, out01, out02, out03, out04, out05, out06, out07
};
foreach (var outputPort in outputPorts)
{
outputPort.State = true;
}
for (int l = 0; l < loopCount; l++)
{
// loop through all the outputs
for (int i = 0; i < outputPorts.Count; i++)
{
// turn them all off
foreach (var outputPort in outputPorts)
{
outputPort.State = false;
}
// turn on just one
outputPorts[i].State = true;
Thread.Sleep(250);
}
}
// cleanup
for (int i = 0; i < outputPorts.Count; i++)
{
outputPorts[i].Dispose();
}
}
private void TestBulkDigitalOutputPortWrites(int loopCount)
{
byte mask = 0x0;
for (int l = 0; l < loopCount; l++)
{
for (int i = 0; i < 8; i++)
{
mcp.WriteToPorts(mask);
mask = (byte)(1 << i);
Thread.Sleep(5);
}
}
}
Sample project(s) available on GitHub
Wiring Example
To wire a Mcp23s09 to your Meadow board, connect the following:
Mcp23s09 | Meadow Pin |
---|---|
GND | GND |
VCC | 3V3 |
SCL | D08 (SCL Pin) |
SDA | D07 (SDA Pin) |
Methods
CreateDigitalOutputPort(IPin, bool)
Creates a new DigitalOutputPort using the specified pin and initial state
Declaration
public IDigitalOutputPort CreateDigitalOutputPort(IPin pin, bool initialState = false)
Parameters
Type | Name | Description |
---|---|---|
IPin | pin | The pin number to create the port on |
bool | initialState | Whether the pin is initially high or low |
Returns
Type | Description |
---|---|
IDigitalOutputPort | IDigitalOutputPort |
Remarks
Mcp23s09 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
private Mcp23s09 mcp;
public override Task Initialize()
{
var interruptPort = Device.CreateDigitalInterruptPort(Device.Pins.D00, InterruptMode.EdgeRising);
var chipSelectPort = Device.CreateDigitalOutputPort(Device.Pins.D01);
var resetPort = Device.CreateDigitalOutputPort(Device.Pins.D02);
mcp = new Mcp23s09(Device.CreateSpiBus(), chipSelectPort, interruptPort, resetPort);
return base.Initialize();
}
public override Task Run()
{
while (true)
{
TestBulkDigitalOutputPortWrites(20);
TestDigitalOutputPorts(2);
}
}
private void TestDigitalOutputPorts(int loopCount)
{
var out00 = mcp.CreateDigitalOutputPort(mcp.Pins.GP0);
var out01 = mcp.CreateDigitalOutputPort(mcp.Pins.GP1);
var out02 = mcp.CreateDigitalOutputPort(mcp.Pins.GP2);
var out03 = mcp.CreateDigitalOutputPort(mcp.Pins.GP3);
var out04 = mcp.CreateDigitalOutputPort(mcp.Pins.GP4);
var out05 = mcp.CreateDigitalOutputPort(mcp.Pins.GP5);
var out06 = mcp.CreateDigitalOutputPort(mcp.Pins.GP6);
var out07 = mcp.CreateDigitalOutputPort(mcp.Pins.GP7);
var outputPorts = new List<IDigitalOutputPort>()
{
out00, out01, out02, out03, out04, out05, out06, out07
};
foreach (var outputPort in outputPorts)
{
outputPort.State = true;
}
for (int l = 0; l < loopCount; l++)
{
// loop through all the outputs
for (int i = 0; i < outputPorts.Count; i++)
{
// turn them all off
foreach (var outputPort in outputPorts)
{
outputPort.State = false;
}
// turn on just one
outputPorts[i].State = true;
Thread.Sleep(250);
}
}
// cleanup
for (int i = 0; i < outputPorts.Count; i++)
{
outputPorts[i].Dispose();
}
}
private void TestBulkDigitalOutputPortWrites(int loopCount)
{
byte mask = 0x0;
for (int l = 0; l < loopCount; l++)
{
for (int i = 0; i < 8; i++)
{
mcp.WriteToPorts(mask);
mask = (byte)(1 << i);
Thread.Sleep(5);
}
}
}
Sample project(s) available on GitHub
Wiring Example
To wire a Mcp23s09 to your Meadow board, connect the following:
Mcp23s09 | Meadow Pin |
---|---|
GND | GND |
VCC | 3V3 |
SCL | D08 (SCL Pin) |
SDA | D07 (SDA Pin) |
CreateDigitalOutputPort(IPin, bool, OutputType)
Creates a new DigitalOutputPort using the specified pin and initial state
Declaration
public override IDigitalOutputPort CreateDigitalOutputPort(IPin pin, bool initialState = false, OutputType outputType = OutputType.OpenDrain)
Parameters
Type | Name | Description |
---|---|---|
IPin | pin | The pin number to create the port on |
bool | initialState | Whether the pin is initially high or low |
OutputType | outputType | The output type |
Returns
Type | Description |
---|---|
IDigitalOutputPort | IDigitalOutputPort |
Overrides
Remarks
Mcp23s09 | |
---|---|
Status | |
Source code | GitHub |
Datasheet(s) | GitHub |
NuGet package |
Code Example
private Mcp23s09 mcp;
public override Task Initialize()
{
var interruptPort = Device.CreateDigitalInterruptPort(Device.Pins.D00, InterruptMode.EdgeRising);
var chipSelectPort = Device.CreateDigitalOutputPort(Device.Pins.D01);
var resetPort = Device.CreateDigitalOutputPort(Device.Pins.D02);
mcp = new Mcp23s09(Device.CreateSpiBus(), chipSelectPort, interruptPort, resetPort);
return base.Initialize();
}
public override Task Run()
{
while (true)
{
TestBulkDigitalOutputPortWrites(20);
TestDigitalOutputPorts(2);
}
}
private void TestDigitalOutputPorts(int loopCount)
{
var out00 = mcp.CreateDigitalOutputPort(mcp.Pins.GP0);
var out01 = mcp.CreateDigitalOutputPort(mcp.Pins.GP1);
var out02 = mcp.CreateDigitalOutputPort(mcp.Pins.GP2);
var out03 = mcp.CreateDigitalOutputPort(mcp.Pins.GP3);
var out04 = mcp.CreateDigitalOutputPort(mcp.Pins.GP4);
var out05 = mcp.CreateDigitalOutputPort(mcp.Pins.GP5);
var out06 = mcp.CreateDigitalOutputPort(mcp.Pins.GP6);
var out07 = mcp.CreateDigitalOutputPort(mcp.Pins.GP7);
var outputPorts = new List<IDigitalOutputPort>()
{
out00, out01, out02, out03, out04, out05, out06, out07
};
foreach (var outputPort in outputPorts)
{
outputPort.State = true;
}
for (int l = 0; l < loopCount; l++)
{
// loop through all the outputs
for (int i = 0; i < outputPorts.Count; i++)
{
// turn them all off
foreach (var outputPort in outputPorts)
{
outputPort.State = false;
}
// turn on just one
outputPorts[i].State = true;
Thread.Sleep(250);
}
}
// cleanup
for (int i = 0; i < outputPorts.Count; i++)
{
outputPorts[i].Dispose();
}
}
private void TestBulkDigitalOutputPortWrites(int loopCount)
{
byte mask = 0x0;
for (int l = 0; l < loopCount; l++)
{
for (int i = 0; i < 8; i++)
{
mcp.WriteToPorts(mask);
mask = (byte)(1 << i);
Thread.Sleep(5);
}
}
}
Sample project(s) available on GitHub
Wiring Example
To wire a Mcp23s09 to your Meadow board, connect the following:
Mcp23s09 | Meadow Pin |
---|---|
GND | GND |
VCC | 3V3 |
SCL | D08 (SCL Pin) |
SDA | D07 (SDA Pin) |