This program simply connects to a HTS221 I2C device to proximity sensor

Dependencies:   FXOS8700CQ mbed

Revision:
17:38a8cc0c6ba5
Parent:
16:17c5916f2d12
Child:
18:b08471eb1d1c
--- a/main.cpp	Wed Jul 13 06:10:58 2016 +0000
+++ b/main.cpp	Wed Jul 13 15:48:37 2016 +0000
@@ -135,51 +135,39 @@
 }
 
 int mdm_init(void) {
-    // disable signal level translator (necessary
-    // for the modem to boot properly)
-    shield_3v3_1v8_sig_trans_ena = 0;
-
     // Hard reset the modem (doesn't go through
     // the signal level translator)
-    mdm_reset = 1;
-    
-   // wait a moment for the modem to react
-    wait_ms(10);
-    
-    // Let modem boot
     mdm_reset = 0;
-    
-    // wait a moment for the modem to react
+
+    // disable signal level translator (necessary
+    // for the modem to boot properly).  All signals
+    // except mdm_reset go through the level translator
+    // and have internal pull-up/down in the module. While
+    // the level translator is disabled, these pins will
+    // be in the correct state.  
+    shield_3v3_1v8_sig_trans_ena = 0;
+
+    // While the level translator is disabled and ouptut pins
+    // are tristated, make sure the inputs are in the same state
+    // as the WNC Module pins so that when the level translator is
+    // enabled, there are no differences.
+    mdm_uart2_rx_boot_mode_sel = 1;   // UART2_RX should be high
+    mdm_power_on = 0;                 // powr_on should be low
+    mdm_wakeup_in = 1;                // wake-up should be high
+    mdm_uart1_cts = 0;                // indicate that it is ok to send
+
+   // Now, wait for the WNC Module to perform its initial boot correctly
     wait(1.0);
-    
-    // power modem on //off
-    mdm_power_on = 0; //1;
-    
-    // insure modem boots into normal operating mode
-    // and does not go to sleep when powered on
-    mdm_uart2_rx_boot_mode_sel = 1;
-    mdm_wakeup_in = 1;
+  
+    // The WNC module initializes comms at 115200 8N1 so set it up
+    mdm.baud(115200);
     
-    // initialze comm with the modem
-    mdm.baud(115200);
-    // clear out potential garbage
-    while (mdm.readable())
-      mdm.getc();
+    //Now, enable the level translator, the input pins should now be the
+    //same as how the M14A module is driving them with internal pull ups/downs.
+    //When enabled, there will be no changes in these 4 pins...
+    shield_3v3_1v8_sig_trans_ena = 1;
 
-    mdm_uart1_cts = 0;
-    
-    // wait a moment for the modem to react to signal
-    // conditions while the level translator is disabled
-    // (sorry, don't have enough information to know
-    // what exactly the modem is doing with the current
-    // pin settings)
-    wait(1.0);
-
-    // enable the signal level translator to start
-    // modem reset process (modem will be powered down)
-    shield_3v3_1v8_sig_trans_ena = 1;
-    
-    // Give the modem 60 secons to start responding by
+    // Now, give the modem 60 secons to start responding by
     // sending simple 'AT' commands to modem once per second.
     Timer timer;
     timer.start();