На ARDUINO UNO - мне не хватает скорости передачи данных через COM-USB интерфейс. Посоветуйте пожалуйста такой контроллер с платой, и библиотеку к нему, чтобы прошивался напрямую через USB как ARDUINO UNO, но имел внутри себя не менее 8К "быстрой" памяти, и поддерживал обмен данными через USB не по интерфейсу COM-USB, а непосредственно по USB-протоколу (через endpoint-ы, в bulk mode). Мне нужна скорость приема минимум 100Кб в секунду. Если придется отказаться от ARDUINO IDE - посоветуйте чем ее заменить (главное, чтоб легко установилась заработала). Я уже исправил обработчик системной библиотеки Serial: убрал кольцевой буфер, сделал его public, и приспособил под свой формат входных данных. Это позволило сохранять больше символов, и избавило от необходимости их копировать по получению в свои массивы, но скорости все равно не хватает: это лазерный проектор, они рисует до 25 кадров в секунду, по 2000 точек на кадр, и по 2-3 байта на точку).
Да? А как это задействовать? Максимально что мне удалось подключиться через Serial, это на 115200. Это примерно 14 Кбайт в секунду.
Мне нужно подключиться не к соседней плате или модулю по SPI, а к основному компьютеру, через USB-разъем.
В данный момент не могу привести конкретный код, но что-то вроде: Код (C++): serial.begin(2000000); Ну и на компьютере программа должна конфигурировать соответствующий COM-порт для работы со скоростью 2Мб/сек.
Спасибо огромное ) Когда-то, в пору освоения ардуины, я попытался поставить скорость побольше, но что-то не срослось там - и я подумал, что больше 115200 оно не работает. Сейчас, после Ваших слов - поставил baudrate 500000 в обеих программах, и чудо - все летает. )) Почему 500 а не 2М сразу? Да фиг ее знает - допотопные жывотные инстинкты ))))
Теперь тупо возьму "МЕГУ" (чтоб на 8К), и никаких новых библиотек подключать, и новых сред осваивать - не буду!!!! (ура)
Скорости мне теперь хватило ) Зеркала не успевают поворачиваться )) Мега нужна не чтоб скорость поднять, а чтоб в кадр больше векторов влезло. Сейчас у меня 450 векторов только влезает в UNO. Но сериал переписать под свой формат оказалось очень полезно. Лучше повесить это на системное прерывание, чем распихивать программно по Serial.available(). В HardwareSerial_private.h переписал процедуру (обработчик прерывания) _rx_complete_irq(), а в HardwareSerial.h увеличил SERIAL_RX_BUFFER_SIZE, уменьшил TX буффер, сделал пабликом массив _rx_buffer, ну и добавил немного своих переменных в паблик, для поддержки своей структуры данных. А в самой проге - просто знаю что уменя все данные уже на местах, и беру их оттуда, (почти) не задумываясь. )))