Newer
Older
# DIOT Monitoring Module (MoniMod)
This is a SAMD21-based monitoring module for the DI/OT power supply
and fan tray.
*Disclaimer: this README is still incomplete, it will be properly
populated in time.*
Apart from the MoniMod PCB that can be found in the `monimod-pcb`
directory, there are currently three separate programs in this
1. The main FW, that will implement most functionality. This lives in
the `main_fw` directory.
2. The bootloader, that will implement remote programming (it doesn't
yet). It lives in the `bootloader` directory.
3. The simple I2C master written to help develop the main FW lives in
the `test_master` directory.
Apart from these four program directories, there is a `common`
directory that hosts some code that is shared between different
programs and a `utils` directory that will be used to host some
general development utilities. There is also a `build` directory which
hosts a very simple top-level makefile that simply builds and gathers
all FW binaries in one place.
Each program directory has an `atmel_start_prj` subdirectory: this is
a testament to the use of the [Atmel START](https://start.atmel.com/)
tool to generate drivers, other supporting code, linker scripts and
makefiles. The structure of the generated files has been slightly
altered, creating the `src`, `include` and `build` subdirectories
outside of `atmel_start_prj`.
- [x] Use USB as a terminal to print debug messages and possibly
interact with the program
- [x] Use the ADC to read the output of an
[LM61](http://www.ti.com/lit/ds/symlink/lm61.pdf) temperature
sensor
- [x] Develop a simple I2C master to help with the development of the
main FW
- [x] Have basic I2C communication between the test master and the
main FW
- [x] Develop the [SMBus](http://smbus.org/specs/smbus20.pdf) write /
read commands for the master and slave sides
- [x] Add extended commands compatible with
[PMBus](pmbus.org/Assets/PDFS/Public/PMBus_Specification_Part_II_Rev_1_0_20050328.pdf)
to add remote reprogramming capabilities
- [x] Add (per-command) callback support on command writes and reads
- [x] Reset over I2C
- [x] Have remote reprogramming working as part of the main FW
- [x] Add I2C functionality to the bootloader, move remote
reprogramming functionality entirely there
- [x] Implement SMBus block write and block read commands
- [x] Refactor the PMBus commands model to make it more practical
- [x] Add I2C Packet Error Checking (PEC) for robustness (as described
in the [SMBus
specification](http://smbus.org/specs/smbus20.pdf), pp. 26-27)
- [x] Implement the PMBus command subset for voltage, current and
- [x] Implement the PMBus command subset for fan control and
- [x] Add extra radiation fault mitigation measures