SoftwareSerial имя

Тема в разделе "Arduino & Shields", создана пользователем Redn, 21 фев 2015.

  1. Redn

    Redn Гик

    подскажите как инициолизирвать имя для SoftwareSerial из переменной ?
    написал так пишит ошибку SoftwareSerial name[a] (10, 11); // RX, TX
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Так делать нельзя. Да и зачем это нужно? Какой результат хотите получить?
     
  3. Redn

    Redn Гик

    тогда другой вопрос можно ли заставить дуню перезаписать свой код ?
     
  4. geher

    geher Гуру

    Вообще говоря, нет. Только читать.
     
  5. Redn

    Redn Гик

    эмм сейчас подключил интернет шилд и он быстро греется это нормально ?
     
  6. Megakoteyka

    Megakoteyka Оракул Модератор

    ЗАЧЕМ?
     
  7. Redn

    Redn Гик

    хочу запилить нейронную сеть :\ на arduino
     
  8. altex

    altex Гик

    Всегда думал, что можно. Таким образом и заливаются прошивки с помощью загрузчика.
     
  9. geher

    geher Гуру

    Технически, конечно, можно. Например, тут описывается процесс записи во флэш.
    Но следует понимать, что:
    1. Если мы заливаем весь код, то все относительно просто. Льем подряд, и все.
    Но если мы модифицируем код, то нужно вычислить, с какого адреса это делать, в каком объеме, принять меры к "раздвиганию" кода, если новый больше, чем место, куда его надо втиснуть, или забиванию освободившегося пространства, если новый меньше, или резервированию места под максимальный размер фрагмента. Если при этом программа написана на C/C++, то задача усложняется, поскольку за счет оптимизации нет однозначного соответствия между конструкциями кода и размером его в памяти. Так что придется писать на ассемблере.
    2. Писать во флэш надо уже скомпилированный бинарный код, об исходниках на C/C++ на уровне исполнения кода придется забыть. Компилятор в память микроконтроллера ардуины не влезет.
    3. Библиотеки ардуины не предоставляют возможности изменения флэша. Придется писать самому.
    Именно третий пункт я и имел ввиду, когда писал, что "вообще говоря, нет."

    PS. 4. Зачем? Проще в программе сделать ветвление, выполняющее в разных условиях разные участки кода. Хранить-то все варианты все равно где-то во флэше придется. Да и накладные расходы на модифицирующий код (пямять), на сам процесс загрузки (время). Да еще износ самого флэша от постоянного переписывания, если оно происходит слишком часто.
    Теоретически можно оправдать такие фокусы, если делать для программы подгружаемые с внешнего носителя модули в условиях нехватки памяти. Но следует понимать, что подкачка таких модулей будет сильно тормозить работу программы. Так что лучше просто взять МК с большей памятью.
    PPS, 5.Из текста по ссылке: "В МК с поддержкой бутлоадера на команду SPM накладываются ограничения. Её можно выполнить только из BLS (Bootloader section) — области памяти в самом конце флеша, где живут бутлоадеры. Размер этой области устанавливается фьюзами BOOTSZ. "
     
    Последнее редактирование: 23 фев 2015
    altex нравится это.
  10. altex

    altex Гик

    Я с вами согласен, что и задача и решение нестандартные. Но если есть задача сохранить много данных, то я бы воспользовался внешним модулем с поддержкой SD-карт.
     
  11. Unixon

    Unixon Оракул Модератор

    Ну и зачем при этом писать во флэш? Для хранения коэффициентов хватит SRAM/EEPROM.

    В принципе, само устройство микроконтроллера вполне себе подталкивает к такой задаче, хоть это, наверное, и далеко не самый эффективный путь. К тому же, эта сеть будет иметь смысл только в том случае, если она будет подключена к реальным сенсорам и актуаторам, т.е. будет иметь физическое воплощение, само собой обосновывающее невозможность ее численного моделирования из-за неизвестных НУ/ГУ. Ардуина здесь избыточна донельзя. Один небольшой МК может выполнять функции одного или буквально нескольких модельных нейронов. Для имитации нейронной сети более-менее интересно в качестве PoC взять очень много очень дешевых и миниатюрных МК и нафаршировать ими какого-нибудь робота от и до. Повторюсь еще раз, это будет иметь смысл только если полностью использовать преимущества МК в виде огромного количества распределенного GPIO для взаимодействия с окружающим миром и принципиальную параллельность работы всех узлов сети. Аналогичного эффекта можно достичь с помощью FPGA. Использовать же один МК для обсчета сети из более, чем нескольких модельных нейронов, это довольно неперспективная задача, которую можно использовать разве что для отладки каких-то базовых примитивов.
     
    altex нравится это.
  12. Unixon

    Unixon Оракул Модератор

    Ну вот, например, из самых дешевых:
    ST7FOXF1M6 - 4р от 1000шт (FLASH 4K, SRAM 384b, без EEPROM - подойдет для сенсоров)
    STM8S003F3P6 - 25р от 400шт (FLASH 8K, SRAM 1K, EEPROM 128b, подойдет для рядового узла)
    ATtiny13A-SSU - 30р от 2000шт (FLASH 1K, SRAM/EEPROM 64b, аналогично)