This is an involuntary fork, created because the repository would not update mmSPI. SPI library used to communicate with an altera development board attached to four zigbee-header pins.

Dependents:   Embedded_RTOS_Project

Fork of mmSPI by Mike Moore

Revision:
36:32cdc295f859
Parent:
35:6152c9709697
--- a/mmSPI.cpp	Sun Sep 01 02:29:08 2013 +0000
+++ b/mmSPI.cpp	Tue Sep 17 19:06:50 2013 +0000
@@ -1,13 +1,13 @@
 /*----------------------------------------------//------------------------------
     student   : m-moore
     email     : gated.clock@gmail.com
-    class     : usb device drivers
+    class     : embedded RTOS
     directory : USB_device_project/mmSPI
     file      : mmSPI.cpp
-    date      : september 3, 2013.
+    date      : september 19, 2013.
 ----copyright-----------------------------------//------------------------------   
     licensed for personal and academic use.
-    commercial use must be approved by the account-holder of
+    commercial use of original code must be approved by the account-holder of
     gated.clock@gmail.com
 ----description---------------------------------//------------------------------
     this library provides the low-level SPI data and clock signaling 
@@ -318,6 +318,36 @@
       return (pcReceive[6 - cRegister]);        // return the particular reg value.
     }                                           // read_register.
 //----------------------------------------------//------------------------------
+//----------------------------------------------//------------------------------
+/*
+  since the Tk UI often wants to obtain the content of all of the CPU registers,
+  this method may be used to obtain all of them at once, speading up the UI 
+  read cycle.
+      
+  pRegisters[6] <- pcReceive[6] = R0    
+  pRegisters[5] <- pcReceive[5] = R1
+  pRegisters[4] <- pcReceive[4] = R2
+  pRegisters[3] <- pcReceive[3] = R3
+  pRegisters[2] <- pcReceive[2] = PC
+  pRegisters[1] <- pcReceive[1] = IR-H
+  pRegisters[0] <- pcReceive[0] = IR-L  
+*/
+
+    void mmSPI::read_all_registers(char * pcRegisters) 
+    { 
+      int dLoop;                                // loop index.
+      
+      clear_transmit_vector();                  // clear transmit vector.
+      
+      pcSend[7] = 0x02;                         // suppress cpu operation.
+
+      transceive_vector(1,1,1,0);               // snap & scan-out reg contents.
+      
+                                                // propagate register data.
+      for (dLoop = 0; dLoop < 7; dLoop++) pcRegisters[dLoop] = pcReceive[dLoop];
+      
+    }                                           // read_all_registers.
+//----------------------------------------------//------------------------------
 /*
     this method works by taking over the instruction decoder, and issuing
     the CPU commands which load the MM address/data into {R3,R2,R1}