project: SLAB1

this features
- an SD card slot, this was used for development of the SD and FAT32 parts of impetuOS
- an OLED screen, this is provided as a character display for impetuOS software
- a matrix keypad because they are fun. this one is on an MCP23008
- an I2C RTC
- a temperature and humidity sensor
- LoRa
- a microchip I2C devboard
on boot SLAB1 currently runs a programme from the SD card. this programme shows the current time, temperature and humidity on the display, it stops when a switch on the red PCB is pressed. the programme can be configured to transmit the temperature and humidity over LoRa but currently doesnt. if no environment sensor is found the programme will enter receiver mode where it will use temperature and humidity values from LoRa.
blog
electronically it all seems reasonable but there have been some issues with the existing i2c and sensor drivers as used in SLAB1, these are:
the I2C mcs register does not always assert the busy flag fast enough to not miss when waited on, leading to missed errors
the environment sensor was either never polled particularly fast on SLAB1 or read errors were ignored; this led to a hang in reads on the PILE1 test code
a sequence of failed I2C repeated start were observed, this is either because of a (potentially long standing) driver issue or a misunderstanding. old pull requests and issues relating to the tivaC_I2C driver did not make any mention of repeated start not working; in fact there was an issue with a lack of stop conditions leading to everything being a repeated start, this makes it more likely that this is a bad oobservation where there was some other behaviour involved...
the environment sensor output revealed a humidity of around 70% which matched the humidity on the day((taken from the met office) this test was performed many times on different days and was always within reasonable bounds of error