change tabs to spaces

This commit is contained in:
2016-09-07 13:29:10 +02:00
parent 435ba0ce81
commit c7041300e6
13 changed files with 246 additions and 246 deletions

View File

@ -14,60 +14,60 @@ tTask tasks[MAX_NUM_OF_TASKS];
void schInit() { void schInit() {
for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) { for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) {
tasks[i].delay = 0; tasks[i].delay = 0;
tasks[i].period = 0; tasks[i].period = 0;
tasks[i].run = 0; tasks[i].run = 0;
tasks[i].exec = NULL; tasks[i].exec = NULL;
tasks[i].handle = NULL; tasks[i].handle = NULL;
} }
} }
void schAdd(void (*exec)(void *), void *handle, uint32_t delay, uint32_t period) { void schAdd(void (*exec)(void *), void *handle, uint32_t delay, uint32_t period) {
for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) { for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) {
if (tasks[i].exec == NULL) { if (tasks[i].exec == NULL) {
tasks[i].delay = delay; tasks[i].delay = delay;
tasks[i].period = period; tasks[i].period = period;
tasks[i].run = 0; tasks[i].run = 0;
tasks[i].exec = exec; tasks[i].exec = exec;
tasks[i].handle = handle; tasks[i].handle = handle;
break; break;
} }
} }
} }
void schDel(void (*exec)(void *), void *handle) { void schDel(void (*exec)(void *), void *handle) {
for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) { for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) {
if ((tasks[i].exec == exec) && (tasks[i].handle == handle)) { if ((tasks[i].exec == exec) && (tasks[i].handle == handle)) {
tasks[i].exec = NULL; tasks[i].exec = NULL;
break; break;
} }
} }
} }
void schExec() { void schExec() {
for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) { for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) {
if (tasks[i].exec != NULL && tasks[i].run > 0) { if (tasks[i].exec != NULL && tasks[i].run > 0) {
tasks[i].run--; tasks[i].run--;
tasks[i].exec(tasks[i].handle); tasks[i].exec(tasks[i].handle);
if (tasks[i].period == 0) { if (tasks[i].period == 0) {
tasks[i].exec = NULL; tasks[i].exec = NULL;
} }
} }
} }
} }
void schUpdate() { void schUpdate() {
for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) { for (uint8_t i = 0; i < MAX_NUM_OF_TASKS; i++) {
if (tasks[i].exec != NULL) { if (tasks[i].exec != NULL) {
if (tasks[i].delay == 0) { if (tasks[i].delay == 0) {
tasks[i].delay = tasks[i].period; tasks[i].delay = tasks[i].period;
tasks[i].run++; tasks[i].run++;
} else { } else {
tasks[i].delay--; tasks[i].delay--;
} }
} }
} }
} }

View File

@ -17,11 +17,11 @@
typedef struct { typedef struct {
uint32_t delay; uint32_t delay;
uint32_t period; uint32_t period;
uint8_t run; uint8_t run;
void (*exec)(void *handle); void (*exec)(void *handle);
void *handle; void *handle;
} tTask; } tTask;

View File

@ -19,10 +19,10 @@
const uint16_t INIT_CYCLE_DELAY = 200; const uint16_t INIT_CYCLE_DELAY = 200;
typedef enum { typedef enum {
ALL_ID = 10, ALL_ID = 10,
H_ID, H_ID,
I_ID, I_ID,
EMPTY_ID, EMPTY_ID,
} tPatternId; } tPatternId;
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 };
@ -43,8 +43,8 @@ const tPin NUMBER8[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_E, SEG_F, SEG_G, PINS_E
const tPin NUMBER9[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_F, SEG_G, PINS_END }; const tPin NUMBER9[] = { SEG_A, SEG_B, SEG_C, SEG_D, SEG_F, SEG_G, PINS_END };
const tPin *NUMBERS[] = { NUMBER0, NUMBER1, NUMBER2, NUMBER3, NUMBER4, const tPin *NUMBERS[] = { NUMBER0, NUMBER1, NUMBER2, NUMBER3, NUMBER4,
NUMBER5, NUMBER6, NUMBER7, NUMBER8, NUMBER9, ALL_PATTERN, H_PATTERN, NUMBER5, NUMBER6, NUMBER7, NUMBER8, NUMBER9, ALL_PATTERN, H_PATTERN,
I_PATTERN, EMPTY_PATTERN }; I_PATTERN, EMPTY_PATTERN };
const tPin DIGITS[] = { DIGIT_0, DIGIT_1, PINS_END }; const tPin DIGITS[] = { DIGIT_0, DIGIT_1, PINS_END };
@ -54,56 +54,56 @@ uint8_t digitValues[2] = { EMPTY_ID, EMPTY_ID };
void displayInit(void *handleArg) { void displayInit(void *handleArg) {
for (tPin d = DIGIT_0; d <= DIGIT_1; d++) { for (tPin d = DIGIT_0; d <= DIGIT_1; d++) {
gpioSetPin(d, LOW); gpioSetPin(d, LOW);
for (tPin s = SEG_A; s <= SEG_G; s++) { for (tPin s = SEG_A; s <= SEG_G; s++) {
gpioSetPin(s, HIGH); gpioSetPin(s, HIGH);
ms_active_delay(INIT_CYCLE_DELAY); ms_active_delay(INIT_CYCLE_DELAY);
gpioSetPin(s, LOW); gpioSetPin(s, LOW);
} }
gpioSetPin(d, HIGH); gpioSetPin(d, HIGH);
} }
} }
static void showNumber(uint8_t n) { static void showNumber(uint8_t n) {
const tPin *pattern = NUMBERS[ALL_ID]; const tPin *pattern = NUMBERS[ALL_ID];
do { do {
gpioSetPin(*pattern, LOW); gpioSetPin(*pattern, LOW);
pattern++; pattern++;
} while (*pattern != PINS_END); } while (*pattern != PINS_END);
pattern = NUMBERS[n]; pattern = NUMBERS[n];
do { do {
gpioSetPin(*pattern, HIGH); gpioSetPin(*pattern, HIGH);
pattern++; pattern++;
} while (*pattern != PINS_END); } while (*pattern != PINS_END);
} }
void displaySetValue(uint8_t v) { void displaySetValue(uint8_t v) {
if (v >= 100) { if (v >= 100) {
digitValues[1] = H_ID; digitValues[1] = H_ID;
digitValues[0] = I_ID; digitValues[0] = I_ID;
} else { } else {
digitValues[1] = v / 10; digitValues[1] = v / 10;
digitValues[0] = v - digitValues[1] * 10; digitValues[0] = v - digitValues[1] * 10;
} }
} }
void displayExec(void *handleArg) { void displayExec(void *handleArg) {
static uint8_t activeDigit = 0; static uint8_t activeDigit = 0;
activeDigit++; activeDigit++;
if (activeDigit == 2) { if (activeDigit == 2) {
activeDigit = 0; activeDigit = 0;
} }
const tPin *digit = DIGITS; const tPin *digit = DIGITS;
do { do {
gpioSetPin(*digit, HIGH); gpioSetPin(*digit, HIGH);
digit++; digit++;
} while (*digit != PINS_END); } while (*digit != PINS_END);
digit = DIGITS + activeDigit; digit = DIGITS + activeDigit;
gpioSetPin(*digit, LOW); gpioSetPin(*digit, LOW);
showNumber(digitValues[activeDigit]); showNumber(digitValues[activeDigit]);
} }

View File

@ -15,35 +15,35 @@
typedef struct { typedef struct {
uint8_t value; uint8_t value;
bool valid; bool valid;
} tDisplayValue; } tDisplayValue;
tDisplayValue displayValues[MUX_ENDS]; tDisplayValue displayValues[MUX_ENDS];
void displayMuxerInit(void *handleArg) { void displayMuxerInit(void *handleArg) {
for (tMuxerSlot i = FIRST_MUX; i < MUX_ENDS; i++) { for (tMuxerSlot i = FIRST_MUX; i < MUX_ENDS; i++) {
displayValues[i].value = 0; displayValues[i].value = 0;
displayValues[i].valid = false; displayValues[i].valid = false;
} }
} }
void displayMuxerExec(void *handleArg) { void displayMuxerExec(void *handleArg) {
static tMuxerSlot slot = FIRST_MUX; static tMuxerSlot slot = FIRST_MUX;
if (displayValues[slot].valid) { if (displayValues[slot].valid) {
displaySetValue(displayValues[slot].value); displaySetValue(displayValues[slot].value);
} }
slot++; slot++;
if (slot == MUX_ENDS) { if (slot == MUX_ENDS) {
slot = FIRST_MUX; slot = FIRST_MUX;
} }
} }
void displayMuxerSetValue(uint8_t value, bool valid, tMuxerSlot slot) { void displayMuxerSetValue(uint8_t value, bool valid, tMuxerSlot slot) {
displayValues[slot].value = value; displayValues[slot].value = value;
displayValues[slot].valid = valid; displayValues[slot].valid = valid;
} }

View File

@ -12,10 +12,10 @@
#include <stdint.h> #include <stdint.h>
typedef enum { typedef enum {
FIRST_MUX = 0, FIRST_MUX = 0,
TIMER_MUX = FIRST_MUX, TIMER_MUX = FIRST_MUX,
TEMPERATURE_MUX, TEMPERATURE_MUX,
MUX_ENDS MUX_ENDS
} tMuxerSlot; } tMuxerSlot;
void displayMuxerInit(void *handleArg); void displayMuxerInit(void *handleArg);

View File

@ -19,35 +19,35 @@ extern tPinCfg pinCfg[];
void gpioInitPins() { void gpioInitPins() {
for (tPin p = PINS_FIRST; p < PINS_END; p += 1) { for (tPin p = PINS_FIRST; p < PINS_END; p += 1) {
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; P1SEL &= ~pin.bit;
P1SEL2 &= ~pin.bit; P1SEL2 &= ~pin.bit;
} else if (pin.portId == PORT2) { } else if (pin.portId == PORT2) {
P2DIR |= pin.bit; P2DIR |= pin.bit;
P2SEL &= ~pin.bit; P2SEL &= ~pin.bit;
P2SEL2 &= ~pin.bit; P2SEL2 &= ~pin.bit;
} }
gpioSetPin(p, pin.defaultOut); gpioSetPin(p, pin.defaultOut);
} }
} }
void gpioSetPin(tPin p, tPinState v) { void gpioSetPin(tPin p, tPinState v) {
tPinCfg pin = pinCfg[p]; tPinCfg pin = pinCfg[p];
if (v == HIGH) { if (v == HIGH) {
if (pin.portId == PORT1) { if (pin.portId == PORT1) {
P1OUT |= pin.bit; P1OUT |= pin.bit;
} else if (pin.portId == PORT2) { } else if (pin.portId == PORT2) {
P2OUT |= pin.bit; P2OUT |= pin.bit;
} }
} else { } else {
if (pin.portId == PORT1) { if (pin.portId == PORT1) {
P1OUT &= ~pin.bit; P1OUT &= ~pin.bit;
} else if (pin.portId == PORT2) { } else if (pin.portId == PORT2) {
P2OUT &= ~pin.bit; P2OUT &= ~pin.bit;
} }
} }
} }

View File

@ -15,36 +15,36 @@
typedef enum { typedef enum {
PORT1, PORT1,
PORT2 PORT2
} tPort; } tPort;
typedef enum { typedef enum {
LOW, LOW,
HIGH, HIGH,
} tPinState; } tPinState;
typedef struct { typedef struct {
tPort portId; tPort portId;
uint16_t bit; uint16_t bit;
tPinState defaultOut; tPinState defaultOut;
} tPinCfg; } tPinCfg;
typedef enum { typedef enum {
PINS_FIRST, PINS_FIRST,
SEG_A = PINS_FIRST, SEG_A = PINS_FIRST,
SEG_B, SEG_B,
SEG_C, SEG_C,
SEG_D, SEG_D,
SEG_E, SEG_E,
SEG_F, SEG_F,
SEG_G, SEG_G,
DIGIT_0, DIGIT_0,
DIGIT_1, DIGIT_1,
TESTPIN1, TESTPIN1,
TESTPIN2, TESTPIN2,
PINS_END PINS_END
} tPin; } tPin;
void gpioInitPins(); void gpioInitPins();

View File

@ -8,15 +8,15 @@
#include "gpio.h" #include "gpio.h"
tPinCfg pinCfg[PINS_END] = { tPinCfg pinCfg[PINS_END] = {
{PORT1, BIT7, LOW}, //A {PORT1, BIT7, LOW}, //A
{PORT1, BIT6, LOW}, //B {PORT1, BIT6, LOW}, //B
{PORT2, BIT1, LOW}, //C {PORT2, BIT1, LOW}, //C
{PORT2, BIT3, LOW}, //D {PORT2, BIT3, LOW}, //D
{PORT2, BIT4, LOW}, //E {PORT2, BIT4, LOW}, //E
{PORT2, BIT5, LOW}, //F {PORT2, BIT5, LOW}, //F
{PORT2, BIT2, LOW}, //G {PORT2, BIT2, LOW}, //G
{PORT2, BIT0, HIGH}, //0 {PORT2, BIT0, HIGH}, //0
{PORT1, BIT5, HIGH}, //1 {PORT1, BIT5, HIGH}, //1
{PORT1, BIT1, LOW}, // TESTPIN1 {PORT1, BIT1, LOW}, // TESTPIN1
{PORT1, BIT2, LOW}, // TESTPIN2 {PORT1, BIT2, LOW}, // TESTPIN2
}; };

View File

@ -19,37 +19,37 @@
int main() { int main() {
WDTCTL = WDTPW | WDTHOLD; WDTCTL = WDTPW | WDTHOLD;
// highest possible system clock // highest possible system clock
DCOCTL = DCO0 | DCO1 | DCO2; DCOCTL = DCO0 | DCO1 | DCO2;
BCSCTL1 = XT2OFF | RSEL0 | RSEL1 | RSEL2 | RSEL3; BCSCTL1 = XT2OFF | RSEL0 | RSEL1 | RSEL2 | RSEL3;
BCSCTL2 = 0; BCSCTL2 = 0;
BCSCTL3 = 0; BCSCTL3 = 0;
gpioInitPins(); gpioInitPins();
timeInit(); timeInit();
schInit(); schInit();
// interrupts are required for delay function in displayInit(); // interrupts are required for delay function in displayInit();
__enable_interrupt(); __enable_interrupt();
displayInit(NULL); displayInit(NULL);
__disable_interrupt(); __disable_interrupt();
measureInit(NULL); measureInit(NULL);
// displayMuxerInit(NULL); // displayMuxerInit(NULL);
schAdd(displayExec, NULL, 0, DISPLAY_CYCLE); schAdd(displayExec, NULL, 0, DISPLAY_CYCLE);
schAdd(measureStartConversion, NULL, 0, MEASURE_CYCLE); schAdd(measureStartConversion, NULL, 0, MEASURE_CYCLE);
// schAdd(displayMuxerExec, NULL, 0, 500); // schAdd(displayMuxerExec, NULL, 0, 500);
__enable_interrupt(); __enable_interrupt();
while (1) { while (1) {
schExec(); schExec();
} }
} }

View File

@ -26,47 +26,47 @@ const float PT1000_Coeff = 3.85e-3;
void measureInit(void *handleArg) { void measureInit(void *handleArg) {
ADC10CTL0 = SREF1 | ADC10SHT_3 | ADC10SR | REFOUT | REFON | REF2_5V | ADC10ON; ADC10CTL0 = SREF1 | ADC10SHT_3 | ADC10SR | REFOUT | REFON | REF2_5V | ADC10ON;
ADC10CTL1 = INCH_3; ADC10CTL1 = INCH_3;
ADC10AE0 = BIT3; ADC10AE0 = BIT3;
} }
void measureCollectAndProcessConversion(void *handleArg); void measureCollectAndProcessConversion(void *handleArg);
void measureStartConversion(void *handleArg) { void measureStartConversion(void *handleArg) {
//gpioSetPin(TESTPIN1, HIGH); //gpioSetPin(TESTPIN1, HIGH);
ADC10CTL0 |= ENC | ADC10SC; ADC10CTL0 |= ENC | ADC10SC;
schAdd(measureCollectAndProcessConversion, NULL, MEASURE_FETCH_RESULT_DELAY, 0); schAdd(measureCollectAndProcessConversion, NULL, MEASURE_FETCH_RESULT_DELAY, 0);
//gpioSetPin(TESTPIN1, LOW); //gpioSetPin(TESTPIN1, LOW);
} }
void measureCollectAndProcessConversion(void *handleArg) { void measureCollectAndProcessConversion(void *handleArg) {
//gpioSetPin(TESTPIN2, HIGH);
uint16_t n = 0xffff;
if ((ADC10CTL0 & ADC10IFG) != 0) {
n = ADC10MEM;
ADC10CTL0 &= ~(ADC10IFG | ENC);
}
// process adcValue
// store result in variable temperature
float r = 0.0;
if (n == 0) {
r = 0.0;
} else if (n == N_MAX) {
r = FLT_MAX;
} else {
r = R_REF / ((((float)N_MAX) / ((float)n)) - 1.0);
}
float t = (r / PT1000_R0 - 1) / PT1000_Coeff;
uint8_t temperature = (uint8_t)t; //gpioSetPin(TESTPIN2, HIGH);
uint16_t n = 0xffff;
if ((ADC10CTL0 & ADC10IFG) != 0) {
n = ADC10MEM;
ADC10CTL0 &= ~(ADC10IFG | ENC);
}
displaySetValue(temperature); // process adcValue
// displayMuxerSetValue(temperature, true, TEMPERATURE_MUX); // store result in variable temperature
//gpioSetPin(TESTPIN2, LOW); float r = 0.0;
if (n == 0) {
r = 0.0;
} else if (n == N_MAX) {
r = FLT_MAX;
} else {
r = R_REF / ((((float)N_MAX) / ((float)n)) - 1.0);
}
float t = (r / PT1000_R0 - 1) / PT1000_Coeff;
uint8_t temperature = (uint8_t)t;
displaySetValue(temperature);
// displayMuxerSetValue(temperature, true, TEMPERATURE_MUX);
//gpioSetPin(TESTPIN2, LOW);
} }

View File

@ -11,34 +11,34 @@
void testTaskInit(void *handleArg, tPin pin) { void testTaskInit(void *handleArg, tPin pin) {
tTestTaskHandle *handle = handleArg; tTestTaskHandle *handle = handleArg;
handle->pin = pin; handle->pin = pin;
handle->toggle = 0; handle->toggle = 0;
} }
void testTaskSwitchOff(void *handleArg) { void testTaskSwitchOff(void *handleArg) {
tTestTaskHandle *handle = handleArg; tTestTaskHandle *handle = handleArg;
if (handle->toggle == 0) { if (handle->toggle == 0) {
handle->toggle = 1; handle->toggle = 1;
gpioSetPin(handle->pin, HIGH); gpioSetPin(handle->pin, HIGH);
} else { } else {
handle->toggle = 0; handle->toggle = 0;
gpioSetPin(handle->pin, LOW); gpioSetPin(handle->pin, LOW);
} }
} }
void testTaskExec(void *handleArg) { void testTaskExec(void *handleArg) {
tTestTaskHandle *handle = handleArg; tTestTaskHandle *handle = handleArg;
if (handle->toggle == 0) { if (handle->toggle == 0) {
handle->toggle = 1; handle->toggle = 1;
gpioSetPin(handle->pin, HIGH); gpioSetPin(handle->pin, HIGH);
} else { } else {
handle->toggle = 0; handle->toggle = 0;
gpioSetPin(handle->pin, LOW); gpioSetPin(handle->pin, LOW);
} }
schAdd(testTaskSwitchOff, handle, 5, 0); schAdd(testTaskSwitchOff, handle, 5, 0);
} }

View File

@ -13,8 +13,8 @@
typedef struct { typedef struct {
tPin pin; tPin pin;
uint8_t toggle; uint8_t toggle;
} tTestTaskHandle; } tTestTaskHandle;
void testTaskInit(void *handleArg, tPin pin); void testTaskInit(void *handleArg, tPin pin);

View File

@ -37,6 +37,6 @@ uint32_t getMillis() {
} }
void ms_active_delay(uint16_t delay) { void ms_active_delay(uint16_t delay) {
uint32_t start = timestamp; uint32_t start = timestamp;
while (start + delay > timestamp); while (start + delay > timestamp);
} }