Fix to have load pin working with SPI1.

Dependencies:   mbed

Fork of Max7221 by Dwayne Dilbeck

Revision:
9:75bddbfbb692
Parent:
8:3f5901f2f813
--- a/Max7221.h	Mon Nov 23 11:38:17 2015 +0000
+++ b/Max7221.h	Tue Nov 24 00:38:36 2015 +0000
@@ -11,12 +11,20 @@
 #define Max7221_H
 
 // MAX7219/7221 register map
-#define max7219_reg_noop         0x00
-#define max7219_reg_decodeMode   0x09
-#define max7219_reg_intensity    0x0A
-#define max7219_reg_scanLimit    0x0B
-#define max7219_reg_shutdown     0x0C
-#define max7219_reg_displayTest  0x0F
+#define max7221_reg_noop         0x00
+#define max7221_reg_digit0       0x01
+#define max7221_reg_digit1       0x02
+#define max7221_reg_digit2       0x03
+#define max7221_reg_digit3       0x04
+#define max7221_reg_digit4       0x05
+#define max7221_reg_digit5       0x06
+#define max7221_reg_digit6       0x07
+#define max7221_reg_digit7       0x08
+#define max7221_reg_decodeMode   0x09
+#define max7221_reg_intensity    0x0A
+#define max7221_reg_scanLimit    0x0B
+#define max7221_reg_shutdown     0x0C
+#define max7221_reg_displayTest  0x0F
 
 // Logical values
 #define LOG_0 0
@@ -24,18 +32,35 @@
 
 class Max7221 {
 private:
-   SPI *mp_spi;             // SPI used for this display (no data transmission when NULL)
-   DigitalOut *mp_cs;       // /CS signal (it should be handled manually when NULL)
-   unsigned int m_position; // Display position on SPI chain (0 = 1'st)
-
+    static SPI *mp_spi;             // SPI used for this display (no data transmission when NULL)
+    static DigitalOut *mp_cs;       // /CS signal (it should be handled manually when NULL)
+    static unsigned int m_counter;  // Total number of displays on SPI chain
+    unsigned int m_position;        // Display position on SPI chain (0 = 1'st)
 public:
     /**
     *  Default constructor.
-    *  @param spi       Initialized SPI port used for communication with MAX7219/7221.
-    *  @param cs        Initialized output pin used as SW CS signal or NULL when this signal is handled manually.
-    *  @param position  Position on SPI port (for displays connected in daisy-chain: DOUT-DIN). 0=1st.
+    *  At least one instance should set SPI and /CS pointers for display chain to work.
+    *  Use SetSpi() and SetCs() or parametrized constructor.
+    */
+    Max7221();
+
+    /**
+    *  Constructor.
+    *  Sets SPI and /CS pointers. Display chain is operational.
     */
-    Max7221(SPI *spi, DigitalOut *cs, unsigned int position=0);
+    Max7221(SPI *spi, DigitalOut *cs);
+
+    /**
+    *  Sets pointer to configured SPI.
+    *  SPI is used by all display instances.
+    */
+    void SetSpi(SPI *spi);
+
+    /**
+    *  Sets pointer to configured /CS signal.
+    *  /CS signal is used by all display instances.
+    */    
+    void SetCs(DigitalOut *cs);
 
     /**
     *  Method for setting /CS signal LOW (enable data reception).