introduce display muxer

This commit is contained in:
Wolfgang Hottgenroth
2016-09-05 12:05:03 +02:00
parent 1ae9e86277
commit b193631ad7
5 changed files with 82 additions and 4 deletions

View File

@ -71,9 +71,6 @@ static void showNumber(uint8_t n) {
gpioSetPin(*pattern, LOW);
pattern++;
} while (*pattern != PINS_END);
if (n < 0 || n > 9) {
volatile uint8_t error = 1;
}
pattern = NUMBERS[n];
do {
gpioSetPin(*pattern, HIGH);

49
src/displayMuxer.c Normal file
View File

@ -0,0 +1,49 @@
/*
* displayMuxer.c
*
* Created on: 05.09.2016
* Author: wn
*/
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include "displayMuxer.h"
#include "display.h"
typedef struct {
uint8_t value;
bool valid;
} tDisplayValue;
tDisplayValue displayValues[MUX_ENDS];
void displayMuxerInit(void *handleArg) {
for (tMuxerSlot i = FIRST_MUX; i < MUX_ENDS; i++) {
displayValues[i].value = 0;
displayValues[i].valid = false;
}
}
void displayMuxerExec(void *handleArg) {
static tMuxerSlot slot = FIRST_MUX;
if (displayValues[slot].valid) {
displaySetValue(displayValues[slot].value);
}
slot++;
if (slot == MUX_ENDS) {
slot = FIRST_MUX;
}
}
void displayMuxerSetValue(uint8_t value, bool valid, tMuxerSlot slot) {
displayValues[slot].value = value;
displayValues[slot].valid = valid;
}

26
src/displayMuxer.h Normal file
View File

@ -0,0 +1,26 @@
/*
* displayMuxer.h
*
* Created on: 05.09.2016
* Author: wn
*/
#ifndef DISPLAYMUXER_H_
#define DISPLAYMUXER_H_
#include <stdbool.h>
#include <stdint.h>
typedef enum {
FIRST_MUX = 0,
TIMER_MUX = FIRST_MUX,
TEMPERATURE_MUX,
MUX_ENDS
} tMuxerSlot;
void displayMuxerInit(void *handleArg);
void displayMuxerExec(void *handleArg);
void displayMuxerSetValue(uint8_t value, bool valid, tMuxerSlot slot);
#endif /* DISPLAYMUXER_H_ */

View File

@ -13,6 +13,7 @@
#include "gpio.h"
#include "time.h"
#include "display.h"
#include "displayMuxer.h"
#include "PontCoopScheduler.h"
// #include "testTask.h"
#include "measure.h"
@ -44,12 +45,14 @@ int main() {
// testTaskInit(&testTaskHandle2, TESTPIN2);
measureInit(NULL);
displayMuxerInit(NULL);
schAdd(displayExec, NULL, 0, 100);
// schAdd(testTaskExec, &testTaskHandle1, 0, 20);
// schAdd(testTaskExec, &testTaskHandle2, 2, 20);
schAdd(measureStartConversion, NULL, 0, 1000);
schAdd(displayMuxerExec, NULL, 0, 500);
__enable_interrupt();

View File

@ -8,9 +8,11 @@
#include <msp430g2553.h>
#include <stdint.h>
#include <stdlib.h>
#include <stdbool.h>
#include "measure.h"
#include "PontCoopScheduler.h"
#include "displayMuxer.h"
#include "display.h"
#include "gpio.h"
@ -52,7 +54,8 @@ void measureCollectAndProcessConversion(void *handleArg) {
uint8_t temperature = (uint8_t)t;
displaySetValue(temperature);
// displaySetValue(temperature);
displayMuxerSetValue(temperature, true, TEMPERATURE_MUX);
//gpioSetPin(TESTPIN2, LOW);
}