test

Committer:
williamweatherholtz
Date:
Mon Apr 16 13:15:07 2018 +0000
Revision:
0:ef4b1297d850
Child:
1:b686a4955357
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
williamweatherholtz 0:ef4b1297d850 1 /******************************************************************//**
williamweatherholtz 0:ef4b1297d850 2 * @file max7219.h
williamweatherholtz 0:ef4b1297d850 3 * Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.
williamweatherholtz 0:ef4b1297d850 4 *
williamweatherholtz 0:ef4b1297d850 5 * Permission is hereby granted, free of charge, to any person obtaining a
williamweatherholtz 0:ef4b1297d850 6 * copy of this software and associated documentation files (the "Software"),
williamweatherholtz 0:ef4b1297d850 7 * to deal in the Software without restriction, including without limitation
williamweatherholtz 0:ef4b1297d850 8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
williamweatherholtz 0:ef4b1297d850 9 * and/or sell copies of the Software, and to permit persons to whom the
williamweatherholtz 0:ef4b1297d850 10 * Software is furnished to do so, subject to the following conditions:
williamweatherholtz 0:ef4b1297d850 11 *
williamweatherholtz 0:ef4b1297d850 12 * The above copyright notice and this permission notice shall be included
williamweatherholtz 0:ef4b1297d850 13 * in all copies or substantial portions of the Software.
williamweatherholtz 0:ef4b1297d850 14 *
williamweatherholtz 0:ef4b1297d850 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
williamweatherholtz 0:ef4b1297d850 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
williamweatherholtz 0:ef4b1297d850 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
williamweatherholtz 0:ef4b1297d850 18 * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
williamweatherholtz 0:ef4b1297d850 19 * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
williamweatherholtz 0:ef4b1297d850 20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
williamweatherholtz 0:ef4b1297d850 21 * OTHER DEALINGS IN THE SOFTWARE.
williamweatherholtz 0:ef4b1297d850 22 *
williamweatherholtz 0:ef4b1297d850 23 * Except as contained in this notice, the name of Maxim Integrated
williamweatherholtz 0:ef4b1297d850 24 * Products, Inc. shall not be used except as stated in the Maxim Integrated
williamweatherholtz 0:ef4b1297d850 25 * Products, Inc. Branding Policy.
williamweatherholtz 0:ef4b1297d850 26 *
williamweatherholtz 0:ef4b1297d850 27 * The mere transfer of this software does not imply any licenses
williamweatherholtz 0:ef4b1297d850 28 * of trade secrets, proprietary technology, copyrights, patents,
williamweatherholtz 0:ef4b1297d850 29 * trademarks, maskwork rights, or any other form of intellectual
williamweatherholtz 0:ef4b1297d850 30 * property whatsoever. Maxim Integrated Products, Inc. retains all
williamweatherholtz 0:ef4b1297d850 31 * ownership rights.
williamweatherholtz 0:ef4b1297d850 32 **********************************************************************/
williamweatherholtz 0:ef4b1297d850 33
williamweatherholtz 0:ef4b1297d850 34
williamweatherholtz 0:ef4b1297d850 35 #ifndef AS1115_H
williamweatherholtz 0:ef4b1297d850 36 #define AS1115_H
williamweatherholtz 0:ef4b1297d850 37
williamweatherholtz 0:ef4b1297d850 38 #include "mbed.h"
williamweatherholtz 0:ef4b1297d850 39
williamweatherholtz 0:ef4b1297d850 40
williamweatherholtz 0:ef4b1297d850 41 /**
williamweatherholtz 0:ef4b1297d850 42 * @brief Structure for device configuration
williamweatherholtz 0:ef4b1297d850 43 * @code
williamweatherholtz 0:ef4b1297d850 44 * #include "max7219.h"
williamweatherholtz 0:ef4b1297d850 45 *
williamweatherholtz 0:ef4b1297d850 46 * max7219_configuration_t cfg = {
williamweatherholtz 0:ef4b1297d850 47 * .device_number = 1,
williamweatherholtz 0:ef4b1297d850 48 * .decode_mode = 0,
williamweatherholtz 0:ef4b1297d850 49 * .intensity = Max7219::MAX7219_INTENSITY_8,
williamweatherholtz 0:ef4b1297d850 50 * .scan_limit = Max7219::MAX7219_SCAN_8
williamweatherholtz 0:ef4b1297d850 51 * };
williamweatherholtz 0:ef4b1297d850 52 * @endcode
williamweatherholtz 0:ef4b1297d850 53 */
williamweatherholtz 0:ef4b1297d850 54 typedef struct
williamweatherholtz 0:ef4b1297d850 55 {
williamweatherholtz 0:ef4b1297d850 56 uint8_t device_number;
williamweatherholtz 0:ef4b1297d850 57 uint8_t decode_mode;
williamweatherholtz 0:ef4b1297d850 58 uint8_t intensity;
williamweatherholtz 0:ef4b1297d850 59 uint8_t scan_limit;
williamweatherholtz 0:ef4b1297d850 60 }max7219_configuration_t;
williamweatherholtz 0:ef4b1297d850 61
williamweatherholtz 0:ef4b1297d850 62
williamweatherholtz 0:ef4b1297d850 63 /**
williamweatherholtz 0:ef4b1297d850 64 * @brief Serially Interfaced, 8-Digit, LED Display Driver
williamweatherholtz 0:ef4b1297d850 65 *
williamweatherholtz 0:ef4b1297d850 66 * @details The MAX7219/MAX7221 are compact, serial input/output common-cathode
williamweatherholtz 0:ef4b1297d850 67 * display drivers that interface microprocessors (µPs) to 7-segment numeric
williamweatherholtz 0:ef4b1297d850 68 * LED displays of up to 8 digits, bar-graph displays, or 64 individual LEDs.
williamweatherholtz 0:ef4b1297d850 69 * Included on-chip are a BCD code-B decoder, multiplex scan circuitry, segment
williamweatherholtz 0:ef4b1297d850 70 * and digit drivers, and an 8x8 static RAM that stores each digit. Only one
williamweatherholtz 0:ef4b1297d850 71 * external resistor is required to set the segment current for all LEDs.
williamweatherholtz 0:ef4b1297d850 72 * The MAX7221 is compatible with SPI™, QSPI™, and MICROWIRE™, and has
williamweatherholtz 0:ef4b1297d850 73 * slew-rate-limited segment drivers to reduce EMI.
williamweatherholtz 0:ef4b1297d850 74 *
williamweatherholtz 0:ef4b1297d850 75 * @code
williamweatherholtz 0:ef4b1297d850 76 * #include "mbed.h"
williamweatherholtz 0:ef4b1297d850 77 * #include "max7219.h"
williamweatherholtz 0:ef4b1297d850 78 *
williamweatherholtz 0:ef4b1297d850 79 * Max7219 max7219(SPI0_MOSI, SPI0_MISO, SPI0_SCK, SPI0_SS);
williamweatherholtz 0:ef4b1297d850 80 *
williamweatherholtz 0:ef4b1297d850 81 * int main()
williamweatherholtz 0:ef4b1297d850 82 * {
williamweatherholtz 0:ef4b1297d850 83 * max7219_configuration_t cfg = {
williamweatherholtz 0:ef4b1297d850 84 * .device_number = 1,
williamweatherholtz 0:ef4b1297d850 85 * .decode_mode = 0,
williamweatherholtz 0:ef4b1297d850 86 * .intensity = Max7219::MAX7219_INTENSITY_8,
williamweatherholtz 0:ef4b1297d850 87 * .scan_limit = Max7219::MAX7219_SCAN_8
williamweatherholtz 0:ef4b1297d850 88 * };
williamweatherholtz 0:ef4b1297d850 89 *
williamweatherholtz 0:ef4b1297d850 90 * max7219.init_device(cfg);
williamweatherholtz 0:ef4b1297d850 91 * max7219.enable_device(1);
williamweatherholtz 0:ef4b1297d850 92 * max7219.set_display_test();
williamweatherholtz 0:ef4b1297d850 93 * wait(1);
williamweatherholtz 0:ef4b1297d850 94 * max7219.clear_display_test();
williamweatherholtz 0:ef4b1297d850 95 *
williamweatherholtz 0:ef4b1297d850 96 * while (1) {
williamweatherholtz 0:ef4b1297d850 97 * max7219.write_digit(1, Max7219::MAX7219_DIGIT_0, ...
williamweatherholtz 0:ef4b1297d850 98 * }
williamweatherholtz 0:ef4b1297d850 99 * }
williamweatherholtz 0:ef4b1297d850 100 * @endcode
williamweatherholtz 0:ef4b1297d850 101 */
williamweatherholtz 0:ef4b1297d850 102 class Max7219
williamweatherholtz 0:ef4b1297d850 103 {
williamweatherholtz 0:ef4b1297d850 104 public:
williamweatherholtz 0:ef4b1297d850 105
williamweatherholtz 0:ef4b1297d850 106 /**
williamweatherholtz 0:ef4b1297d850 107 * @brief Digit and Control Registers
williamweatherholtz 0:ef4b1297d850 108 * @details The 14 addressable digit and control registers.
williamweatherholtz 0:ef4b1297d850 109 */
williamweatherholtz 0:ef4b1297d850 110 typedef enum
williamweatherholtz 0:ef4b1297d850 111 {
williamweatherholtz 0:ef4b1297d850 112 MAX7219_NO_OP = 0,
williamweatherholtz 0:ef4b1297d850 113 MAX7219_DIGIT_0,
williamweatherholtz 0:ef4b1297d850 114 MAX7219_DIGIT_1,
williamweatherholtz 0:ef4b1297d850 115 MAX7219_DIGIT_2,
williamweatherholtz 0:ef4b1297d850 116 MAX7219_DIGIT_3,
williamweatherholtz 0:ef4b1297d850 117 MAX7219_DIGIT_4,
williamweatherholtz 0:ef4b1297d850 118 MAX7219_DIGIT_5,
williamweatherholtz 0:ef4b1297d850 119 MAX7219_DIGIT_6,
williamweatherholtz 0:ef4b1297d850 120 MAX7219_DIGIT_7,
williamweatherholtz 0:ef4b1297d850 121 MAX7219_DECODE_MODE,
williamweatherholtz 0:ef4b1297d850 122 MAX7219_INTENSITY,
williamweatherholtz 0:ef4b1297d850 123 MAX7219_SCAN_LIMIT,
williamweatherholtz 0:ef4b1297d850 124 MAX7219_SHUTDOWN,
williamweatherholtz 0:ef4b1297d850 125 MAX7219_DISPLAY_TEST = 15
williamweatherholtz 0:ef4b1297d850 126 }max7219_register_e;
williamweatherholtz 0:ef4b1297d850 127
williamweatherholtz 0:ef4b1297d850 128
williamweatherholtz 0:ef4b1297d850 129 /**
williamweatherholtz 0:ef4b1297d850 130 * @brief Intensity values
williamweatherholtz 0:ef4b1297d850 131 * @details Digital control of display brightness is provided by an
williamweatherholtz 0:ef4b1297d850 132 * internal pulse-width modulator, which is controlled by
williamweatherholtz 0:ef4b1297d850 133 * the lower nibble of the intensity register.
williamweatherholtz 0:ef4b1297d850 134 */
williamweatherholtz 0:ef4b1297d850 135 typedef enum
williamweatherholtz 0:ef4b1297d850 136 {
williamweatherholtz 0:ef4b1297d850 137 MAX7219_INTENSITY_0 = 0,
williamweatherholtz 0:ef4b1297d850 138 MAX7219_INTENSITY_1,
williamweatherholtz 0:ef4b1297d850 139 MAX7219_INTENSITY_2,
williamweatherholtz 0:ef4b1297d850 140 MAX7219_INTENSITY_3,
williamweatherholtz 0:ef4b1297d850 141 MAX7219_INTENSITY_4,
williamweatherholtz 0:ef4b1297d850 142 MAX7219_INTENSITY_5,
williamweatherholtz 0:ef4b1297d850 143 MAX7219_INTENSITY_6,
williamweatherholtz 0:ef4b1297d850 144 MAX7219_INTENSITY_7,
williamweatherholtz 0:ef4b1297d850 145 MAX7219_INTENSITY_8,
williamweatherholtz 0:ef4b1297d850 146 MAX7219_INTENSITY_9,
williamweatherholtz 0:ef4b1297d850 147 MAX7219_INTENSITY_A,
williamweatherholtz 0:ef4b1297d850 148 MAX7219_INTENSITY_B,
williamweatherholtz 0:ef4b1297d850 149 MAX7219_INTENSITY_C,
williamweatherholtz 0:ef4b1297d850 150 MAX7219_INTENSITY_D,
williamweatherholtz 0:ef4b1297d850 151 MAX7219_INTENSITY_E,
williamweatherholtz 0:ef4b1297d850 152 MAX7219_INTENSITY_F
williamweatherholtz 0:ef4b1297d850 153 }max7219_intensity_e;
williamweatherholtz 0:ef4b1297d850 154
williamweatherholtz 0:ef4b1297d850 155
williamweatherholtz 0:ef4b1297d850 156 /**
williamweatherholtz 0:ef4b1297d850 157 * @brief Scan limit for mutiplexing digits
williamweatherholtz 0:ef4b1297d850 158 * @details The scan-limit register sets how many digits are
williamweatherholtz 0:ef4b1297d850 159 * displayed, from 1 to 8. They are displayed in a multiplexed
williamweatherholtz 0:ef4b1297d850 160 * manner with a typical display scan rate of 800Hz with 8
williamweatherholtz 0:ef4b1297d850 161 * digits displayed.
williamweatherholtz 0:ef4b1297d850 162 */
williamweatherholtz 0:ef4b1297d850 163 typedef enum
williamweatherholtz 0:ef4b1297d850 164 {
williamweatherholtz 0:ef4b1297d850 165 MAX7219_SCAN_1 = 0,
williamweatherholtz 0:ef4b1297d850 166 MAX7219_SCAN_2,
williamweatherholtz 0:ef4b1297d850 167 MAX7219_SCAN_3,
williamweatherholtz 0:ef4b1297d850 168 MAX7219_SCAN_4,
williamweatherholtz 0:ef4b1297d850 169 MAX7219_SCAN_5,
williamweatherholtz 0:ef4b1297d850 170 MAX7219_SCAN_6,
williamweatherholtz 0:ef4b1297d850 171 MAX7219_SCAN_7,
williamweatherholtz 0:ef4b1297d850 172 MAX7219_SCAN_8
williamweatherholtz 0:ef4b1297d850 173 }max7219_scan_limit_e;
williamweatherholtz 0:ef4b1297d850 174
williamweatherholtz 0:ef4b1297d850 175
williamweatherholtz 0:ef4b1297d850 176 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 177 * @brief Constructor for Max7219 Class.
williamweatherholtz 0:ef4b1297d850 178 *
williamweatherholtz 0:ef4b1297d850 179 * @details Allows user to pass pointer to existing SPI bus
williamweatherholtz 0:ef4b1297d850 180 *
williamweatherholtz 0:ef4b1297d850 181 * On Entry:
williamweatherholtz 0:ef4b1297d850 182 * @param[in] spi_bus - pointer to existing SPI object
williamweatherholtz 0:ef4b1297d850 183 * @param[in] cs - pin to use for cs
williamweatherholtz 0:ef4b1297d850 184 *
williamweatherholtz 0:ef4b1297d850 185 * On Exit:
williamweatherholtz 0:ef4b1297d850 186 *
williamweatherholtz 0:ef4b1297d850 187 * @return None
williamweatherholtz 0:ef4b1297d850 188 **************************************************************/
williamweatherholtz 0:ef4b1297d850 189 Max7219(SPI *spi_bus, PinName cs);
williamweatherholtz 0:ef4b1297d850 190
williamweatherholtz 0:ef4b1297d850 191
williamweatherholtz 0:ef4b1297d850 192 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 193 * @brief Constructor for Max7219 Class.
williamweatherholtz 0:ef4b1297d850 194 *
williamweatherholtz 0:ef4b1297d850 195 * @details Allows user to specify SPI peripheral to use
williamweatherholtz 0:ef4b1297d850 196 *
williamweatherholtz 0:ef4b1297d850 197 * On Entry:
williamweatherholtz 0:ef4b1297d850 198 * @param[in] mosi - pin to use for mosi
williamweatherholtz 0:ef4b1297d850 199 * @param[in] miso - pin to use for miso
williamweatherholtz 0:ef4b1297d850 200 * @param[in] sclk - pin to use for sclk
williamweatherholtz 0:ef4b1297d850 201 * @param[in] cs - pin to use for cs
williamweatherholtz 0:ef4b1297d850 202 *
williamweatherholtz 0:ef4b1297d850 203 * On Exit:
williamweatherholtz 0:ef4b1297d850 204 *
williamweatherholtz 0:ef4b1297d850 205 * @return None
williamweatherholtz 0:ef4b1297d850 206 **************************************************************/
williamweatherholtz 0:ef4b1297d850 207 Max7219(PinName mosi, PinName miso, PinName sclk, PinName cs);
williamweatherholtz 0:ef4b1297d850 208
williamweatherholtz 0:ef4b1297d850 209
williamweatherholtz 0:ef4b1297d850 210 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 211 * @brief Default destructor for Max7219 Class.
williamweatherholtz 0:ef4b1297d850 212 *
williamweatherholtz 0:ef4b1297d850 213 * @details Destroys SPI object if owner
williamweatherholtz 0:ef4b1297d850 214 *
williamweatherholtz 0:ef4b1297d850 215 * On Entry:
williamweatherholtz 0:ef4b1297d850 216 *
williamweatherholtz 0:ef4b1297d850 217 * On Exit:
williamweatherholtz 0:ef4b1297d850 218 *
williamweatherholtz 0:ef4b1297d850 219 * @return None
williamweatherholtz 0:ef4b1297d850 220 **************************************************************/
williamweatherholtz 0:ef4b1297d850 221 ~Max7219();
williamweatherholtz 0:ef4b1297d850 222
williamweatherholtz 0:ef4b1297d850 223
williamweatherholtz 0:ef4b1297d850 224 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 225 * @brief Sets the number of MAX7219 devices being used.
williamweatherholtz 0:ef4b1297d850 226 * Defaults to one
williamweatherholtz 0:ef4b1297d850 227 *
williamweatherholtz 0:ef4b1297d850 228 * @details
williamweatherholtz 0:ef4b1297d850 229 *
williamweatherholtz 0:ef4b1297d850 230 * On Entry:
williamweatherholtz 0:ef4b1297d850 231 * @param[in] num_devices - number of MAX7219 devices being
williamweatherholtz 0:ef4b1297d850 232 * used, max of 255
williamweatherholtz 0:ef4b1297d850 233 *
williamweatherholtz 0:ef4b1297d850 234 * On Exit:
williamweatherholtz 0:ef4b1297d850 235 *
williamweatherholtz 0:ef4b1297d850 236 * @return Returns number of devices
williamweatherholtz 0:ef4b1297d850 237 **************************************************************/
williamweatherholtz 0:ef4b1297d850 238 int32_t set_num_devices(uint8_t num_devices);
williamweatherholtz 0:ef4b1297d850 239
williamweatherholtz 0:ef4b1297d850 240
williamweatherholtz 0:ef4b1297d850 241 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 242 * @brief Tests all devices being used
williamweatherholtz 0:ef4b1297d850 243 *
williamweatherholtz 0:ef4b1297d850 244 * @details Sets bit0 of DISPLAY_TEST regiser in all devices
williamweatherholtz 0:ef4b1297d850 245 *
williamweatherholtz 0:ef4b1297d850 246 * On Entry:
williamweatherholtz 0:ef4b1297d850 247 *
williamweatherholtz 0:ef4b1297d850 248 * On Exit:
williamweatherholtz 0:ef4b1297d850 249 *
williamweatherholtz 0:ef4b1297d850 250 * @return None
williamweatherholtz 0:ef4b1297d850 251 **************************************************************/
williamweatherholtz 0:ef4b1297d850 252 void set_display_test(void);
williamweatherholtz 0:ef4b1297d850 253
williamweatherholtz 0:ef4b1297d850 254
williamweatherholtz 0:ef4b1297d850 255 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 256 * @brief Stops test
williamweatherholtz 0:ef4b1297d850 257 *
williamweatherholtz 0:ef4b1297d850 258 * @details Clear bit0 of DISPLAY_TEST regiser in all devices
williamweatherholtz 0:ef4b1297d850 259 *
williamweatherholtz 0:ef4b1297d850 260 * On Entry:
williamweatherholtz 0:ef4b1297d850 261 *
williamweatherholtz 0:ef4b1297d850 262 * On Exit:
williamweatherholtz 0:ef4b1297d850 263 *
williamweatherholtz 0:ef4b1297d850 264 * @return None
williamweatherholtz 0:ef4b1297d850 265 **************************************************************/
williamweatherholtz 0:ef4b1297d850 266 void clear_display_test(void);
williamweatherholtz 0:ef4b1297d850 267
williamweatherholtz 0:ef4b1297d850 268
williamweatherholtz 0:ef4b1297d850 269 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 270 * @brief Initializes specific device in display with given
williamweatherholtz 0:ef4b1297d850 271 * config data
williamweatherholtz 0:ef4b1297d850 272 *
williamweatherholtz 0:ef4b1297d850 273 * @details
williamweatherholtz 0:ef4b1297d850 274 *
williamweatherholtz 0:ef4b1297d850 275 * On Entry:
williamweatherholtz 0:ef4b1297d850 276 * @param[in] config - Structure containing configuration
williamweatherholtz 0:ef4b1297d850 277 * data of device
williamweatherholtz 0:ef4b1297d850 278 *
williamweatherholtz 0:ef4b1297d850 279 * On Exit:
williamweatherholtz 0:ef4b1297d850 280 *
williamweatherholtz 0:ef4b1297d850 281 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 282 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 283 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 284 **************************************************************/
williamweatherholtz 0:ef4b1297d850 285 int32_t init_device(max7219_configuration_t config);
williamweatherholtz 0:ef4b1297d850 286
williamweatherholtz 0:ef4b1297d850 287
williamweatherholtz 0:ef4b1297d850 288 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 289 * @brief Initializes all devices with given config data
williamweatherholtz 0:ef4b1297d850 290 *
williamweatherholtz 0:ef4b1297d850 291 * @details All devices are configured with given data
williamweatherholtz 0:ef4b1297d850 292 *
williamweatherholtz 0:ef4b1297d850 293 * On Entry:
williamweatherholtz 0:ef4b1297d850 294 * @param[in] config - Structure containing configuration
williamweatherholtz 0:ef4b1297d850 295 * data
williamweatherholtz 0:ef4b1297d850 296 * On Exit:
williamweatherholtz 0:ef4b1297d850 297 *
williamweatherholtz 0:ef4b1297d850 298 * @return None
williamweatherholtz 0:ef4b1297d850 299 **************************************************************/
williamweatherholtz 0:ef4b1297d850 300 void init_display(max7219_configuration_t config);
williamweatherholtz 0:ef4b1297d850 301
williamweatherholtz 0:ef4b1297d850 302
williamweatherholtz 0:ef4b1297d850 303 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 304 * @brief Enables specific device in display
williamweatherholtz 0:ef4b1297d850 305 *
williamweatherholtz 0:ef4b1297d850 306 * @details
williamweatherholtz 0:ef4b1297d850 307 *
williamweatherholtz 0:ef4b1297d850 308 * On Entry:
williamweatherholtz 0:ef4b1297d850 309 * @param[in] device_number - device to enable
williamweatherholtz 0:ef4b1297d850 310 *
williamweatherholtz 0:ef4b1297d850 311 * On Exit:
williamweatherholtz 0:ef4b1297d850 312 *
williamweatherholtz 0:ef4b1297d850 313 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 314 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 315 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 316 **************************************************************/
williamweatherholtz 0:ef4b1297d850 317 int32_t enable_device(uint8_t device_number);
williamweatherholtz 0:ef4b1297d850 318
williamweatherholtz 0:ef4b1297d850 319
williamweatherholtz 0:ef4b1297d850 320 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 321 * @brief Enables all device in display
williamweatherholtz 0:ef4b1297d850 322 *
williamweatherholtz 0:ef4b1297d850 323 * @details
williamweatherholtz 0:ef4b1297d850 324 *
williamweatherholtz 0:ef4b1297d850 325 * On Entry:
williamweatherholtz 0:ef4b1297d850 326 *
williamweatherholtz 0:ef4b1297d850 327 * On Exit:
williamweatherholtz 0:ef4b1297d850 328 *
williamweatherholtz 0:ef4b1297d850 329 * @return None
williamweatherholtz 0:ef4b1297d850 330 **************************************************************/
williamweatherholtz 0:ef4b1297d850 331 void enable_display(void);
williamweatherholtz 0:ef4b1297d850 332
williamweatherholtz 0:ef4b1297d850 333
williamweatherholtz 0:ef4b1297d850 334 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 335 * @brief Disables specific device in display
williamweatherholtz 0:ef4b1297d850 336 *
williamweatherholtz 0:ef4b1297d850 337 * @details
williamweatherholtz 0:ef4b1297d850 338 *
williamweatherholtz 0:ef4b1297d850 339 * On Entry:
williamweatherholtz 0:ef4b1297d850 340 * @param[in] device_number - device to disable
williamweatherholtz 0:ef4b1297d850 341 *
williamweatherholtz 0:ef4b1297d850 342 * On Exit:
williamweatherholtz 0:ef4b1297d850 343 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 344 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 345 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 346 **************************************************************/
williamweatherholtz 0:ef4b1297d850 347 int32_t disable_device(uint8_t device_number);
williamweatherholtz 0:ef4b1297d850 348
williamweatherholtz 0:ef4b1297d850 349
williamweatherholtz 0:ef4b1297d850 350 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 351 * @brief Disables all devices in display
williamweatherholtz 0:ef4b1297d850 352 *
williamweatherholtz 0:ef4b1297d850 353 * @details
williamweatherholtz 0:ef4b1297d850 354 *
williamweatherholtz 0:ef4b1297d850 355 * On Entry:
williamweatherholtz 0:ef4b1297d850 356 *
williamweatherholtz 0:ef4b1297d850 357 * On Exit:
williamweatherholtz 0:ef4b1297d850 358 *
williamweatherholtz 0:ef4b1297d850 359 * @return None
williamweatherholtz 0:ef4b1297d850 360 **************************************************************/
williamweatherholtz 0:ef4b1297d850 361 void disable_display(void);
williamweatherholtz 0:ef4b1297d850 362
williamweatherholtz 0:ef4b1297d850 363
williamweatherholtz 0:ef4b1297d850 364 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 365 * @brief Writes digit of given device with given data, user
williamweatherholtz 0:ef4b1297d850 366 * must enter correct data for decode_mode chosen
williamweatherholtz 0:ef4b1297d850 367 *
williamweatherholtz 0:ef4b1297d850 368 * @details
williamweatherholtz 0:ef4b1297d850 369 *
williamweatherholtz 0:ef4b1297d850 370 * On Entry:
williamweatherholtz 0:ef4b1297d850 371 * @param[in] device_number - device to write too
williamweatherholtz 0:ef4b1297d850 372 * @param[in] digit - digit to write
williamweatherholtz 0:ef4b1297d850 373 * @param[in] data - data to write
williamweatherholtz 0:ef4b1297d850 374 *
williamweatherholtz 0:ef4b1297d850 375 * On Exit:
williamweatherholtz 0:ef4b1297d850 376 *
williamweatherholtz 0:ef4b1297d850 377 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 378 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 379 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 380 * Returns -3 if digit > 8\n
williamweatherholtz 0:ef4b1297d850 381 * Returns -4 if digit < 1\n
williamweatherholtz 0:ef4b1297d850 382 **************************************************************/
williamweatherholtz 0:ef4b1297d850 383 int32_t write_digit(uint8_t device_number, uint8_t digit, uint8_t data);
williamweatherholtz 0:ef4b1297d850 384
williamweatherholtz 0:ef4b1297d850 385
williamweatherholtz 0:ef4b1297d850 386 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 387 * @brief Clears digit of given device
williamweatherholtz 0:ef4b1297d850 388 *
williamweatherholtz 0:ef4b1297d850 389 * @details
williamweatherholtz 0:ef4b1297d850 390 *
williamweatherholtz 0:ef4b1297d850 391 * On Entry:
williamweatherholtz 0:ef4b1297d850 392 * @param[in] device_number - device to write too
williamweatherholtz 0:ef4b1297d850 393 * @param[in] digit - digit to clear
williamweatherholtz 0:ef4b1297d850 394 *
williamweatherholtz 0:ef4b1297d850 395 * On Exit:
williamweatherholtz 0:ef4b1297d850 396 *
williamweatherholtz 0:ef4b1297d850 397 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 398 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 399 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 400 * Returns -3 if digit > 8\n
williamweatherholtz 0:ef4b1297d850 401 * Returns -4 if digit < 1\n
williamweatherholtz 0:ef4b1297d850 402 **************************************************************/
williamweatherholtz 0:ef4b1297d850 403 int32_t clear_digit(uint8_t device_number, uint8_t digit);
williamweatherholtz 0:ef4b1297d850 404
williamweatherholtz 0:ef4b1297d850 405
williamweatherholtz 0:ef4b1297d850 406 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 407 * @brief Turns on all segments/digits of given device
williamweatherholtz 0:ef4b1297d850 408 *
williamweatherholtz 0:ef4b1297d850 409 * @details
williamweatherholtz 0:ef4b1297d850 410 *
williamweatherholtz 0:ef4b1297d850 411 * On Entry:
williamweatherholtz 0:ef4b1297d850 412 * @param[in] device_number - device to write too
williamweatherholtz 0:ef4b1297d850 413 *
williamweatherholtz 0:ef4b1297d850 414 * On Exit:
williamweatherholtz 0:ef4b1297d850 415 *
williamweatherholtz 0:ef4b1297d850 416 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 417 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 418 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 419 **************************************************************/
williamweatherholtz 0:ef4b1297d850 420 int32_t device_all_on(uint8_t device_number);
williamweatherholtz 0:ef4b1297d850 421
williamweatherholtz 0:ef4b1297d850 422
williamweatherholtz 0:ef4b1297d850 423 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 424 * @brief Turns off all segments/digits of given device
williamweatherholtz 0:ef4b1297d850 425 *
williamweatherholtz 0:ef4b1297d850 426 * @details
williamweatherholtz 0:ef4b1297d850 427 *
williamweatherholtz 0:ef4b1297d850 428 * On Entry:
williamweatherholtz 0:ef4b1297d850 429 * @param[in] device_number - device to write too
williamweatherholtz 0:ef4b1297d850 430 *
williamweatherholtz 0:ef4b1297d850 431 * On Exit:
williamweatherholtz 0:ef4b1297d850 432 *
williamweatherholtz 0:ef4b1297d850 433 * @return Returns 0 on success\n
williamweatherholtz 0:ef4b1297d850 434 * Returns -1 if device number is > _num_devices\n
williamweatherholtz 0:ef4b1297d850 435 * Returns -2 if device number is 0\n
williamweatherholtz 0:ef4b1297d850 436 **************************************************************/
williamweatherholtz 0:ef4b1297d850 437 int32_t device_all_off(uint8_t device_number);
williamweatherholtz 0:ef4b1297d850 438
williamweatherholtz 0:ef4b1297d850 439
williamweatherholtz 0:ef4b1297d850 440 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 441 * @brief Turns on all segments/digits of display
williamweatherholtz 0:ef4b1297d850 442 *
williamweatherholtz 0:ef4b1297d850 443 * @details
williamweatherholtz 0:ef4b1297d850 444 *
williamweatherholtz 0:ef4b1297d850 445 * On Entry:
williamweatherholtz 0:ef4b1297d850 446 *
williamweatherholtz 0:ef4b1297d850 447 * On Exit:
williamweatherholtz 0:ef4b1297d850 448 *
williamweatherholtz 0:ef4b1297d850 449 * @return None
williamweatherholtz 0:ef4b1297d850 450 **************************************************************/
williamweatherholtz 0:ef4b1297d850 451 void display_all_on(void);
williamweatherholtz 0:ef4b1297d850 452
williamweatherholtz 0:ef4b1297d850 453
williamweatherholtz 0:ef4b1297d850 454 /**********************************************************//**
williamweatherholtz 0:ef4b1297d850 455 * @brief Turns off all segments/digits of display
williamweatherholtz 0:ef4b1297d850 456 *
williamweatherholtz 0:ef4b1297d850 457 * @details
williamweatherholtz 0:ef4b1297d850 458 *
williamweatherholtz 0:ef4b1297d850 459 * On Entry:
williamweatherholtz 0:ef4b1297d850 460 *
williamweatherholtz 0:ef4b1297d850 461 * On Exit:
williamweatherholtz 0:ef4b1297d850 462 *
williamweatherholtz 0:ef4b1297d850 463 * @return None
williamweatherholtz 0:ef4b1297d850 464 **************************************************************/
williamweatherholtz 0:ef4b1297d850 465 void display_all_off(void);
williamweatherholtz 0:ef4b1297d850 466
williamweatherholtz 0:ef4b1297d850 467
williamweatherholtz 0:ef4b1297d850 468 private:
williamweatherholtz 0:ef4b1297d850 469
williamweatherholtz 0:ef4b1297d850 470 SPI *_p_spi;
williamweatherholtz 0:ef4b1297d850 471 DigitalOut *_p_cs;
williamweatherholtz 0:ef4b1297d850 472 bool _spi_owner;
williamweatherholtz 0:ef4b1297d850 473
williamweatherholtz 0:ef4b1297d850 474 uint8_t _num_devices;
williamweatherholtz 0:ef4b1297d850 475
williamweatherholtz 0:ef4b1297d850 476 };
williamweatherholtz 0:ef4b1297d850 477 #endif /* AS1115_H*/