change tabs to spaces
This commit is contained in:
@ -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--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
54
src/gpio.c
54
src/gpio.c
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
40
src/gpio.h
40
src/gpio.h
@ -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();
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
|
44
src/main.c
44
src/main.c
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user