diff --git a/src/display.c b/src/display.c index 5272630..e32173e 100644 --- a/src/display.c +++ b/src/display.c @@ -57,13 +57,20 @@ uint8_t digitValues[] = { EMPTY_ID, EMPTY_ID, EMPTY_ID }; void displayInit(void *handleArg) { for (tPin d = DIGIT_0; d <= DIGIT_2; d++) { gpioSetPin(d, LOW); - for (tPin s = SEG_A; s <= SEG_G; s++) { + for (tPin s = SEG_A; s <= SEG_F; s++) { gpioSetPin(s, HIGH); ms_active_delay(INIT_CYCLE_DELAY); gpioSetPin(s, LOW); } gpioSetPin(d, HIGH); } + for (tPin d = DIGIT_2; d >= DIGIT_0; d--) { + gpioSetPin(d, LOW); + gpioSetPin(SEG_G, HIGH); + ms_active_delay(INIT_CYCLE_DELAY); + gpioSetPin(SEG_G, LOW); + gpioSetPin(d, HIGH); + } } static void showNumber(uint8_t n) { @@ -73,16 +80,6 @@ static void showNumber(uint8_t n) { for (const tPin *pattern = NUMBERS[n]; *pattern != PINS_END; pattern++) { gpioSetPin(*pattern, HIGH); } -// const tPin *pattern = NUMBERS[ALL_ID]; -// do { -// gpioSetPin(*pattern, LOW); -// pattern++; -// } while (*pattern != PINS_END); -// pattern = NUMBERS[n]; -// do { -// gpioSetPin(*pattern, HIGH); -// pattern++; -// } while (*pattern != PINS_END); } void displaySetValue(uint8_t v) { @@ -92,7 +89,7 @@ void displaySetValue(uint8_t v) { c = (a - b * 100) / 10; d = a - c * 10 - b * 100; digitValues[2] = (b == 0) ? EMPTY_ID : (uint8_t)b; - digitValues[1] = (c == 0) ? EMPTY_ID : (uint8_t)c; + digitValues[1] = ((c == 0) && (b == 0)) ? EMPTY_ID : (uint8_t)c; digitValues[0] = (uint8_t)d; } @@ -107,11 +104,6 @@ void displayExec(void *handleArg) { for (const tPin *digit = DIGITS; *digit != PINS_END; digit++) { gpioSetPin(*digit, HIGH); } -// const tPin *digit = DIGITS; -// do { -// gpioSetPin(*digit, HIGH); -// digit++; -// } while (*digit != PINS_END); gpioSetPin(DIGITS[activeDigit], LOW); diff --git a/src/gpio.c b/src/gpio.c index db5fe0a..d237c72 100644 --- a/src/gpio.c +++ b/src/gpio.c @@ -33,6 +33,7 @@ void gpioInitPins() { P1DIR |= pin.bit; P1SEL &= ~pin.bit; P1SEL2 &= ~pin.bit; + gpioSetPin(p, pin.defaultOut); } else if (pin.direction == PIN_IN) { P1DIR &= ~pin.bit; P1SEL &= ~pin.bit; @@ -50,6 +51,7 @@ void gpioInitPins() { P2DIR |= pin.bit; P2SEL &= ~pin.bit; P2SEL2 &= ~pin.bit; + gpioSetPin(p, pin.defaultOut); } else if (pin.direction == PIN_IN) { P2DIR &= ~pin.bit; P2SEL &= ~pin.bit; @@ -63,7 +65,6 @@ void gpioInitPins() { P2OUT |= pin.bit; } } - gpioSetPin(p, pin.defaultOut); } } diff --git a/src/main.c b/src/main.c index 0b9e565..914c99b 100644 --- a/src/main.c +++ b/src/main.c @@ -28,6 +28,8 @@ int main() { WDTCTL = WDTPW | WDTHOLD; + __disable_interrupt(); + // highest possible system clock DCOCTL = DCO0 | DCO1 | DCO2; BCSCTL1 = XT2OFF | RSEL0 | RSEL1 | RSEL2 | RSEL3; @@ -62,7 +64,7 @@ int main() { while (1) { schExec(); - LPM3; + //LPM3; } }