Reduce number of watchdog timer resets and rename Makefile target
This commit is contained in:
20
Makefile
20
Makefile
@@ -8,15 +8,6 @@
|
||||
# GENERAL SETTINGS
|
||||
# ==============================================================================
|
||||
|
||||
# NOTE: System clock frequency should be a multiple of 1.8432MHz for USART.
|
||||
|
||||
SRCDIR := src
|
||||
BINDIR := bin
|
||||
TMPDIR := $(BINDIR)/build
|
||||
TARGET := $(BINDIR)/core.hex
|
||||
ELFFILE := $(BINDIR)/core.elf
|
||||
LOGFILE := $(BINDIR)/core.log
|
||||
|
||||
VERBOSE := false
|
||||
#ARCH := m1284p
|
||||
ARCH := m32
|
||||
@@ -32,6 +23,13 @@ AVD := avrdude
|
||||
MKDIR := mkdir -p
|
||||
RMR := rm -rf
|
||||
|
||||
SRCDIR := src
|
||||
BINDIR := bin
|
||||
TMPDIR := $(BINDIR)/build
|
||||
TARGET := $(BINDIR)/core.hex
|
||||
ELFFILE := $(BINDIR)/core.elf
|
||||
LOGFILE := $(BINDIR)/core.log
|
||||
|
||||
CPPFLAGS := -DF_CPU=$(FREQ) -I$(SRCDIR)
|
||||
CFLAGS := -mmcu=$(MCU) -Os -std=c99 -Wall -Wextra -Werror
|
||||
OCFLAGS := -j .text -j .data -O ihex
|
||||
@@ -85,8 +83,8 @@ listen: ./opt/tools/serial-listen.py
|
||||
$(E) "[PY3] $<"
|
||||
$(Q) ./$<
|
||||
|
||||
.PHONY: listen-web
|
||||
listen-web: ./opt/webgui/Makefile
|
||||
.PHONY: webgui
|
||||
webgui: ./opt/webgui/Makefile
|
||||
$(E) "[MAK] $(<D)"
|
||||
$(Q) $(MAKE) -sC $(<D)
|
||||
|
||||
|
||||
@@ -26,37 +26,37 @@ build and install the project:
|
||||
make all
|
||||
|
||||
If there are any errors during the flashing process you
|
||||
should find more information in core.log in the bin/
|
||||
directory. See the Makefile for different settings for
|
||||
your specific build environment.
|
||||
should find more information in `bin/core.log`. See the
|
||||
Makefile for all build-related settings and make sure
|
||||
they are correct for your current build environment.
|
||||
|
||||
To remove all build related auxiliary files you may run
|
||||
these commands:
|
||||
To remove build related auxiliary files you may use one
|
||||
of these commands:
|
||||
|
||||
make clean
|
||||
make distclean
|
||||
|
||||
You can listen on the serial debug interface using the
|
||||
command below (if you have initialized the optional
|
||||
submodules as described in the 'Setting a New Target'
|
||||
section):
|
||||
You can listen on the serial debug interface by running
|
||||
the command below (if you have initialized the optional
|
||||
submodules as described in the section 'Setting a New
|
||||
Target'):
|
||||
|
||||
make listen
|
||||
|
||||
Alternatively you can spin up a web server on port 443
|
||||
to interface with the device using the following command.
|
||||
Make sure to read section 'Webinterface Example' for more
|
||||
information.
|
||||
information on how to configure the server.
|
||||
|
||||
make listen-web
|
||||
make webgui
|
||||
|
||||
### Setting a New Target
|
||||
|
||||
The script below allows you to send serial commands (you
|
||||
may need to run `git submodule update --init` if the tools/
|
||||
directory is empty):
|
||||
may need to run `git submodule update --init` first, if
|
||||
the `opt/tools/` directory is empty):
|
||||
|
||||
./opt/tools/serial-send.py <command> <args ...>
|
||||
opt/tools/serial-send.py <command> <args ...>
|
||||
|
||||
Issue the SET command to update the target settings:
|
||||
|
||||
@@ -70,15 +70,15 @@ of digits.
|
||||
### Webinterface Example
|
||||
|
||||
There is an example Python web server utilizing websockets you
|
||||
can check out in `opt/webgui`. It should give you a basis for
|
||||
can check out in `opt/webgui/`. It should give you a basis for
|
||||
writing a custom network bridge and integrating the device into
|
||||
your home automation system.
|
||||
|
||||
You must generate a self-signed certificate before you run the
|
||||
server. The configuration script will take care of it:
|
||||
|
||||
./opt/webgui/configure
|
||||
opt/webgui/configure
|
||||
|
||||
See the README file in the webgui/ directory for prerequisites
|
||||
See the README file in the server directory for prerequisites
|
||||
and more information. Please be aware that development for the
|
||||
web server has paused until the core has reached version v1.0.
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
static void Puts(const char *str);
|
||||
static void PrintArgs(const char *fmt, va_list ap);
|
||||
static void Puts(const char *str);
|
||||
static void PrintArgs(const char *fmt, va_list ap);
|
||||
|
||||
void Print(const char *fmt, ...)
|
||||
{
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
#ifndef MAD_CORE_COMMON_MATH_H
|
||||
#define MAD_CORE_COMMON_MATH_H
|
||||
|
||||
float Resistance(int adc_raw);
|
||||
float SteinhartHart(float res);
|
||||
|
||||
float Dewpoint(float t, float rh);
|
||||
float Temperature(float td, float rh);
|
||||
float RelHumidity(float t, float td);
|
||||
float Resistance(int adc_raw);
|
||||
float SteinhartHart(float res);
|
||||
float Dewpoint(float t, float rh);
|
||||
float Temperature(float td, float rh);
|
||||
float RelHumidity(float t, float td);
|
||||
|
||||
#endif // MAD_CORE_COMMON_MATH_H
|
||||
|
||||
@@ -38,6 +38,9 @@ bool CMD_Parse(char ch, cmd_t *out)
|
||||
if (head < tail - 1) {
|
||||
*head++ = ch;
|
||||
*head = '\0';
|
||||
} else {
|
||||
// No space left
|
||||
WDT_Reset();
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -70,8 +70,9 @@ static int Init(void)
|
||||
// allowing us to detect infinite loops and any
|
||||
// other error that halts execution.
|
||||
|
||||
if (WDT_HasTriggered())
|
||||
if (WDT_HasTriggered()) {
|
||||
Info("Unexpected system reset.");
|
||||
}
|
||||
|
||||
WDT_Enable();
|
||||
WDT_SetTimeoutFlag(WDT2000); // 2 seconds
|
||||
@@ -80,7 +81,7 @@ static int Init(void)
|
||||
// stored in EEPROM and load them. Some sanity
|
||||
// checking must be done before using those.
|
||||
|
||||
if (MEM_Read(&mem)) { // Any valid blocks found?
|
||||
if (MEM_Read(&mem)) { // Any valid block found?
|
||||
Info("Found persistent configuration in EEPROM!");
|
||||
Info("Using targets TEMP=%.2fC, DEWP=%.2fC.",
|
||||
mem.temp, mem.dewp);
|
||||
@@ -146,7 +147,6 @@ static void Update(void)
|
||||
// Parse serial commands
|
||||
while ((ch = USART_Getc()) >= 0) {
|
||||
if (!CMD_Parse(ch, &cmd)) {
|
||||
WDT_Reset();
|
||||
continue;
|
||||
}
|
||||
switch(cmd.type) {
|
||||
@@ -181,7 +181,7 @@ static void SetTarget(float t, float td)
|
||||
Info("Setting temperature to %.2fC.", t);
|
||||
Info("Setting dewpoint to %.2fC.", td);
|
||||
|
||||
// Even with level wearing there is a finite number
|
||||
// Even with wear leveling there is a finite number
|
||||
// of EEPROM write cycles so we should always check
|
||||
// for redundant values. This could be handled by
|
||||
// the underlying memory implementation.
|
||||
|
||||
Reference in New Issue
Block a user