[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