115 lines
2.4 KiB
Markdown
115 lines
2.4 KiB
Markdown
# Themostat Firmware
|
|
|
|
## Description
|
|
|
|
This embedded firmware is the thermostat mode.
|
|
|
|
### Micro Controller Pins
|
|
|
|
**ATtiny404**
|
|
|
|
1. VDD(+5v)
|
|
2. PA4(ADC_LOAD1)
|
|
3. PA5(ADC_LOAD2)
|
|
4. PA6(ADC_LOAD3)
|
|
5. PA7(zerocrossing)
|
|
6. PB3(EN2)
|
|
7. PB2(EN3)
|
|
8. PB1(SDA)
|
|
9. PB0(SCL)
|
|
10. RST(NC)
|
|
11. PA1(G1)
|
|
12. PA2(EN1)
|
|
13. PA3(NC)
|
|
14. VSS(GND)
|
|
|
|
*key*
|
|
NC:: Not Connected
|
|
PBX:: Port B pin X
|
|
PAX:: Port A pin X
|
|
RST:: Reset pin
|
|
|
|
|
|
## Project Layout
|
|
|
|
**Tree -L 1, output**
|
|
```
|
|
.
|
|
├── avr-gcc-toolchain.cmake
|
|
├── build
|
|
├── CMakeLists.txt
|
|
├── compile_commands.json -> ./build/compile_commands.json
|
|
├── docs
|
|
├── Doxyfile
|
|
├── inc
|
|
├── mocks
|
|
├── otto.sh
|
|
├── README.md
|
|
├── setup.sh
|
|
├── src
|
|
└── tests
|
|
|
|
6 directories, 7 files
|
|
```
|
|
|
|
The source code required to run/build the project is in the `/src` directory,
|
|
with the headers residing inside the `/inc` directory for most public modules.
|
|
|
|
All other directories are for supporting the development cycle and are used for
|
|
testitng the code base to ensure accuracy and quality. These are contained in
|
|
the `tests` and `mocks` directories.
|
|
|
|
Documentation that has been generated is inside the docs folder which contains
|
|
the html output that can be browswed via your regular web browser.
|
|
|
|
PDF genreation from the doumentaiton is also possible if enabled through the
|
|
`Doxyfile` inside the projects root directory.
|
|
|
|
The build directory contains the output and makefiles genrerated automatically
|
|
when using CMake.
|
|
|
|
This build directory also holds the bin files genreated along with the hex and
|
|
elf files.
|
|
|
|
## Build Requirements
|
|
|
|
- AVR-GCC toolchain OR XC8 from microchip.
|
|
- Make OR CMAKE
|
|
- avrdude
|
|
- A AVR programmer, usbasp for older chips and UPDI for newer ones.
|
|
|
|
|
|
## Dev Requirements
|
|
|
|
- ATtiny404 series micro-controller
|
|
- AVR-GCC toolchain.
|
|
- Cmake
|
|
- cpputest(Unit testing harness.)
|
|
- Doxygen(For documentation)
|
|
- Git(For version control)
|
|
|
|
|
|
## Running Unit Tests
|
|
|
|
To run the cppunit tests you can use the included shell script inside a bash
|
|
shell.
|
|
|
|
```sh
|
|
echo "1" | ./otto.sh
|
|
```
|
|
|
|
The command runs the otto script which automates parts of the development cycle
|
|
such as running and building tests, compiling hex files and flashing the code
|
|
to a micro-controller using arvdude.
|
|
|
|
|
|
## Roadmap
|
|
|
|
Some stuff that still needs done.
|
|
|
|
- [X] Add ADC Mocked interface.
|
|
- [X] Write tests for ADC Mock
|
|
- [X] Write ZCD using ADC Mock.
|
|
- [X] Write ADC version for ATtiny404
|
|
|