Update documentation and do some basic housekeeping
This commit is contained in:
73
docs/CHANGELOG.md
Normal file
73
docs/CHANGELOG.md
Normal file
@@ -0,0 +1,73 @@
|
||||
## Changelog
|
||||
|
||||
### v0.75-alpha1
|
||||
- Fix parser tail pointer semantics.
|
||||
- Improve sensor log readability and minor naming fixes.
|
||||
- Add multiple README sections and use markdown formatting.
|
||||
- Reduce RXBUF size to match parser and space out log messages.
|
||||
- Prevent redundant writes and start implementing parser timeout.
|
||||
- Fix large serial command input triggering watchdog.
|
||||
- Merge pull request #5 from madcow/parser.
|
||||
- Implement serial command parser with floating point support.
|
||||
- Merge pull request #4 from madcow/eeprom-sentinel-v2.
|
||||
- Use reference sentinel to efficiently reset dirty flags on rollover.
|
||||
- Merge pull request #3 from madcow/eeprom-testing.
|
||||
- Pass variable structure as argument for memory functions.
|
||||
- Fix possible race condition and ensure proper reset flag detection.
|
||||
- Check MCUCSR for WDRF flag only and add TODO.
|
||||
- Implement memory wear leveling algorithm.
|
||||
- Define memory manager constants and add TODO.
|
||||
- Merge pull request #2 from madcow/eeprom.
|
||||
- Dump EEPROM to ensure low level memory access is working correctly.
|
||||
- Implement raw EEPROM read and write functionality.
|
||||
- Burn EESAVE fuse to preserve EEPROM on chip erase.
|
||||
- Define basic EEPROM data structures and functions.
|
||||
- Merge pull request #1 from madcow/thermistor.
|
||||
- Implement alternate voltage divider equation.
|
||||
- Calculate average dewpoint from multiple sensor measurements.
|
||||
- Test different approach for resistance calculation.
|
||||
- Ensure math functions are named consistently.
|
||||
- Make sure dewpoint calculations are correct.
|
||||
- Split thermistor functions into separate logical units and add TODO.
|
||||
- Implement all required conversion functions.
|
||||
- Define conversion functions for TD, T and RH.
|
||||
- Update planned FREQ, ARCH, MCU and fix superfluous whitespace.
|
||||
- Define basic structure for primary state machine and update TODOs.
|
||||
- Remove executable bit from pdf files.
|
||||
- Add data sheet for ATMEGA1284P-PU.
|
||||
- Poll ADC mode bit until conversion has finished.
|
||||
- Set FAN03 to maximum duty and declutter log output.
|
||||
- Calculate temperature from thermistor resistance.
|
||||
- Set ADC gain to 6.144V and fix multiplexer channel documentation.
|
||||
- Define constants for ADC multiplexer settings and describe I2C status flags.
|
||||
- Define constants for watchdog timeout flags.
|
||||
- Initialize OCR1A to FAN02\_MIN\_DUTY and add PWM documentation.
|
||||
- Minor coding style and consistency fixes.
|
||||
- Jump to reset vector when program exceeds specified watchdog timeout.
|
||||
- Start implementing watchdog timer.
|
||||
- Make log output slightly more readable.
|
||||
- Implement ADS1115 register reading and writing.
|
||||
- Try setting variable PWM frequency with timer2.
|
||||
- Set pin for light MOSFET to low in MOS\_Init.
|
||||
- Remove invisible runtime assertions.
|
||||
- Rename module TWI to I2C and add comments.
|
||||
- Read and translate AHT20 sensor readings.
|
||||
- Move PWM and MOSFET implementations into separate module files.
|
||||
- Ensure correct naming for PWM devices.
|
||||
- Calculate PWM\_CYCLE\_TOP from F\_CPU.
|
||||
- Add more general SetMosState() and SetPwmValue() functions.
|
||||
- Configure PWM timers for 25 KHz.
|
||||
- Handle PWM on pin PD4, PD5 and PD7.
|
||||
- Start working on system initialization.
|
||||
- Add data sheets for ADS1115 and AHT20.
|
||||
- Handle I2C multiplexer channel selection.
|
||||
- Implement USART with bot RX and TX interrupts.
|
||||
- Rewrite logging system and sync state with clients.
|
||||
- Handle numeric arguments for TEMP/DEWP commands.
|
||||
- Update documentation and add USART specification.
|
||||
- Start implementing proper parser state machine.
|
||||
- Add optional project submodules 'tools' and 'webgui'.
|
||||
- Implement ring buffer and auxiliary functions.
|
||||
- Add swapfiles and bin/ to .gitignore.
|
||||
- Handle USART\_RXC interrupt.
|
||||
- Implement basic UART reading.
|
||||
@@ -3,7 +3,7 @@
|
||||
### Prerequisites
|
||||
|
||||
You must have avr-gcc and avrdude installed. To install both
|
||||
tools on a debian-based system, please run the following
|
||||
tools on a Debian-based system, please run the following
|
||||
command:
|
||||
|
||||
apt install avr-gcc avrdude
|
||||
@@ -12,35 +12,51 @@ The names for these dependencies may differ for other package
|
||||
managers and distributions. Please check the package sources
|
||||
on your system for more information.
|
||||
|
||||
You will also need an in-circuit programmer for Atmel AVR
|
||||
controllers like the [USBasp](https://www.fischl.de/usbasp).
|
||||
If you want to send commands and receive debug output you
|
||||
must make sure to have a serial interface available at
|
||||
`/dev/ttyUSB0`.
|
||||
|
||||
### Build and Install
|
||||
|
||||
Run this next command in the project root directory to
|
||||
build and install the project using an USBasp programmer:
|
||||
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. To remove all build
|
||||
related auxiliary files you may run these commands:
|
||||
your specific build environment.
|
||||
|
||||
To remove all build related auxiliary files you may run
|
||||
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 next section):
|
||||
submodules as described in the 'Setting a New Target'
|
||||
section):
|
||||
|
||||
make listen
|
||||
|
||||
### Temperature and Dewpoint Targets
|
||||
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.
|
||||
|
||||
You can use the script below to send serial commands (you
|
||||
may need to run `git submodule update --init` if the tools
|
||||
make listen-web
|
||||
|
||||
### 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):
|
||||
|
||||
./opt/tools/serial-send.py <command> <args, ...>
|
||||
./opt/tools/serial-send.py <command> <args ...>
|
||||
|
||||
Issue the SET command to update the target settings:
|
||||
|
||||
@@ -50,3 +66,19 @@ Settings are stored in EEPROM and are persistent until a new
|
||||
SET command is issued. Keywords are not case-sensitive. Both
|
||||
arguments may contain a decimal point followed by a sequence
|
||||
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
|
||||
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
|
||||
|
||||
See the README file in the webgui/ 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.
|
||||
|
||||
Reference in New Issue
Block a user