Marc Bax / Mbed 2 deprecated Flexbook180111a

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Committer:
marcbax
Date:
Thu Jan 11 13:42:27 2018 +0000
Revision:
0:c643d398cdb6
Marc Bax version 180111. It hangs on the WritePartImage in the RedrawAlphabet routine in hangman.cpp. Within that call it does execute Ypos(), but not Xpos().

Who changed what in which revision?

UserRevisionLine numberNew contents of line
marcbax 0:c643d398cdb6 1 //
marcbax 0:c643d398cdb6 2 // Filename: mcp23s17.h
marcbax 0:c643d398cdb6 3 //
marcbax 0:c643d398cdb6 4 // Flexbook Hardware Abstraction Layer.
marcbax 0:c643d398cdb6 5 //
marcbax 0:c643d398cdb6 6
marcbax 0:c643d398cdb6 7 #ifndef MCP23S17_H
marcbax 0:c643d398cdb6 8 #define MCP23S17_H
marcbax 0:c643d398cdb6 9
marcbax 0:c643d398cdb6 10 #include "mbed.h"
marcbax 0:c643d398cdb6 11
marcbax 0:c643d398cdb6 12 namespace HAL {
marcbax 0:c643d398cdb6 13
marcbax 0:c643d398cdb6 14 /**
marcbax 0:c643d398cdb6 15 * @brief MCP23S17 register addresses in bank 0 mode.
marcbax 0:c643d398cdb6 16 */
marcbax 0:c643d398cdb6 17 enum REG_MCP23S17
marcbax 0:c643d398cdb6 18 {
marcbax 0:c643d398cdb6 19 IODIRA = 0x00,
marcbax 0:c643d398cdb6 20 IODIRB = 0x01,
marcbax 0:c643d398cdb6 21 IPOLA = 0x02,
marcbax 0:c643d398cdb6 22 IPOLB = 0x03,
marcbax 0:c643d398cdb6 23 GPINTENA = 0x04,
marcbax 0:c643d398cdb6 24 GPINTENB = 0x05,
marcbax 0:c643d398cdb6 25 DEFVALA = 0x06,
marcbax 0:c643d398cdb6 26 DEFVALB = 0x07,
marcbax 0:c643d398cdb6 27 INTCONA = 0x08,
marcbax 0:c643d398cdb6 28 INTCONB = 0x09,
marcbax 0:c643d398cdb6 29 IOCON1 = 0x0a,
marcbax 0:c643d398cdb6 30 IOCON2 = 0x0b,
marcbax 0:c643d398cdb6 31 GPPUA = 0x0c,
marcbax 0:c643d398cdb6 32 GPPUB = 0x0d,
marcbax 0:c643d398cdb6 33 INTFA = 0x0e,
marcbax 0:c643d398cdb6 34 INTFB = 0x0f,
marcbax 0:c643d398cdb6 35 INTCAPA = 0x10,
marcbax 0:c643d398cdb6 36 INTCAPB = 0x11,
marcbax 0:c643d398cdb6 37 GPIOA = 0x12,
marcbax 0:c643d398cdb6 38 GPIOB = 0x13,
marcbax 0:c643d398cdb6 39 OLATA = 0x14,
marcbax 0:c643d398cdb6 40 OLATB = 0x15
marcbax 0:c643d398cdb6 41 };
marcbax 0:c643d398cdb6 42
marcbax 0:c643d398cdb6 43 /**
marcbax 0:c643d398cdb6 44 * @brief Microchip MCP23S17 encapsulation.
marcbax 0:c643d398cdb6 45 * This chip is an SPI connected I/O expander.
marcbax 0:c643d398cdb6 46 *
marcbax 0:c643d398cdb6 47 * Example usage:
marcbax 0:c643d398cdb6 48 <pre>
marcbax 0:c643d398cdb6 49 SPI spi(p5, p6, p7);
marcbax 0:c643d398cdb6 50 DigitalOut cs(p19);
marcbax 0:c643d398cdb6 51 MCP23S17 mcp23s17(0x00, spi, cs);
marcbax 0:c643d398cdb6 52 ...
marcbax 0:c643d398cdb6 53 mcp23s17.Write(GPIOB, 0xaa);
marcbax 0:c643d398cdb6 54 </pre>
marcbax 0:c643d398cdb6 55 *
marcbax 0:c643d398cdb6 56 * The MCP23S17 uses pins 5, 6, 7 (SPI MOSI, MISO, SCK) and 19 (CS) and
marcbax 0:c643d398cdb6 57 * the write command sets GPIOB to 0xaa. The chip address is 0x00.
marcbax 0:c643d398cdb6 58 *
marcbax 0:c643d398cdb6 59 * Note that this code example does not cover the setup of the chip
marcbax 0:c643d398cdb6 60 * configuration registers.
marcbax 0:c643d398cdb6 61 */
marcbax 0:c643d398cdb6 62 class MCP23S17
marcbax 0:c643d398cdb6 63 {
marcbax 0:c643d398cdb6 64 public:
marcbax 0:c643d398cdb6 65 /**
marcbax 0:c643d398cdb6 66 * @brief Constructor.
marcbax 0:c643d398cdb6 67 * @param address The SPI address offset of the chip.
marcbax 0:c643d398cdb6 68 * @param SPI the SPI to use for communication.
marcbax 0:c643d398cdb6 69 * @param cs The chip select pin.
marcbax 0:c643d398cdb6 70 */
marcbax 0:c643d398cdb6 71 MCP23S17(int address, SPI &spi, DigitalOut &cs);
marcbax 0:c643d398cdb6 72
marcbax 0:c643d398cdb6 73 /**
marcbax 0:c643d398cdb6 74 * @brief Read a register.
marcbax 0:c643d398cdb6 75 * @param address The SPI address of the MCP23S17.
marcbax 0:c643d398cdb6 76 * @param reg The register to read.
marcbax 0:c643d398cdb6 77 * @return The register value.
marcbax 0:c643d398cdb6 78 */
marcbax 0:c643d398cdb6 79 int Read(REG_MCP23S17 reg);
marcbax 0:c643d398cdb6 80
marcbax 0:c643d398cdb6 81 /**
marcbax 0:c643d398cdb6 82 * @brief Write a register.
marcbax 0:c643d398cdb6 83 * @param address The SPI address of the MCP23S17.
marcbax 0:c643d398cdb6 84 * @param reg The register to write.
marcbax 0:c643d398cdb6 85 * @param value The value to write to the register.
marcbax 0:c643d398cdb6 86 */
marcbax 0:c643d398cdb6 87 void Write(REG_MCP23S17 reg, int value);
marcbax 0:c643d398cdb6 88
marcbax 0:c643d398cdb6 89 private:
marcbax 0:c643d398cdb6 90 int address;
marcbax 0:c643d398cdb6 91 SPI &spi;
marcbax 0:c643d398cdb6 92 DigitalOut &cs;
marcbax 0:c643d398cdb6 93 };
marcbax 0:c643d398cdb6 94
marcbax 0:c643d398cdb6 95 } // End HAL namespace.
marcbax 0:c643d398cdb6 96
marcbax 0:c643d398cdb6 97 #endif // MCP23S17_H