Сохранение программы "залитой" из arduino ide после выключения питания

Тема в разделе "Arduino & Shields", создана пользователем ldim, 5 дек 2012.

  1. ldim

    ldim Нуб

    Добрый день!

    Столкнулся с такой проблемой: откомпилировал скетч залил его на mega 2560 r3 - работает.
    Отключаю плату от usb(соответственно и от питания) затем заново подключаю - плата чистая. Так и должно быть(там же вроде флэш)? Или я чето не то делаю? Как сделать чтоб прошивка оставалась?

    пысы Прошу не пинать)). Это моя первая arduina.
     
  2. nailxx

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

    Крайне странно. Она обязана оставаться. Это, как вы сказали, flash.

    А как вы определяете: чистая / не чистая. Можете вставить в setup какое-нибудь необычное мигание светодиодом, чтобы подтвердить теорию?
     
  3. ldim

    ldim Нуб

    Я сужу по светодиоду tx, который перестает моргать. В коде присутствует периодическая передача чз serial.
     
  4. nailxx

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

    Так может в программе есть баг, который приводит к segfault и плата просто виснет?
     
  5. ldim

    ldim Нуб

    Программа довольна проста и к тому же во время выполнения я неоднократно нажимал на сброс и она без проблем начинала с начала
     
  6. nailxx

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

    Чудеса. Были подозрения, что какой-то fuse на ATmega может такое провоцировать, но такого нет. Можете всё же элементарный тест с миганием в setup провести?
     
  7. Unixon

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

    Есть похожая проблема с Uno. Программа не стартует, если в ней не инициализировать UART через Serial.begin(). Сброс иногда помогает, но точной зависимости не установлено. Возможно, проблема в библиотеке Wiring начиная с какой-то версии.
     
  8. ldim

    ldim Нуб

    На самом деле все сохраняется. Просто светодиод tx начинает мигать только после запуска serial monitor.
    Тему можно закрывать)
     
  9. Volotner

    Volotner Нуб

    Добрый день.
    Подскажите новичку -нубу. Заливаю скетч все работает отключаюсь от USB все работает от БП. Отключаю БП, включаю снова программа не работает.
    плата - arduino pro micro (китайская поделка на atmega32u4 - определяется win7 как leonardo).
    Скетч:
    Код (C++):
    #include <AccelStepper.h>   //подключение библиотеки ШД
    #include <IRremote.h>   //подключение библиотеки ИК


    int RECV_PIN = 9; // назначение пина 9 инф входом от ИК приемника
    IRrecv irrecv(RECV_PIN);
    decode_results results;
    int LED = 8; // Назначение пина 8 вых на вкл/откл света
    int en = 6; //Назначение пина 6 для сигнала "enable"
    AccelStepper stepper  (1, 10, 2); // настройки ШД :2-х обмоточный движок пин 10-степ пин 2-дир)
    int svet = 0; //ввод переменной состояния сигнала вкл/откл света

    void setup()

    {
      irrecv.enableIRIn();
      pinMode(LED, OUTPUT); // вход
      stepper.setMaxSpeed(1500.0);// задание скорости 2000 импульсов в секунду
      stepper.setAcceleration(400.0); // задание ускорения 400
      pinMode(en, OUTPUT);//
      digitalWrite(en, HIGH);// отключение ШД в простое
      digitalWrite(LED, HIGH  );// отключение света в начальный период
    }

    void loop() {

      if (irrecv.decode(&results))
      {
        if (results.value == 0x25802501 && svet == 0) //чтение кнопки "свет" и сравнение
          // переменной свет: если есть сигнал от ИК пульта "вкл/откл свет" и переменная свет = 0
        {
          delay(50); // защита от дребезга контактов
          svet++;  //присвоение переменной свет значения 1
          digitalWrite(LED, !digitalRead(LED)); // смена значения у выхода вкл/отлк свет
          // на противоположное
        }
        if (results.value == 0x25802501 && svet == 1) ////чтение кнопки "свет" и сравнение
          // переменной свет: если есть сигнал от ИК пульта "вкл/откл свет" и переменная свет = 0
        {
          svet = 0; // присвоение переменной "свет" значения 0
        }
        if (results.value == 0x6F5974BD)// чтение кнопки вверх
        {
          digitalWrite(en, LOW);// включение ШД
          delay (50); // выдержка времени
          stepper.runToNewPosition(0); // команда "поднять"
        }
        if (results.value == 0x57E346E1)//чтение кнопки вниз
        {
          digitalWrite(en, LOW);// включение ШД
          delay (50); // выдержка времени
         stepper.runToNewPosition(-1500);// команда "опустить" ( за 750 шагов выходной вал мотор-редуктора совершает 1 оборот)
        }
        irrecv.resume(); //
        digitalWrite(en, HIGH);// отключение ШД
      }
    }
    Пробовал аналогично пример библиотеки accelstepper так там скетч сохраняется и работает после откл/вкл однако слетают настройки скорости и ускорения
    Код (C++):
    #include <AccelStepper.h>

    // Define a stepper and the pins it will use
    AccelStepper stepper  (1, 10, 2); // Defaults to 4 pins on 2, 3, 4, 5

    void setup()
    {
        stepper.setMaxSpeed(200.0);
        stepper.setAcceleration(100.0);
    }

    void loop()
    {  
        stepper.runToNewPosition(0);
        stepper.runToNewPosition(500);
        stepper.runToNewPosition(100);
        stepper.runToNewPosition(120);
    }
    Я в этом деле вообще чайник, подскажите что не так или куда копать?