[CGSG] SVN Commit r427 - user/wizard23/matrix2.0/arduino/spiTester

kintel at metalab.at kintel at metalab.at
Tue Apr 22 03:14:54 CEST 2008


Author: kintel
Date: 2008-04-22 03:14:54 +0200 (Tue, 22 Apr 2008)
New Revision: 427

Modified:
   user/wizard23/matrix2.0/arduino/spiTester/spiTester.pde
Log:
Added fillrow/fillcolumn, some cleanup

Modified: user/wizard23/matrix2.0/arduino/spiTester/spiTester.pde
===================================================================
--- user/wizard23/matrix2.0/arduino/spiTester/spiTester.pde	2008-04-20 03:50:49 UTC (rev 426)
+++ user/wizard23/matrix2.0/arduino/spiTester/spiTester.pde	2008-04-22 01:14:54 UTC (rev 427)
@@ -117,6 +117,24 @@
   }
 }
 
+void fillrow(uint8_t row, uint8_t val)
+{
+  for (uint8_t c=0;c<72;c++) {
+    setAddress(row, c);
+    spi_transfer(val);
+  }
+}
+
+void fillcolumn(uint8_t col, uint8_t val)
+{
+  for (uint8_t m=0;m<6;m++) {
+    setAddress(m*8, col);
+    for (uint8_t r=0;r<8;r++) {
+      spi_transfer((rowmask & (1<<r)) ? val : 0x00);
+    }
+  }
+}
+
 void fillmodule(uint8_t module, uint8_t val)
 {
   setAddress(module*64);
@@ -156,18 +174,72 @@
     case '6':
     case '7':
     case '8':
-    case '9':
       globalintensity = (cmd-'0') << 4;
       fill(globalintensity);
       mode = IDLE;
       break;
-      // f: Set global intensity to max and fill all
-    case 'f':
+    case '9':
       globalintensity = 0xf0;
       fill(globalintensity);
       mode = IDLE;
       break;
-      // a: Fill pixels with increasing value
+      // f: Fill all with global intensity
+      // set global intensity without filling (parameter is 1-digit hex)
+    case 'g': {
+      while (Serial.available() < 1) {}
+      byte n1 = Serial.read();
+      globalintensity = char2byte(n1, 0);
+      mode = IDLE;
+      break;
+    }
+    case 'f':
+      fill(globalintensity);
+      mode = IDLE;
+      break;
+      // F: Clear all
+    case 'F':
+      fill(0x00);
+      mode = IDLE;
+      break;
+      // Turn on one row
+    case 'r': {
+      while (Serial.available() < 2) {}
+      byte n1 = Serial.read();
+      byte n2 = Serial.read();
+      byte row = char2byte(n1, n2);
+      fillrow(row, globalintensity);
+      mode = IDLE;
+      break;
+    }
+      // Turn off one row
+    case 'R': {
+      while (Serial.available() < 2) {}
+      byte n1 = Serial.read();
+      byte n2 = Serial.read();
+      byte row = char2byte(n1, n2);
+      fillrow(row, 0x00);
+      mode = IDLE;
+      break;
+    } 
+     case 'c': {
+      while (Serial.available() < 2) {}
+      byte n1 = Serial.read();
+      byte n2 = Serial.read();
+      byte col = char2byte(n1, n2);
+      fillcolumn(col, globalintensity);
+      mode = IDLE;
+      break;
+    }
+     case 'C': {
+      while (Serial.available() < 2) {}
+      byte n1 = Serial.read();
+      byte n2 = Serial.read();
+      byte col = char2byte(n1, n2);
+      fillcolumn(col, 0x00);
+      mode = IDLE;
+      break;
+    }
+     // a: Fill pixels with increasing value
     case 'a':
       setAddress(0);
       for (byte b=0;b<9;b++) {
@@ -236,35 +308,20 @@
       if (mode == TESTING) row = (row - 1)%48;
       break;
       // set row mask (parameter is 2-digit hex with bitmask)
-    case 'r': {
+    case 'm': {
       while (Serial.available() < 2) {}
       byte n1 = Serial.read();
       byte n2 = Serial.read();
       rowmask = char2byte(n1, n2);
-      setAddress(0, 0);
-      for (uint8_t c=0;c<72;c++) {
-        for (uint8_t r=0;r<8;r++) {
-          spi_transfer((rowmask & (1<<r)) ? globalintensity : 0x00);
-        }
-      }
-      mode = IDLE;
       break;
     }
-      // set global intensity without filling (parameter is 1-digit hex)
+      // set test speed
       // 'm' means manual
-    case 'g': {
-      while (Serial.available() < 1) {}
-      byte n1 = Serial.read();
-      globalintensity = char2byte(n1, 0);
-      mode = IDLE;
-      break;
-    }
-      // set test speed
     case 's':
       while (Serial.available() < 1) {}
       byte n1 = Serial.read();
       if (n1 == 'm') {
-        testdelay = 10;
+        testdelay = 1;
         colinc = 0;
       }
       else {
@@ -285,23 +342,27 @@
   }
 
   if (mode == TESTING) {
-    setAddress(row, column);
-    for (uint8_t i=row%8;i<8;i++) {
-      spi_transfer(invert ? ((rowmask & (1<<i)) ? globalintensity : 0x00) : 0);
+    if (invert) {
+      fillcolumn(column, globalintensity);
     }
+    else {
+      fillcolumn(column, 0x00);
+    }
     delay(testdelay * 100);
-    setAddress(row, column);
-    for (uint8_t i=row%8;i<8;i++) {
-      spi_transfer(invert ? 0 : ((rowmask & (1<<i)) ? globalintensity : 0x00));
+    if (invert) {
+      fillcolumn(column, 0x00);
     }
+    else {
+      fillcolumn(column, globalintensity);
+    }
     column = column + colinc;
-    if (single && (column == 72)) {
-      rowmask = rowmask << 1;
-      if (rowmask == 0) {
-        rowmask = 1;
-        row += 8;
-      }
-    }
+//     if (single && (column == 72)) {
+//       rowmask = rowmask << 1;
+//       if (rowmask == 0) {
+//         rowmask = 1;
+//         row += 8;
+//       }
+//     }
     column = column%72;
   }
 }



More information about the CGSG mailing list