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

4
main.c
View File

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

View File

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