Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed MCP23S17 PinDetect USBDevice
part7.h
00001 // A simple IO demo using the MCP23S17 library 00002 // 00003 // MCP23S17 Library Copyright (c) 2010 Romilly Cocking 00004 // Released under the MIT License: http://mbed.org/license/mit 00005 // 00006 // See http://mbed.org/users/romilly/notebook/mcp23s17-addressable-16-bit-io-expander-with-spi/ 00007 // 00008 // 00009 // MCP23S17 datasheet http://ww1.microchip.com/downloads/en/DeviceDoc/21952b.pdf 00010 // uses MCP23S17 library version 0.4 00011 00012 #include "mbed.h" 00013 #include "MCP23S17.h" 00014 // Create SPI bus 00015 SPI spi(p5, p6, p7); 00016 // 00017 // Wiring Connections: 00018 // mbed p5,p6,p7 are tied to MCP23S17 SI, SO, SCK pins 00019 // mbed p20 to MCP23S17 CS 00020 // MCP23S17 reset pin pulled high 00021 // MCP23S17 GPA0 connected to GPB0 for loopback test 00022 // A0, A1, A2 of the MCP23S17 are tied to ground on the breadboard, so the 8-bit address for writes is 0x40 00023 // This is referred to as the opcode in the device datasheet 00024 char Opcode = 0x40; 00025 00026 // Next create a MCP23S17 00027 // mbed p20 is connected to ~chipSelect on the MCP23S17 00028 MCP23S17 chip = MCP23S17(spi, p20, Opcode); 00029 00030 // Optional software reset - mbed p14 to MCP23S17 reset pin 00031 // DigitalOut reset(p14); 00032 00033 int pb; 00034 00035 int run_part7() { 00036 // The MCP23S17 reset pin can just be pulled high, since it has a power on reset circuit. 00037 // The reset pin can be used for a software forced reset by pulling it low with an mbed GPIO pin. 00038 // But just leave it pulled high for this simple demo code. 00039 // After a power on reset, both IO ports default to input mode 00040 // 00041 // Here is the optional code for a software reset 00042 // reset = 0; 00043 // wait_us(1); 00044 // reset = 1; 00045 // 00046 // Set all 8 Port A bits to output direction 00047 chip.direction(PORT_A, 0x00); 00048 // Set all 8 Port B bits to input direction 00049 chip.direction(PORT_B, 0xFF); 00050 // Start Loopback test sending out and reading back values 00051 // loopback test uses A0 and B0 pins - so use a wire to jumper those two pins on MCP23S17 together 00052 while (1) { 00053 // write value of pushbutton to Port A 00054 pb = chip.read(PORT_B) & 0x01; 00055 chip.write(PORT_A, !pb); 00056 wait(.5); 00057 // read back value from MCP23S17 Port B and display B0 on myled 00058 } 00059 }
Generated on Sun Jul 17 2022 17:11:11 by
1.7.2