Выбор платы микроконтроллера для прямой работы с USB.

Тема в разделе "Микроконтроллеры AVR", создана пользователем Vasily Berezin, 16 май 2016.

  1. На ARDUINO UNO - мне не хватает скорости передачи данных через COM-USB интерфейс.
    Посоветуйте пожалуйста такой контроллер с платой, и библиотеку к нему, чтобы прошивался напрямую через USB как ARDUINO UNO, но имел внутри себя не менее 8К "быстрой" памяти, и поддерживал обмен данными через USB не по интерфейсу COM-USB, а непосредственно по USB-протоколу (через endpoint-ы, в bulk mode). Мне нужна скорость приема минимум 100Кб в секунду. Если придется отказаться от ARDUINO IDE - посоветуйте чем ее заменить (главное, чтоб легко установилась заработала).

    Я уже исправил обработчик системной библиотеки Serial: убрал кольцевой буфер, сделал его public, и приспособил под свой формат входных данных. Это позволило сохранять больше символов, и избавило от необходимости их копировать по получению в свои массивы, но скорости все равно не хватает: это лазерный проектор, они рисует до 25 кадров в секунду, по 2000 точек на кадр, и по 2-3 байта на точку).
     
  2. AlexU

    AlexU Гуру

    У Arduino UNO максимальная скорость USART -- 2 Мб/сек.
     
  3. Да? А как это задействовать? Максимально что мне удалось подключиться через Serial, это на 115200. Это примерно 14 Кбайт в секунду.
     
  4. Мне нужно подключиться не к соседней плате или модулю по SPI, а к основному компьютеру, через USB-разъем.
     
  5. AlexU

    AlexU Гуру

    В данный момент не могу привести конкретный код, но что-то вроде:
    Код (C++):
    serial.begin(2000000);
    Ну и на компьютере программа должна конфигурировать соответствующий COM-порт для работы со скоростью 2Мб/сек.
     
  6. Спасибо огромное :)) Когда-то, в пору освоения ардуины, я попытался поставить скорость побольше, но что-то не срослось там - и я подумал, что больше 115200 оно не работает. Сейчас, после Ваших слов - поставил baudrate 500000 в обеих программах, и чудо - все летает. :))) Почему 500 а не 2М сразу? Да фиг ее знает - допотопные жывотные инстинкты :)))))
     
  7. Теперь тупо возьму "МЕГУ" (чтоб на 8К), и никаких новых библиотек подключать, и новых сред осваивать - не буду!!!! (ура)
     
  8. ostrov

    ostrov Гуру

    Мега не быстрее Уны.
     
  9. Скорости мне теперь хватило :)) Зеркала не успевают поворачиваться :))) Мега нужна не чтоб скорость поднять, а чтоб в кадр больше векторов влезло. Сейчас у меня 450 векторов только влезает в UNO. Но сериал переписать под свой формат оказалось очень полезно. Лучше повесить это на системное прерывание, чем распихивать программно по Serial.available(). В HardwareSerial_private.h переписал процедуру (обработчик прерывания) _rx_complete_irq(), а в HardwareSerial.h увеличил SERIAL_RX_BUFFER_SIZE, уменьшил TX буффер, сделал пабликом массив _rx_buffer, ну и добавил немного своих переменных в паблик, для поддержки своей структуры данных. А в самой проге - просто знаю что уменя все данные уже на местах, и беру их оттуда, (почти) не задумываясь. :))))