The main idea of this project is to use small microcontrollers like Atmega328, Attiny88, ... to extend functionality (e.g. watchdog timer, volatile memory, RAM, I/O pins, PWM, ...) of main master microcontrollers connected via I2C bus.
ATTENTION: The platformio project is initially configured for atmega328 microcontrollers with clocking from the built-in quartz resonator with the ability to work in 3.3v mode.
ATTENTION: All project settings are scattered across header files. Default i2c address is 8. Please note that the project uses a separate interrupt pin. Note that the byte order must match on both devices.
Commands supported by the controller, writing to commands is indicated by a leading character ~ + command code + required bytes for the command + interrupt (if specified in the input).
| Feature | Code (u8) | RecvBytes (count) | RecvInt (exp(+)/ignore(-)) | SendBytes(count) | SendInt(exp(+)/ignore(-)) | |
|---|---|---|---|---|---|---|
| SysRestart | 10 | 0 | - | 0 | !+ | |
| SysPinsRestart | 11 | 0 | - | 0 | + | |
| LED_BUILTIN_ON | 20 | 0 | - | 0 | + | |
| LED_BUILTIN_OFF | 21 | 0 | - | 0 | + | |
| Read_ADC_Temperature | 30 | |||||
| AnalogRead | 31 | 1 | - | 2 | + | |
| INTERRUPT_ON | 40 | 0 | - | 0 | + | |
| INTERRUPT_OFF | 41 | 0 | - | 0 | - | |
| PinModeOutput | 50 | 1 | - | 0 | + | |
| PinModeInput | 51 | 1 | - | 0 | + | |
| PinModeInputPullup | 52 | 1 | - | 0 | + | |
| PinTimerSetFreq | 55 | 2 | - | 0 | + | |
| DigitalWriteHigh | 60 | 1 | - | 0 | + | |
| DigitalWriteLow | 61 | 1 | - | 0 | + | |
| AnalogWrite | 70 | 2 | - | 0 | + | |
| AnalogWrite16Bit | 71 | 3 | - | 0 | + | |
| AutoSleepAdcOn | 80 | 0 | - | 0 | + | |
| AutoSleepAdcOff | 81 | 0 | - | 0 | + | |
| ButtonInterruptOff | 90 | 1 | - | 0 | + | |
| ButtonRegRising | 91 | 1 | - | 0 | + | |
| ButtonRegChange | 92 | 1 | - | 0 | + | |
| ButtonRegFalling | 93 | 1 | - | 0 | + | |
| ClearButtons | 94 | 0 | - | 0 | + | |
| ReadButtons | 95 | 0 | - | 0 or array (num+count) | + | |
| GetCountButtons | 96 | 1 | - | 0 | + | |
| GetSizeMem | 100 | 0 | - | 2 | + | |
| FlushMem | 101 | 0 | - | 0 | + | |
| SetMem | 102 | 2 | - | 0 | + | |
| GetMem | 103 | 1 | - | 1 | + | |
| SetMem16BitAdress | 104 | 3 | - | 0 | + | |
| GetMem16BitAdress | 105 | 2 | - | 1 | + | |
| I2CSetSpeed | 110 | 4 | - | 0 | + | |
| DefCPU_PINSLEEP_Ignore | 120 | 0 | - | 0 | + | |
| DefCPU_PINSLEEP_Idle | 121 | 0 | - | 0 | + | |
| DefCPU_PINSLEEP_ADC | 122 | 0 | - | 0 | + | |
| DefCPU_PINSLEEP_PowerDown | 122 | 0 | - | 0 | + | |
| CPU_SLEEP_ON | 125 | 0 | - | 0 | + | |
| CPU_SLEEP_OFF | 126 | 0 | - | 0 | + | |
| EGetSizeMem | 130 | 0 | - | 2 | + | |
| EFlushMem | 131 | 0 | - | 0 | + | |
| ESetMem | 132 | 3 | - | 0 | + | |
| EGetMem | 133 | 2 | - | 1 | + | |
| GetMillis | 140 | 4 | - | 0 | + | |
| DallasWireIni | 150 | 2 | - | 1 | + | |
| DallasWireAllLength | 151 | 0 | - | 1 | + | |
| DallasWireInitLength | 152 | 1 | - | 0 | + | |
| DallasInit | 153 | 2 | - | 1 | + | |
| DallasAllInitLength | 155 | 0 | - | 1 | + | |
| DallasWireSearch | 156 | 1 | - | 1 | + | |
| DallasGet | 157 | 2 | - | 4 | + | |
| WatchDogInit | 158 | 4 | - | 0 | + | |
| WatchDogDis | 159 | 0 | - | 0 | + | |
| WatchDogUpdate | 160 | 0 | - | 0 | + | |
| WatchDogTrig | 161 | 0 | - | 0 | + | |
| WatchDogIsOldTrig | 162 | 0 | - | 1 | + |
Copyright 2022-2023 #UlinProject Denis Kotlyarov (Денис Котляров)
Licensed under the Apache License, Version 2.0


