Проблемка с SD картой

Тема в разделе "Arduino & Shields", создана пользователем Рязанский_Ардуинщик, 23 сен 2016.

Метки:
  1. Всем доброго дня!
    У меня появилась проблемка - не знаю как использовать файлы из флешки в программе микроконтроллера например:
    if (что-то происходит)
    {прочитай файлы с флешки и ВЫПОЛНИ ИХ}
    Заранее благодарю.
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    никак. Arduino не умеет перепрошивать саму себя. Нужен второй МК.
    Но можно с флешки прочитать и использовать какие-либо данные, не меняя саму программу.
     
  3. AlexU

    AlexU Гуру

    А bootloader'ы, которые предназначены для самопрошивания, это всё выдумки фантастов...
    Что за микроконтроллер? Что за данные содержаться в файлах на флешке?
     
    Рязанский_Ардуинщик нравится это.
  4. Микроконтроллер 328р. Во флешке содержится файл txt в котором написана команда (писать долго, её смысл в зажигании 3 цветного светодиода голубым цветом).
     
  5. DKo

    DKo Нерд

    Может быть есть смысл создать нечто вроде "виртуальной машины" (в гугле "AVR и виртуальная машина") и хранить на карточке необходимые коды команд?
     
    Рязанский_Ардуинщик нравится это.
  6. Но как эти команды использовать?
     
  7. AlexU

    AlexU Гуру

    Рязанского_Ардуинщика "пытали четвёртые сутки", испробовали все известные методы, но он оказался стойким партизанином, ни кто так и не узнал -- что же это за команды и как они выглядят...
     
  8. digitalWrite (p, HIGH);
    delay (768);
    tft.print ("your system had crashed!");
     
  9. AlexU

    AlexU Гуру

    Обработку файлов с таким содержимым на ATmage328 реализовать вряд ли получится.
    Может пойдём другой дорогой -- конечная цель какая, что хотите добиться? Может поставленная цель решается другими способами?
     
    Рязанский_Ардуинщик нравится это.
  10. Да я хочу создать свою "oc" (если так можно назвать), которая будет занимать очень много памяти (постоянной, оперативной хватает). Может есть какой-нибудь компилятор, который уменьшит код?
    Если да, то какой?
     
  11. AlexU

    AlexU Гуру

    Каждый программист, достигший определённого уровня развития, пытается создать свою ОС -- моя первая ОС была предназначена для платформы IBM PC/AT, занимала 512 байт (размер загрузочного сектора гибкого диска -- FDD), умела выводить приветствие и выполнять команду 'reboot'.
    Если серъёзно, то первое с чем надо определиться (в контеrсте реализации на базе AVR) -- как ОС будет взаимодействовать с внешним миром, без этого от ОС не будет ни какого толка. Т.е. откуда и как будут поступать команды и куда и как будет выводиться результат. Потом надо будет определиться с набором команд и их синтаксисом (как команды будут выглядеть в текстовом виде). Потом можно будет подумать о командном процессоре (программе, которая будет выполнять команды), а затем о командных файлах.
    Или Вы уже всё это продумали?

    Хотя с другой стороны, микроконтроллеры AVR (ATmega 328) предназначены не много для других целей. Я бы для этой цели (реализации своей ОС) взял бы контроллер на базе ARM с поддержкой выполнения кода из внешней RAM...
     
    Рязанский_Ардуинщик нравится это.
  12. sys

    sys Злобный Буратино Модератор

    Последнее редактирование: 24 сен 2016
    Рязанский_Ардуинщик нравится это.
  13. DKo

    DKo Нерд

    Исходя из синтаксиса команд, можно сделать вывод о том, что Вы используете стороннюю библиотеку и созданный с ее помощью экземпляр tft. Так как экземпляр уже создан, то он занимает определенную область памяти. Таким образом "скроить" на используемой памяти не получится, но можно выиграть много постоянной памяти за счет помещения аргументов функции, например "your system had crashed", на карточку. При чтении строки с карточки, арудино получит, например, r/your system had crashed!/, где символ r - идентификатор того, какую функцию вызвать, а текст - аргумент, который нужно в эту функцию поместить.

    Вроде, на похожем принципе работают 3D принтеры с возможностью чтения G-code с карточки.

    Если нужно генерировать код по ходу выполнения программы, то тут однозначно нужен динамический язык программирования, как предложено сверху.
     
    Рязанский_Ардуинщик нравится это.
  14. Но строковые переменные "" занимают место в оперативной памяти.
    К сожалению у меня нет искры.
    При включении питания ардуино проверяет работоспособность sd карты и других частей. Затем пишет либо сломана или работает
    А дальше работает как простой калькулятор на кнопочной матрице, а несколько доп. кнопок работают как +_/=()*, и данные записываются на sd карту. Но если результат больше 32*** с чем то данные сбрасываются и ардуинка переходит на просую клавиатуру, которая записывает данные на sd карту, затем читает эти данные и выводит на экран tft или порта вывода
    .
     
  15. AlexU

    AlexU Гуру

    С каждым ответом количество уточняющих вопросов возрастает в геометрической прогрессии...
    Небольшой совет -- когда формируете вопрос представьте, что этот вопрос будете задавать 4-хлетнему ребёнку, который на каждое слово или сочетание слов в вопросе задаст встречный вопрос: "что это такое (что значит)?". Т.е. разжуйте всё так, что бы "питекантроп" всё понял. Только в этом случае есть шанс получить ответ. В остальных случаях ответ может быть и получите, и применив совет из ответа добъётесь нужного результата. Вот только этот результат скорее будет следствием мимолётной удачи (которая может улетучиться), а не следствием устранения причины ошибки. И в будущем совет перестанет работать и Вы опять придёте на форум с вопросом -- "вот раньше работало, а сейчас перестало".

    Возвращаясь к теме:
    Вы вроде как хотите создать "ОС" -- вот только что за задачи на неё будут возлагаться так и осталось не понятным. И поэтом дать полезные советы на текущий момент не представляется возможным.

    PS: Может всё-таки стоит выбрать другой, более подходящий, контроллер или придумать задачу, которая по требованиям к вычислительным ресурсам подходит к контроллеру ATmega328?
     
  16. Хорошо.