Complete

Dependencies:   mbed

Revision:
0:8f5b2af5e1d5
Child:
1:c5bc18044085
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Jan 30 02:21:04 2016 +0000
@@ -0,0 +1,93 @@
+/**
+ * This program reads in the state of the external DIP switch
+ * and outputs it to the LED using the MCP23S17 I/O expander chip
+ *
+ * @author(s): Gedeon Nyengele & Mike Bossi
+ * @date: 01/29/2016
+ */
+#include "mbed.h"
+#include "wdt.h"
+#include "MCP23S17.h"
+
+
+
+DigitalOut LED_1(p21);
+PwmOut LED_2(p22);
+DigitalIn switch1(p23);
+DigitalIn switch2(p24);
+DigitalIn switch3(p25);
+DigitalIn switch4(p26);
+
+// Create an SPI bus
+    SPI spi(p5, p6, p7);
+
+    // Device opcode, as defined in datasheet
+
+
+    // Read switch state and show state on LED
+    // Assumption: Switch connected to GPB0 (MCP23S17 pin 1)
+    //             LED connected to GPA0 (MCP23S17 pin 21)
+
+Watchdog wdt;
+BusIn _pins(p28, p29, p30);
+
+int main()
+{
+    
+    _pins.mode(PullUp);
+        
+    
+    char Opcode = 0x40;
+
+    MCP23S17 chip(spi, p20, Opcode);
+
+    // Set PORT_A pins to be output pins
+    chip.direction(PORT_A, 0x00);
+
+    // Set PORT_B pins to be input pins
+    chip.direction(PORT_B, 0xFF);
+    wdt.kick(5.0); 
+    int switch_1 = 0;
+    int switch_2 = 0;
+    int switch_3 = 0;
+    
+  //  int switch_4 = 0;
+    short lockUpCount = 0;
+    
+    switch3.mode(PullUp);
+    switch4.mode(PullUp);
+    // Delay for initial pullup to take effect
+    wait(.25);
+    // Setup Interrupt callback functions for a pb hit
+   
+   while(1){
+        
+        
+        wdt.kick();
+        
+        if(!switch4){
+            lockUpCount++;
+            if (lockUpCount > 100)
+                while(1) {}   
+        }
+        switch (_pins){
+            case 0x0:
+                if(!switch1)
+            LED_1 = 1;
+        else
+            LED_1 = 0;
+            
+        switch_1 = switch1.read();
+        switch_2 = switch2.read();
+        switch_3 = switch3.read();
+        
+        LED_2 = !switch_1*0.25 + !switch_2 * 0.40 + !switch_3*0.35;
+            
+            
+            }
+        
+        
+    }
+    
+}
+