Вдогонку к заметке про EEPROM

Nov 03, 2024 21:10


Я недавно писал, что нашел хороший исходник для работы с EEPROM микросхемами AT24C16.

Оказалось, что он выгодно отличается от «доступных аналогов» тем, что работает очень быстро. Как говорится, «самая быстрая запись в EEPROM на Диком Западе». 🙂

Это потому, что в этом коде есть интересная изюминка. Микросхемы эти обрабатывают запросы на запись/чтение довольно медленно. Микроконтроллер должен ждать окончания предыдущей операции прежде чем отправлять в микруху новый запрос. В 99% примеров кода, доступных в сети, народ тупо лепит задержку на пару миллисекунд. Но в этом коде нет никаких задержек, зато там есть это:

static void at24cxx_wait(int i2c_address) { int resault = 0; do { Wire.beginTransmission(i2c_address); resault = Wire.endTransmission(); } while (resault != 0); }
Это, оказывается, позволяет избежать излишнего ожидания и приступать к следующей операции в ту же самую долю микросекунды, когда микросхема EEPROM готова принять очередной запрос. В результате запись происходит очень быстро. Минимум на порядок быстрее, чем вариант с задержками.

2048 байт (полная емкость) пишутся за 231 мс.


Рис. 1
Оригинал записи находится здесь https://tesanoff.klah.ru.

MIDI баян

Previous post Next post
Up