STM32F4DISCOVERY + Espruino

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем petypen, 24 апр 2016.

Метки:
  1. petypen

    petypen Нерд

    Коллеги, добрый день.
    Есть ли среди вас владельцы STM32F4 с Espruino? Помогите пожалуйста разобраться:
    1. Для работы с IDE требуется подключать два USB кабеля. Один на стороне ST-Linc ради питания. Другой на стороне контроллера для связи с IDE. Можно ли подавать питание через разъём на стороне контроллера?
    2016-04-24 21-57-45.JPG
    2. Я загрузил в STM32F4 программу, которая появляется при открытии IDE
    Код (C++):
    var  on = false;
    setInterval(function() {
      on = !on;
      LED1.write(on);
    }, 500);
    и у меня начал мигать светодиод.
    Но при нажатии на кнопку RESET на контроллере происходит:
    -- отсоединение платы от IDE (внизу появляется надпись Disconected)
    -- светодиод на плате тухнет и больше не мигает. Похоже, что по RESET не перезапускает загруженную программу или стирает её.
    Это корректное поведение кнопки RESET?
     
  2. nailxx

    nailxx Официальный Нерд Администратор

    Да. Это корректное поведение.

    В настройках IDE, на вкладке Communication есть галочка «Save on Send». Поставьте её, чтобы программа сохранялась.
     
    petypen нравится это.
  3. ИгорьК

    ИгорьК Гуру

    Можно. Соедините PA9 c +5v и работайте с Диско с микроUSB.
    20160425_123529.jpg
     
    Последнее редактирование: 25 апр 2016
    petypen и nailxx нравится это.
  4. petypen

    petypen Нерд

    Коллеги, спасибо большое.
     
  5. petypen

    petypen Нерд

    Коллеги, обнаружил что с этой опцией программа перестаёт грузиться в discovery Вот такое сообщение:
    2016-04-30_21-48-35.png
    Нашёл на форуме Espruino свежее сообщение о этой ошибке http://forum.espruino.com/conversations/285341/ если я правильно понял, то это будет исправлено в ближайшей версии.
     
  6. nailxx

    nailxx Официальный Нерд Администратор

    Для Discovery опция Save on Send заработает, когда выйдет прошивка 1v86. Для Iskra JS опция работает уже сейчас.
     
  7. petypen

    petypen Нерд

    А сегодня для Discovery есть способ оставить программу в контроллере после передёргивания питания? Похоже что нет.
     
  8. nailxx

    nailxx Официальный Нерд Администратор

    Есть. После загрузки в консоли исполните:

    save();

    Однако, имейте в виду, что это сохранит состояние интерпретатора по итогу исполнения загруженной программы: после ресета у вас продолжат работать функции, висящие на setInterval, но код инициализации исполнен заново не будет.

    Чтобы что-то было исполнено при загрузке, поместите это что-то в E.on('init', …):

    Код (Javascript):
    E.on('init', function() {
      A0.set();
      A1.reset();
    });
     
    petypen нравится это.
  9. petypen

    petypen Нерд

    Спасибо.
     
  10. ИгорьК

    ИгорьК Гуру

    Может я пропустил. Есть ли подробное объяснение логики сохранения законченных программ?
    Сделал я некоторую программу, она работает так как нужно.
    Каковы дальнейшие действия?
     
  11. nailxx

    nailxx Официальный Нерд Администратор

    Вариант 1: выполнить `save()`. Это сохранит состояние интерпретатора в flash. Т.е. сделает дамп из оперативной памяти в флеш. Этот вариант — аналог гибернации ПК.

    Вариант 2: выполнить `E.setBootCode('var myJava = 'script'; code()…'). Это запишет в флеш текстовую программу, переданную в строке. Эта программа будет выполнена всякий раз, когда делается обычный сброс платы. Этот вариант — аналог прошивки Arduino.

    Первый вариант хорош, если вы из костылей и палок составили нужное поведение через консоль. Второй вариант хорош, если вам просто нужно, чтобы код из «правой» панели выполнялся при старте платы.
     
    petypen и ИгорьК нравится это.
  12. ИгорьК

    ИгорьК Гуру

    Чет до конца не въехал в этот вариант...
    Мой вариант.
    Скрипт закончен.
    Обрамлаяю скрипт так:
    Код (Javascript):
    E.on('init', function() {
    // Ниже мой скрипт полностью
    ...
    ...
    });
    Загружаю кнопкой в IDE Iskra JS
    После чего в терминале набираю команду save()
    Работает...
     
    Последнее редактирование: 22 май 2016
  13. petypen

    petypen Нерд

    Виктор, проверил на версии 1.86 со своей STM32F4Discovery. Всё отлично работает.