А написать программу на VBScript (или чего там в экселе), чтобы она из экселя сразу в двоичный файл с учетом формата хранения чисел писала, а потом как-то ещё этотфайл пытаться сунуть в МК - быстрее?
Я вот, как человек ленивый, для одного раза, экспортировал бы из экселя данные в csv какой-нить, потом накатал быстроскетч чтобы читал из Serial, парсил (по запятым или семиколонам бил) и писал поячеечно или по несколько ячеек в этот внешний EEPROM. А послал бы через Terminal 1.9
То есть файл будет формата число1, число2,…числоN
Если посылать число по отдельности в порт ардуино, приняла - записала.
Если пакетом через разделитель, , приняла - записала.
А Send File в Terminal 1.9 как отправит файл?
(Я бы сначала проверила, прежде чем задать этот вопрос, но нет ардуины)
Думаю, что 1:1, как write() - что считал, то послал. Сам не пользовался, если честно.
Так что в Arduino всё побайтово будет приходить. Нужно только там какой-нить parseInt прикрутить. Конечно, вопрос скорости и переполнения буфера UART встаёт. Ведь внешнему EEPROM нужно 5 мс на осуществление записи давать…
Да, задачка, несмотря на простоту, не так и проста.
По большому счёту ведь и без Wire обойтись можно, обойдя проблему с буфером. Только каждые 128 байт давать 5мс дилэя.
Но это решает только половину задачи.
Надо @lilik в пост призвать. Он у нас спец по впихиванию в массивы адских размеров данных с пэка.
Ну, строго говоря, их и так два: один на 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 мс.
Не понял.
Во-первых, ответа на вопрос “почему не хватит?” так и не прозвучало.
А во-вторых, какое дело до какого-то Terminal, если все происходит внутри одной Ардуинки?