diff --git a/README.md b/README.md index 2c788a9191..dee616bc0c 100644 --- a/README.md +++ b/README.md @@ -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.