glitch in column 3 removed

This commit is contained in:
2019-02-02 18:03:04 +01:00
parent b21f9c85c9
commit fac40519dc
3 changed files with 54 additions and 74 deletions

118
led.c
View File

@ -27,36 +27,28 @@ void ledSetMatrix(uint8_t col, uint8_t row, tColor color) {
} }
/* /*
row0: P1.3 row0: P1.2
row1: P1.4 row1: P1.3
row2: P1.5 row2: P1.4
row3: P1.7 row3: P1.7
*/ */
static inline void selectRow(uint8_t row) { static inline void selectRow(uint8_t row) {
switch (row) { switch (row) {
case 0: case 0:
P1DIR &= ~(BIT3 | BIT4 | BIT7);
P1OUT &= ~(BIT3 | BIT4 | BIT7); P1OUT &= ~(BIT3 | BIT4 | BIT7);
P1DIR |= BIT2;
P1OUT |= BIT2; P1OUT |= BIT2;
break; break;
case 1: case 1:
P1DIR &= ~(BIT2 | BIT4 | BIT7);
P1OUT &= ~(BIT2 | BIT4 | BIT7); P1OUT &= ~(BIT2 | BIT4 | BIT7);
P1DIR |= BIT3;
P1OUT |= BIT3; P1OUT |= BIT3;
break; break;
case 2: case 2:
P1DIR &= ~(BIT2 | BIT3 | BIT7);
P1OUT &= ~(BIT2 | BIT3 | BIT7); P1OUT &= ~(BIT2 | BIT3 | BIT7);
P1DIR |= BIT4;
P1OUT |= BIT4; P1OUT |= BIT4;
break; break;
case 3: case 3:
P1DIR &= ~(BIT2 | BIT3 | BIT4);
P1OUT &= ~(BIT2 | BIT3 | BIT4); P1OUT &= ~(BIT2 | BIT3 | BIT4);
P1DIR |= BIT7;
P1OUT |= BIT7; P1OUT |= BIT7;
break; break;
} }
@ -79,35 +71,27 @@ void selectCol(uint8_t column, tColor color) {
case BLUE: case BLUE:
switch (column) { switch (column) {
case 0: case 0:
P1DIR &= ~(BIT6); P1OUT |= BIT6;
P1OUT &= ~(BIT6); P2OUT |= BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5;
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P1DIR |= BIT5;
P1OUT &= ~BIT5; P1OUT &= ~BIT5;
break; break;
case 1: case 1:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR |= BIT2;
P2OUT &= ~BIT2; P2OUT &= ~BIT2;
break; break;
case 2: case 2:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5);
P2DIR |= BIT4;
P2OUT &= ~BIT4; P2OUT &= ~BIT4;
break; break;
case 3: case 3:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT3 | BIT4);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4);
P2DIR |= BIT5;
P2OUT &= ~BIT5; P2OUT &= ~BIT5;
break; break;
} }
@ -115,35 +99,27 @@ void selectCol(uint8_t column, tColor color) {
case RED: case RED:
switch (column) { switch (column) {
case 0: case 0:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR |= BIT0;
P2OUT &= ~BIT0; P2OUT &= ~BIT0;
break; break;
case 1: case 1:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5);
P2DIR |= BIT1;
P2OUT &= ~BIT1; P2OUT &= ~BIT1;
break; break;
case 2: case 2:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5);
P2DIR |= BIT3;
P2OUT &= ~BIT3; P2OUT &= ~BIT3;
break; break;
case 3: case 3:
P1DIR &= ~(BIT5); P1OUT |= (BIT5);
P1OUT &= ~(BIT5); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P1DIR |= BIT6;
P1OUT &= ~BIT6; P1OUT &= ~BIT6;
break; break;
} }
@ -151,28 +127,20 @@ void selectCol(uint8_t column, tColor color) {
case OFF: case OFF:
switch (column) { switch (column) {
case 0: case 0:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; break;
case 1: case 1:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; break;
case 2: case 2:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; break;
case 3: case 3:
P1DIR &= ~(BIT5 | BIT6); P1OUT |= (BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6); P2OUT |= (BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; break;
} }
break; break;
@ -217,11 +185,23 @@ void ledExec() {
if (rowNum >= SIZE) { if (rowNum >= SIZE) {
rowNum = 0; rowNum = 0;
} }
selectRow(rowNum);
} }
selectCol(colNum, matrix[colNum][rowNum]);
tColor color = matrix[colNum][rowNum];
selectCol(colNum, OFF);
selectRow(rowNum);
selectCol(colNum, color);
} }
void ledInit() { void ledInit() {
// rows
P1DIR |= BIT2 | BIT3 | BIT4 | BIT7;
// columns and colors
P1DIR |= BIT5 | BIT6;
P2DIR |= BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5;
// schAdd(testledExec, NULL, 0, 500); // schAdd(testledExec, NULL, 0, 500);
// schAdd(ledExec, NULL, 0, 1);
} }

4
main.c
View File

@ -27,8 +27,8 @@ int main() {
schInit(); schInit();
ledInit(); ledInit();
// patternInit(); patternInit();
ledSetMatrix(3, 1, BLUE); // ledSetMatrix(0, 1, BLUE);
__enable_interrupt(); __enable_interrupt();

View File

@ -9,7 +9,7 @@ void patternExec() {
static uint8_t i = 0; static uint8_t i = 0;
static uint8_t j = 0; static uint8_t j = 0;
ledSetMatrix(i, j, BLUE); ledSetMatrix(i, j, OFF);
i++; i++;
if (i > 3) { if (i > 3) {
@ -19,10 +19,10 @@ void patternExec() {
j = 0; j = 0;
} }
} }
ledSetMatrix(i, j, RED); ledSetMatrix(i, j, BLUE);
} }
void patternInit() { void patternInit() {
schAdd(patternExec, NULL, 0, 1000); schAdd(patternExec, NULL, 0, 500);
} }