Как очистить EEPROM на APM без терминала


Часто повторяется один и тот же вопрос: «в крайних версиях прошивки, например в 3.2 (>3.2.rc-12) нет терминала, как тогда сделать очистку EEPROM»? Отвечаю.

На данный момент в Mission Planner явно присутствует только кнопка «Reset to Default», которая сбрасывает настройки контроллера на «заводские», т.е. проставляет первоначальные значения и далее подразумевается калибровка. Но случается, что проблема сохраняется и после этого помогает очистка EEPROM. На 100% это не утверждаю, т.к. исходный код функции кнопки не смотрел. И вот тут возникают опять вопросы, чистится ли EEPROM этой кнопкой?…

 

 

Чтобы явно очистить данные, есть 3 способа:

1. Народный метод.

Запускаем среду Arduino, выбираем скетч, меню Файл — Примеры — EEPROM — eeprom_clear. Меняем конечное значение 512 в цикле очистки на 4096, согласно даташиту на ATmega2560.

Скетч в среде Arduino.

Скетч в среде Arduino.

2. Очистка старой прошивкой.

Загружаем в контроллер старую (3.0.1, 3.1-rc5, 3.1…) прошивку обычным способом. Делаем очистку стандартными командами setup erase, setup reset, описанными в статье по ссылке.

3. Штатный метод в MP. (Не работает!)

Имеется кнопка «WIPE eeprom», но она спрятана. Необходимо вызвать скрытое окно MP, нажав комбинацию клавиш «Ctrl+F» так, чтобы не вызвать поиск, например по Full Parameter List. Для этого сначала щелкнуть мышкой по пустой области окна.

Как я не пробовал нажимать эту кнопку, так и появляется ошибка отсутствия COM порта.

4. Сброс на заводские настройки через Mission Planner.

Первым делом нам надо включить режим отображения продвинутых настроек. Делается это включением галочки «Advanced View» во вкладке Config/Tuning.

ParamReset_MPAdvancedView[1]

Подключите контроллер к Mission Planner, затем откройте вкладку Config/Tuning — Full Parameter List и нажмите кнопку «Reset to Default». Настройки будут сброшены на заводские. После нажатия надо подождать секунд 10 и желательно перезагрузить контроллер.

ParamReset_MPResetToDefault[1]

PS: Прошу любителей ковыряться в коде глянуть, что делает кнопка «Reset to Default», чтобы раз и навсегда ответить на вопрос, чистит ли она EEPROM.


Если вы нашли ошибку на странице, то нажмите Shift + Enter или нажмите здесь, чтобы уведомить нас.

 
 

Комментариев: 31 - Как очистить EEPROM на APM без терминала

  1. Евгений:

    Будьте осторожны, у меня после чистки EEPROM народным методом, APM2.6 перестал подавать признаки того, что он контроллер. Кроме зеленого LED (Alive) ничего не горит. При подключении по USB определяется нормально, но в Mission Planer приконектиться нельзя! PPM-encoder шьется, контроллер нет. Юлиан подскажите как исправить. Думаю слетел загрузчик APM контроллера(

    Thumb up 0 Thumb down 0

    • КАК? В коде явно видно, что очищается только EEPROM, а не место под код и загрузчик.
      По признакам похоже, что действительно слетел загрузчик в ATmega2560. Залейте заново и еще для интереса попробуйте очистить EEPROM таким же способом.

      PS: Вопрос только к Юлиану и почему именно к нему? 🙂

      Thumb up 0 Thumb down 0

      • Евгений:

        К сожалению нет программатора( Куплю на днях и проделаю все вышесказанное Вами снова, самому стало интересно)

        PS: Александр простите), был не внимателен, думал этот сайт ведет Юлиан 😉

        Thumb up 0 Thumb down 0

        • Вот такие дела…

          Thumb up 0 Thumb down 0

        • gtsky:

          Столкнулся с тойже фигней, подскажите как решили??

          Thumb up 0 Thumb down 0

          • Давайте больше деталей. Как и что делали?

            Thumb up 0 Thumb down 0

            • gtsky:

              Установил arduinoIDE, подключил контроллер открыл ардуино ид далее инструменты — выбрал свой порт подключил — выбрал плату мега 2560- далее Файл — примеры EEPROM — EEProm clear и согласно 1. Народный методё из даннйо статьи, он прошился и остался гореть только один зеленый светодиодёё

              Thumb up 0 Thumb down 0

      • Евгений:

        Чтот не получается((( avrdude: warning: cannot set sck period. please check for usbasp firmware update все портит

        Лог фьюзы:
        ———————————-
        avrdude: warning: cannot set sck period. please check for usbasp firmware update
        .
        avrdude: AVR device initialized and ready to accept instructions
        avrdude: Device signature = 0x1e9801
        avrdude: reading input file «0xFD»
        avrdude: writing efuse (1 bytes):
        avrdude: 1 bytes of efuse written
        avrdude: verifying efuse memory against 0xFD:
        avrdude: load data efuse data from input file 0xFD:
        avrdude: input file 0xFD contains 1 bytes
        avrdude: reading on-chip efuse data:
        avrdude: verifying …
        avrdude: 1 bytes of efuse verified
        avrdude: reading input file «0xD8»
        avrdude: writing hfuse (1 bytes):
        avrdude: 1 bytes of hfuse written
        avrdude: verifying hfuse memory against 0xD8:
        avrdude: load data hfuse data from input file 0xD8:
        avrdude: input file 0xD8 contains 1 bytes
        avrdude: reading on-chip hfuse data:
        avrdude: verifying …
        avrdude: 1 bytes of hfuse verified
        avrdude: reading input file «0xFF»
        avrdude: writing lfuse (1 bytes):
        avrdude: 1 bytes of lfuse written
        avrdude: verifying lfuse memory against 0xFF:
        avrdude: load data lfuse data from input file 0xFF:
        avrdude: input file 0xFF contains 1 bytes
        avrdude: reading on-chip lfuse data:
        avrdude: verifying …
        avrdude: 1 bytes of lfuse verified
        avrdude: reading input file «0x0F»
        avrdude: writing lock (1 bytes):
        avrdude: 1 bytes of lock written
        avrdude: verifying lock memory against 0x0F:
        avrdude: load data lock data from input file 0x0F:
        avrdude: input file 0x0F contains 1 bytes
        avrdude: reading on-chip lock data:
        avrdude: verifying …
        avrdude: 1 bytes of lock verified

        avrdude: safemode: Fuses OK

        avrdude done. Thank you.
        ———————————-

        Лог:
        ———————————-
        avrdude: warning: cannot set sck period. please check for usbasp firmware update
        .
        avrdude: AVR device initialized and ready to accept instructions
        avrdude: Device signature = 0x1e9801
        avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed

        To disable this feature, specify the -D option.
        avrdude: erasing chip
        avrdude: warning: cannot set sck period. please check for usbasp firmware update
        .
        avrdude: reading input file «stk500boot_v2_mega2560.hex»
        avrdude: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
        avrdude: writing flash (262106 bytes):
        avrdude: 262106 bytes of flash written
        avrdude: verifying flash memory against stk500boot_v2_mega2560.hex:
        avrdude: load data flash data from input file stk500boot_v2_mega2560.hex:
        avrdude: input file stk500boot_v2_mega2560.hex auto detected as Intel Hex
        avrdude: input file stk500boot_v2_mega2560.hex contains 262106 bytes
        avrdude: reading on-chip flash data:
        avrdude: verifying …
        avrdude: verification error, first mismatch at byte 0x1e000
        0xff != 0x0d
        avrdude: verification error; content mismatch

        avrdude: safemode: Fuses OK

        avrdude done. Thank you.
        ———————————-

        Thumb up 0 Thumb down 0

        • Похоже все у вас нормально. Проверяйте — должно работать, хоть и были ошибки, сообщаемые программатором.

          Avrdude предлагает обновить прошивку в программаторе, в которой есть исправление.
          avrdude: warning: cannot set sck period. please check for usbasp firmware update
          Я сам это делать не пробовал, но скорее всего должно помочь.
          А по поводу того, что верификация проходит с ошибками, более подробно в комментариях статьи (это косяк дешевого USBasp.):

          Прошиваем контроллер APM. Загрузчик

          Thumb up 0 Thumb down 0

        • Евгений:

          Повторил еще раз очистку EEPROM, все прошло успешно! Пользоваться программатором больше не пришлось 😉 Видимо в первый раз я где-то затупил…

          P.S. Прошивка должна слетать?

          Thumb up 0 Thumb down 0

          • Когда слетать? Куда слетать?
            При очистке EEPROM не должна. При новом подключении платы, MP должен цепляться без каких-либо приколов.
            Ну а сейчас необходимо заново через MP залить прошивку и выполнить ряд настроек.
            Удачи!

            Thumb up 0 Thumb down 0

  2. hatuul:

    С первым вариантом давно играюсь,если руки не из ж… все номальнопоходит.
    Вроде третий вариант тоже работает только клава на енглише должна стоять.

    Thumb up 0 Thumb down 0

  3. Александр:

    Странно. У меня точно такая же история, как у Евгения. Выполняю следующие шаги:
    Подключаю плату. Заливаю прошивку. Выхожу из МП. Запускаю среду ардуино, выбираю плату Atmega 2560, открываю скетч очистки EEPROM, меняю значение цикла на 4096, заливаю скетч на плату и….плата перестает загружаться. передергивания USB не помогают. лампочка Alive горит, но плата не грузится и МП не коннектится. приходится заново заливать прошивку через МП. и плата оживает…

    Thumb up 0 Thumb down 0

    • А не могли бы посмотреть любой программой прошивальщиком, что видно во Flash и EEPROM до и после выполнения очистки?

      Thumb up 0 Thumb down 0

    • Cooler:

      Там с новыми версиями ардуино ИДЕ пошли какие то другие пляски. У меня например засветить светодиод прямо в setup() никак не вышло. Да и вывод 13 не работает. Я смог почистить ЕЕПРОМ таким кодом

      #include

      #define PIN 26 //код пина к которому подключен светодиод которым будем мигать 25 или 26 или 27 (разные цвета)
      void setup() {
      pinMode(PIN, OUTPUT);

      delay(2000);
      for (int i = 0 ; i < 4096 ; i++) {
      EEPROM.write(i, 0);
      }

      //задержка 10 секунд что бы уж точно было понятно что setup() вызывается (можно удалить, впринципе)
      delay(10000);
      }

      void loop() {
      //мигаем светодиодом в главном лупе, индикация того что setup() прошел
      digitalWrite(PIN, HIGH);
      delay(500);
      digitalWrite(PIN, LOW);
      delay(500);
      }

      Thumb up 0 Thumb down 0

  4. gtsky:

    походу умер контроллер то((( лучшеб нечитал

    Thumb up 0 Thumb down 0

    • Ничего страшного. Надо восстановить загрузчики и залить прошивки. Т.е. сделать все с нуля.

      Thumb up 0 Thumb down 0

      • gtsky:

        подскажите как?? ибо я в ээтом пока не селен

        Thumb up 0 Thumb down 0

        • В самом главном мануале «HOW-TO» ссылки на это все есть.

          Thumb up 0 Thumb down 0

          • gtsky:

            не совсем понял где это, ткните плиз носом

            Thumb up 0 Thumb down 0

            • 3.1) Прошиваем PPM-encoder. Загрузчик
              4.1) Прошиваем контроллер APM. Загрузчик
              3) Прошиваем PPM-encoder
              4) Прошиваем контроллер APM

              Thumb up 0 Thumb down 0

              • gtsky:

                спасибо, но я читал и что то непонял чем иы шьем згрузчики??? что то меня смущает опять ))) не похороню ли я его вообще???? И это еще нужен программатор(((

                Thumb up 0 Thumb down 0

                • Верно. Для заливки загрузчиков нужен программатор. Может у друзей есть?

                  Чем шьем? Самое лучшее — avrdude.

                  Если фьюзы не трогать, то шанс похоронить — мал.

                  Thumb up 0 Thumb down 0

  5. Борис:

    Теперь этой кнопкой чистят EEPROM?
    Или есть варианты?

    Thumb up 0 Thumb down 0

  6. KoriSkull:

    Если после чистки EEPROM поставить крайнюю прошивку APM, есть вероятность того что придется снова чистить EEPROM?

    Thumb up 0 Thumb down 0

    • Я рекомендую чистить EEPROM всегда. До заливки прошивки и после. Если заливаете 3.2.1, то должно быть достаточным сделать сброс штатными средствами в MP.

      Thumb up 0 Thumb down 0

  7. Дмитрий:

    А у меня вопрос. А что дает смена 512 на 4096?

    Thumb up 0 Thumb down 0

  8. Константин:

    Всем добрый день!
    Возникла следующая проблема, надеюсь на вашу помощь и постараюсь описать все по этапно:
    Купил АПМ2.6 на алике вместе с 8 ЖПС., подключил к МП через юсб, установил драйвера, МП видит 7сом порт. Начал производить заливку прошивки , после того ка прошивка на коптер была установлена, выставил скорость порта, нажал на коннект….
    Но коннект не произошел….
    Я решил перепрошить атмегу 32U2, перепрошил через ФЛИП, снял перемычку, и подключил к МП.
    Устанавливаю прошивку коптер 3.1.5, все прекрасно заливается , но опять коннектиться не хочет!
    Вот видео :

    далее пробую очистить Еепром через среду андурино, устанавливая значение в цикле очистки…
    все очищается и сохраняюсь.
    пробую заливать разные версии коптерных прошивок… они заливаются но АПМ не коннектится….
    Что делать не знаю!

    Thumb up 0 Thumb down 0

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *