Чтение/запись 24LC512

А написать программу на VBScript (или чего там в экселе), чтобы она из экселя сразу в двоичный файл с учетом формата хранения чисел писала, а потом как-то ещё этотфайл пытаться сунуть в МК - быстрее?

Я вот, как человек ленивый, для одного раза, экспортировал бы из экселя данные в csv какой-нить, потом накатал быстроскетч чтобы читал из Serial, парсил (по запятым или семиколонам бил) и писал поячеечно или по несколько ячеек в этот внешний EEPROM. А послал бы через Terminal 1.9

А потом… на разочек можно буфер Wire и увеличить даже до размера имеющейся в МК памяти.

То есть файл будет формата число1, число2,…числоN
Если посылать число по отдельности в порт ардуино, приняла - записала.
Если пакетом через разделитель, , приняла - записала.

А Send File в Terminal 1.9 как отправит файл?
(Я бы сначала проверила, прежде чем задать этот вопрос, но нет ардуины)

Думаю, что 1:1, как write() - что считал, то послал. Сам не пользовался, если честно.

Так что в Arduino всё побайтово будет приходить. Нужно только там какой-нить parseInt прикрутить. Конечно, вопрос скорости и переполнения буфера UART встаёт. Ведь внешнему EEPROM нужно 5 мс на осуществление записи давать…

Да, задачка, несмотря на простоту, не так и проста.

Можно из VBA шлёпать в COM-порт. Если VBA знать ))
https://www.codeproject.com/Questions/5318619/Excel-VBA-send-string-to-com-port

Вот это - большая проблема Arduino IDE - невозможность настраивать размеры буферов и прочие константы под конкретный проект.

Это - один раз на строку, т.е. на 128 байт.

А копи-пастой из Экселя в IDE? И ни о чём не думай.

EEMEM uint32_t ee_data[] = {
//паста из Ехселя
};

Ну, если там 65к, то нужна мега 2560.

По большому счёту ведь и без Wire обойтись можно, обойдя проблему с буфером. Только каждые 128 байт давать 5мс дилэя.
Но это решает только половину задачи.

Надо @lilik в пост призвать. Он у нас спец по впихиванию в массивы адских размеров данных с пэка.

А…( Тогда да. Можно через Xmodem - там с подтверждением.)

Кстати, я же тут заказывал такую хрень… Надо бы попробовать, как с пэка прямо в I2C-EEPROM гадить. Из экселя через VBA ))

Вторая половина задачи решается

Раньше эта проблема решалась выбором 1200 bps.)
Сейчас же нужно 2 буфера - пока первый записывается, второй принимается. И наоборот. 115200 вполне.

А как использовать будете? Выборочно, по ячейкам, или весь файл целиком?

Ну, строго говоря, их и так два: один на UART, а другой - на I2C (да и у каждого из них есть по два буфера).
UART на скорости 115200 передает 11520 байт в секунду (10 бит на байт). На 128 байт ему нужно 11.6 мс.
I2C для передачи 128 байт нужно сформировать 5 пакетов, т.е. всего 128+3*5=143 байта.
При скорости передачи 400000 передает 44444 байт в секунду (9 бит на байт). 138 байт будет передано за 3.2 мс. Плюс подождать 5 мс, - 8.2 мс, что вполне укладывается в 11.6 мс.

Два 128-и байтных буфера UART на приём! Иначе поезд уйдет.
Но мне больше нравится Хмодем - “торопиться не надо”.

слово такое помню, частности - отнюдь )))

Плохо только что его поддержка есть не у многих эмуляторов: ucon, hyperterminal, ZOC…

А зачем?
Почему одного на 64 байта не хватит?

Да, на 115200 хватит, и даже проверил. Я считал без Serial буфера.)

Спасибо. Буду копировать в скетч, отправлять, копировать…)))

С нормальным эмулятором терминала 64 байтного буфера на 115200 не хватит. С Terminal 1.9 хватит даже при 2000000 bps.)

Не понял.
Во-первых, ответа на вопрос “почему не хватит?” так и не прозвучало.
А во-вторых, какое дело до какого-то Terminal, если все происходит внутри одной Ардуинки?