Testsoftware for SC16IS750

Dependencies:   SC16IS750 mbed

Files at this revision

API Documentation at this revision

Comitter:
wim
Date:
Sun Feb 09 14:58:33 2014 +0000
Parent:
0:d83a90125711
Child:
2:8aba07490dce
Commit message:
working main, tested on BOB

Changed in this revision

SC16IS750.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/SC16IS750.lib	Wed Jan 22 16:40:03 2014 +0000
+++ b/SC16IS750.lib	Sun Feb 09 14:58:33 2014 +0000
@@ -1,1 +1,1 @@
-SC16IS750#d64854a60f95
+SC16IS750#0440152c5387
--- a/main.cpp	Wed Jan 22 16:40:03 2014 +0000
+++ b/main.cpp	Sun Feb 09 14:58:33 2014 +0000
@@ -4,22 +4,166 @@
 //SPI Version
 SPI spi(PTD2, PTD3, PTD1); //MOSI, MISO, SCK
 //DigitalOut CS(PTD0);       //CS 
-SC16IS750_SPI serial_spi(&spi, PTD0);
+SC16IS750_SPI serial_bridge(&spi, PTD0);
 
 //I2C Version
-I2C i2c(PTE0, PTE1);       //SDA, SCL
-SC16IS750_I2C serial_i2c(&i2c, DEFAULT_SC16IS750_ADDR);
+//I2C i2c(PTE0, PTE1);       //SDA, SCL
+//SC16IS750_I2C serial_bridge(&i2c, DEFAULT_SC16IS750_ADDR);
 
 DigitalOut myled1(LED_RED);
-DigitalOut myled2(LED_GREEN);
-//DigitalOut myled3(LED_BLUE);  //same as PTD1 (SCK)
+//DigitalOut myled2(LED_GREEN); 
+//DigitalOut myled3(LED_BLUE);  // Same as PTD1 (SCK)
+DigitalOut heartbeatLED(LED_GREEN);
  
 Serial pc(USBTX,USBRX);
 
+void show_menu() {
+    pc.printf("0: Exit\n\r");
+    pc.printf("1: Show Menu\n\r");    
+    pc.printf("2: Init\n\r"); 
+    pc.printf("3: IO Out\n\r");     
+    pc.printf("4: Echo Text\n\r");        
+
+ #if(0)
+
+    pc.printf("5: \n\r");            
+    pc.printf("6: \n\r");                
+    pc.printf("7: \n\r");                    
+    pc.printf("8: \n\r");                        
+    pc.printf("9: \n\r");                            
+    pc.printf("A: \n\r");                    
+    pc.printf("B: \n\r");                        
+    pc.printf("C: \n\r");                    
+    pc.printf("D: \n\r");                           
+    pc.printf("P: \n\r");                        
+#endif    
+    pc.printf("\n\r");                
+}
+
+// Variables for Heartbeat and Status monitoring
+Ticker heartbeat;
+bool heartbeatflag=false;
+
+// Local functions
+void clear_screen() {
+//ANSI Terminal Commands
+    pc.printf("\x1B[2J");
+    pc.printf("\x1B[H");
+}
+
+   
+// Heartbeat monitor
+void pulse() {
+  heartbeatLED = !heartbeatLED;
+}
+
+void heartbeat_start() {
+  heartbeat.attach(&pulse, 0.5);
+}
+
+void heartbeat_stop() {
+  heartbeat.detach();
+}
+
+
 int main() {
-  pc.printf("\nHello World!\n");
+  bool running=true;
+  char command;
+  int i=0;
+   
+  pc.printf("\nHello World!\n\r");
+
+  heartbeat_start();     
+
+  myled1 = 1; // LED Off
+
+ // We need to enable flow control or we overflow buffers and
+  // lose data when used with the WiFly. Note that flow control 
+  // needs to be enabled on the WiFly for this to work but it's
+  // possible to do that with flow control enabled here but not there.
+//  serial_bridge.set_flow_control(SC16IS750::RTSCTS);
+
+    serial_bridge.ioSetDirection(0xFF); // All outputs
+    serial_bridge.ioSetState(0x00);     // All On
+
+    show_menu();
+      
+    while(running) {
      
-  myled1 = 1; // LED Off
+       if(pc.readable()) {
+         command = pc.getc();       
+         pc.printf("command= %c \n\r", command);         
+
+         switch (command) {
+          case '0' :
+                     pc.printf("Done\n\r");                    
+                     running = false;  
+                     break;
+                     
+          case '1' :
+                     show_menu();
+                     break;
+
+          case '2' :
+                     pc.printf("Init\n\r");                    
+                     serial_bridge._init();                      
+                     break;
+          
+          case '3' :        
+                     pc.printf("IO Out\n\r");                    
+                     
+                     i=0;
+                     while (!pc.readable()) {
+                       serial_bridge.ioSetState(~i); 
+                       serial_bridge.ioGetState() ;                       //test
+                       wait(0.5);
+                       pc.putc('*');                
+                       i=(i+1) & 0xFF;
+                     }
+                     
+                     pc.getc();
+                     pc.printf("IO Out Done\n\r");                                         
+                     break;
+
+          case '4' :        
+                     pc.printf("Echo Text, Enter '$' to quit...\n\r");                    
+                     
+                     char ch;
+                     bool running_test=true;
+                      
+                     while (running_test) {
+                       // From SPI/I2C to serial                       
+                       while (running_test && pc.readable()) {
+                         ch = pc.getc();
+                         running_test = (ch != '$');
+                         serial_bridge.putc(ch);
+                       }
+                       
+                       // From Serial to SPI/I2C 
+                       while (running_test && serial_bridge.readable()) {
+                         ch = serial_bridge.getc();
+                         running_test = (ch != '$');
+                         pc.putc(ch);
+                       }
+                       
+                     }
+                     
+                     pc.printf("\n\rEcho Text Done\n\r");                                         
+                     break;
+
+          default :
+                    break;                     
+
+         } //switch
+       } //if  
+    } //while
+
+
+
+
+#if(0)
+
+
 //  CS = 1;
  
   spi.format(8, 0);          
@@ -27,17 +171,9 @@
 //    spi.frequency(500000);    
   spi.frequency(1000000);
 //    spi.frequency(1500000);    
-        
-  while(1) {
-//    serial_spi.writeRegister(SC16IS750::IODIR, 0x81);  // direct call to new method
-    
-    serial_spi.ioSetState(0x00);    // indirect call to new method
-//    wait(0.5);
-    pc.putc('*');                
-  }
 
 
-#if(0)
+
   while(1) {
     CS=0;
     spi.write(0xAA);