@ -102,7 +102,7 @@ IP адрес так же будет на экране.
#endif
```
* I2C EEPROM Для включения нужно включить I2C_EEPROM_AT24C16 и установить USE_WIRED_EEPROM и задать размер EEPROM в E2END, а остальные опции отключить. Пример:
* I2C EEPROM. Для включения нужно включить I2C_EEPROM_AT24C16 и установить USE_WIRED_EEPROM в 1 и задать размер EEPROM в E2END, а остальные опции отключить. Пример:
```C
#define EEPROM_SETTINGS // Persistent storage with M500 and M501
@ -121,9 +121,9 @@ IP адрес так же будет на экране.
При первом включении все содержимое AT24C16 будет переписано. Память не быстрая, поэтому процесс занимает до 10 секунд. В дальнейшем в память пишутся только измененные значения, поэтому работает быстрее.
* SPI_EEPROM Хранение в памяти подключенной по SPI. Этот вариант пока не работает.
* FLASH_EEPROM_EMULATION Это хранение EEPROM в flash памяти STM32. Этот вариант не работает.
* SRAM_EEPROM_EMULATION Этот вариант не работает.
* SPI_EEPROM. Хранение в памяти подключенной по SPI. Этот вариант пока не работает.
* FLASH_EEPROM_EMULATION. Это хранение EEPROM в flash памяти STM32. Этот вариант не работает.
* SRAM_EEPROM_EMULATION. Этот вариант не работает.
### Работа с Octoprint
@ -136,10 +136,13 @@ IP адрес так же будет на экране.
#define RX_BUFFER_SIZE 2048 //Размер буфера для приема
```
Процесс получения данных и UART организован следующим образом:
Процесс получения данных из UART организован следующим образом:
* используется аппаратный UART STM32
* включено прерывание по приему каждого байта, используется библиотека libmaple, файл .platformio/packages/framework-arduinoststm32-maple/STM32F1/system/libmaple/usart_private.h:
* включено прерывание по приему каждого байта, данные складываются в буфер внутри драйвера
* Marlin периодически проверяет, есть ли у драйвера в буфере данные, забирает их оттуда и складывает в свой буфер, который задан RX_BUFFER_SIZE.
Есть предположение, что проблемы печати могут быть связаны с тем, что переполняется буфер внутри драйвера. В качестве драйвера использована библиотека libmaple. Обработчик прерывания в файле .platformio/packages/framework-arduinoststm32-maple/STM32F1/system/libmaple/usart_private.h:
```C
__weak void __irq_usart1(void) {
@ -196,5 +199,3 @@ typedef struct usart_dev {
```
Для успешной работы Octoprint возможно имеет смысл увеличить эти значения. Например до 1024. Это предположение не тестировалось на практике. Возможно, одновременно с увеличением размера буферов в драйвере поможет и увеличение скорости UART до 250000.
* Marlin периодически проверяет, есть ли у драйвера в буфере данные, забирает их оттуда и складывает в свой буфер, который задан RX_BUFFER_SIZE.