issue in display, digit calculation found

This commit is contained in:
Wolfgang Hottgenroth
2016-08-31 16:53:26 +02:00
parent 686156db83
commit 1dc39fe8df
4 changed files with 16 additions and 3 deletions

View File

@ -28,6 +28,8 @@ typedef enum {
const tPin ALL_PATTERN[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G, PINS_END }; const tPin ALL_PATTERN[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G, PINS_END };
const tPin H_PATTERN[] = { SEG_B, SEG_C, SEG_E, SEG_F, SEG_G, PINS_END }; const tPin H_PATTERN[] = { SEG_B, SEG_C, SEG_E, SEG_F, SEG_G, PINS_END };
const tPin I_PATTERN[] = { SEG_B, SEG_C, PINS_END }; const tPin I_PATTERN[] = { SEG_B, SEG_C, PINS_END };
const tPin L_PATTERN[] = { SEG_D, SEG_E, SEG_F, PINS_END };
const tPin O_PATTERN[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, PINS_END };
const tPin EMPTY_PATTERN[] = { PINS_END }; const tPin EMPTY_PATTERN[] = { PINS_END };
const tPin NUMBER0[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, PINS_END }; const tPin NUMBER0[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, PINS_END };
const tPin NUMBER1[] = { SEG_B, SEG_C, PINS_END }; const tPin NUMBER1[] = { SEG_B, SEG_C, PINS_END };
@ -64,11 +66,14 @@ void displayInit(void *handleArg) {
} }
static void showNumber(uint8_t n) { static void showNumber(uint8_t n) {
const tPin *pattern = NUMBERS[10]; const tPin *pattern = NUMBERS[ALL_ID];
do { do {
gpioSetPin(*pattern, LOW); gpioSetPin(*pattern, LOW);
pattern++; pattern++;
} while (*pattern != PINS_END); } while (*pattern != PINS_END);
if (n < 0 || n > 9) {
volatile uint8_t error = 1;
}
pattern = NUMBERS[n]; pattern = NUMBERS[n];
do { do {
gpioSetPin(*pattern, HIGH); gpioSetPin(*pattern, HIGH);
@ -82,7 +87,7 @@ void displaySetValue(uint8_t v) {
digitValues[0] = I_ID; digitValues[0] = I_ID;
} else { } else {
digitValues[1] = v / 10; digitValues[1] = v / 10;
digitValues[0] = v - digitValues[1]; digitValues[0] = v - digitValues[1] * 10;
} }
} }

View File

@ -23,8 +23,12 @@ void gpioInitPins() {
tPinCfg pin = pinCfg[p]; tPinCfg pin = pinCfg[p];
if (pin.portId == PORT1) { if (pin.portId == PORT1) {
P1DIR |= pin.bit; P1DIR |= pin.bit;
P1SEL &= ~pin.bit;
P1SEL2 &= ~pin.bit;
} else if (pin.portId == PORT2) { } else if (pin.portId == PORT2) {
P2DIR |= pin.bit; P2DIR |= pin.bit;
P2SEL &= ~pin.bit;
P2SEL2 &= ~pin.bit;
} }
gpioSetPin(p, pin.defaultOut); gpioSetPin(p, pin.defaultOut);
} }

View File

@ -49,7 +49,7 @@ int main() {
schAdd(displayExec, NULL, 0, 100); schAdd(displayExec, NULL, 0, 100);
// schAdd(testTaskExec, &testTaskHandle1, 0, 20); // schAdd(testTaskExec, &testTaskHandle1, 0, 20);
// schAdd(testTaskExec, &testTaskHandle2, 2, 20); // schAdd(testTaskExec, &testTaskHandle2, 2, 20);
// schAdd(measureStartConversion, NULL, 0, 1000); schAdd(measureStartConversion, NULL, 0, 1000);
__enable_interrupt(); __enable_interrupt();

View File

@ -18,11 +18,15 @@ volatile uint32_t timestamp;
ISR(TIMER0_A0, TA0_ISR) { ISR(TIMER0_A0, TA0_ISR) {
timestamp++; timestamp++;
schUpdate(); schUpdate();
P1OUT ^= BIT0;
} }
void timeInit() { void timeInit() {
timestamp = 0; timestamp = 0;
P1DIR |= BIT0;
TACCR0 = 32; TACCR0 = 32;
TACCTL0 = CCIE; TACCTL0 = CCIE;
TACTL = MC_1 | ID_0 | TASSEL_1 | TACLR; TACTL = MC_1 | ID_0 | TASSEL_1 | TACLR;