From fac40519dc2c3918bfefa451bf6309cfaf39e13a Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Sat, 2 Feb 2019 18:03:04 +0100 Subject: [PATCH] glitch in column 3 removed --- led.c | 118 +++++++++++++++++++++++------------------------------- main.c | 4 +- pattern.c | 6 +-- 3 files changed, 54 insertions(+), 74 deletions(-) diff --git a/led.c b/led.c index eee34cb..5c328e9 100644 --- a/led.c +++ b/led.c @@ -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); } diff --git a/main.c b/main.c index 7c168ac..3a352cb 100644 --- a/main.c +++ b/main.c @@ -27,8 +27,8 @@ int main() { schInit(); ledInit(); - // patternInit(); - ledSetMatrix(3, 1, BLUE); + patternInit(); + // ledSetMatrix(0, 1, BLUE); __enable_interrupt(); diff --git a/pattern.c b/pattern.c index fd25349..d0ba4bb 100644 --- a/pattern.c +++ b/pattern.c @@ -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); } \ No newline at end of file