Программирование Arduino Mini

Тема в разделе "Arduino & Shields", создана пользователем Maksim_22, 4 фев 2016.

  1. Maksim_22

    Maksim_22 Нерд

    Кто знает, можно ли прошить Arduino Mini через Uno? На вики есть похожая статья, однако она не для Uno.
    Код для прошивки:
    Код (C++):
    // даём разумное имя для пина
    // который будет выполнять сброс микроконтоллера
    #define RESET 4

    char buff[4];

    // переменная состояния режима программирования
    bool programming = false;

    void setup()
    {
      // открываем последовательный порт
      // для приёма и отправки данных в USB
      Serial.begin(115200);
      // открываем последовательный порт
      // для приёма и отправки данных в плату Iskra Mini
      Serial1.begin(115200);
    }

    void loop()
    {
      // если программа в режиме программирования
      if (programming) {
        // читаем данные с USB и записываем в плату Iskra Mini
        progUSBRead();
        // читаем данные с платы Iskra Mini и записываем в USB
        progMiniRead();
      } else if (Serial.available()) {
        // если приходят данные с USB
        pinMode(RESET, OUTPUT);
        digitalWrite(RESET, LOW);
        delay(50);
        digitalWrite(RESET, HIGH);
        delay(50);
        programming = true;
      } else if (Serial1.available()) {
        // если приходят данные с платы Iskra Mini
        // читаем данные с USB и записываем в плату Iskra Mini
        serialUSBRead();
        // читаем данные с платы Iskra Mini и записываем в USB
        serialMiniRead();
      }
    }

    void progUSBRead()
    {
      // если появились данные с USB
      if (Serial.available()) {
        // считываем символ
        char c = (char)Serial.read();
        // записываем этот символ в плату Iskra Mini
        Serial1.write(c);
        // проверка на завершение процесса прошивки
        switch (c) {
          case 'Q':
          buff[0] = 'Q';
          break;
          case ' ':
          if (buff[0] == 'Q') {
            buff[1] = ' ';
            break;
          }
          buff[0] = '\0';
          break;
          default:
          buff[0]= '\0';
          break;
        }
      }
    }

    void progMiniRead()
    {
      // если появились данные с платы Iskra Mini
      if (Serial1.available()) {
        // считываем символ
        char c = (char)Serial1.read();
        // записываем этот символ в USB
        Serial.write(c);
        // проверка на завершение процесса прошивки
        if (buff[1] == ' ') {
          buff[1] = 'O';
          buff[2] = 'K';
        } else if (buff[1] == 'O' && buff[2] == 'K') {
          programming = false;
          clearbuff();
        }
      }
    }

    void serialUSBRead()
    {
      // если появились данные с USB
      if (Serial.available()) {
        // считываем символ
        char c = (char)Serial.read();
        // записываем этот символ в плату Iskra Mini
        Serial1.write(c);
      }
    }
    void serialMiniRead()
    {
      // если появились данные с платы Iskra Mini
      if (Serial1.available()) {
        // считываем символ
        char c = (char)Serial1.read();
        // записываем этот символ в плату Iskra Mini
        Serial.write(c);
      }
    }

    // функция очистки буфера
    void clearbuff()
    {
      for (int i = 0; i < 4; i++) {
        buff[i] = 0;
      }
    }
    Код не работает, последующие программы не доходят до Mini, Mini только очень энергично мигает.
    Заранее спасибо!
     
  2. Maksim_22

    Maksim_22 Нерд

    Еще забыл добавить, что Uno мне все еще нужна, поэтому вытаскивать микроконтроллер не очень хочется
     
  3. Vladis_a

    Vladis_a Гик

  4. Maksim_22

    Maksim_22 Нерд

    Первая ссылка не работает - выдает ошибку загрузки на плату
    Во второй Uno вообще отсутствует, а как подогнать ее под тот вариант, я не знаю
     
  5. Vladis_a

    Vladis_a Гик

    Вы по второй ссылке видео смотрели?
     
  6. DrProg

    DrProg Вечный нерд

    Да что же вы так чесать спину ногами? Вот же устройство для этой цели созданное, никаких дополнительных приспособлений и скетчей не надо, прошивается с простотой обычной Ардуино, разве что резет нажать иногда придется. Подсказка, можно посмотреть аналог у наших юговосточных друзей. Тысячи их.
     
  7. Maksim_22

    Maksim_22 Нерд

    Нет, сейчас посмотрю
     
  8. Vladis_a

    Vladis_a Гик

    Я так понял, что человек хочет прошить прямо сейчас. А из Китая ему ее месяц ждать.:) Правда, за этот месяц можно прочесть много чего по прошивке через Уно.
    Ну и вот тут еще https://geektimes.ru/post/255816/ Не обращайте внимания, что там Нано, просто пины будут расположены чуть по другому.
     
  9. Maksim_22

    Maksim_22 Нерд

    На искре нет такого выхода(входа?), как GRN. К чему тогда подключать провод из Reset ардуино?
     
  10. DrProg

    DrProg Вечный нерд

    Ну если приспичило, то конечно. А вообще, купить в ближайших радиотоварах, ну или найти на Авито, сейчас китайскими поделками только ленивый не торгует с 200-500% накруткой, разумеется. Я бы свою дал, у меня их штуки три. )
     
  11. Maksim_22

    Maksim_22 Нерд

    Я только сейчас понял, что на видео uno без микроконтроллера - выдернули
     
  12. Maksim_22

    Maksim_22 Нерд

    Или можно безболезненно вытащить МК, а потом вставить обратно?
     
  13. Vladis_a

    Vladis_a Гик

    Именно так. Если, конечно, для выдергивания не приходится использовать пайку. :)
     
  14. Tomasina

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

    Только все вытаскивания и втыкания - при отключенном питании.
     
  15. Airbus

    Airbus Радиохулиган Модератор

    Шнурок от старой мАбилы прекрасно прошивает.в Евросети на распродажах можно купить рублей за 50 подойдёт от любого телефона главное правильно найти RX/TX
     
  16. Maksim_22

    Maksim_22 Нерд

    Всем спасибо за помощь. Купил в итоге переходник)