"Аппаратный сброс" или лечение от "зависаний"

Тема в разделе "Arduino & Shields", создана пользователем Sabber, 27 апр 2011.

  1. Sabber

    Sabber Нуб

    Столкнулся с проблемой, что при выставлении задержек и использовании вывода на цифровые пины ардуино "зависает" и не даёт себя прошивать через USB-кабель.

    Модель - Arduino Uno.

    Дополнительно: сама программа явно работает, хотя и не совсем корректно (также добавлен код мигания встроенного диода), но вывод, в моём случае, на монитор не осуществился. Поключение диодов вместо монитора показало, что сигнал идёт, но по каким-то причинам он задерживается так же, как и встроенный диод. Кстати диод светиться очень слабо - даже с отключенным светом не сразу заметно.

    Если у кого есть идеи на счёт "сброса" до состояния программы "Hello world" буду очень признателен.

    Программа вывода была взята согласно совету от амперки.
     
  2. Sabber

    Sabber Нуб

    Дополнительно: "не даёт перепрошить" - значит, что ком-порт заблокирован на выбор, попытка перепрошить с уже имевшимися настройками - "ком порт не найден"
     
  3. nailxx

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

    Хммм, а не расскажете что именно куда подключено и текущий код прошивки? То, что светодиод еле светится и всё тормозит наводит на мысль, что есть проблема с питанием. А именно — короткое замыкание. Я с таким сталкивался, когда отправлял вывод с Ардуино через базу транзистора прямиком в землю без токоограничевающего резистора.
     
  4. Sabber

    Sabber Нуб

    Код (Text):

    #include <LiquidCrystal.h>


    LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

    int ledPin = l3;


    void setup() {
      lcd.begin(20, 4);
      lcd.print("hello, world!");
      pinMode(ledPin, OUTPUT);
    }


    void loop() {
      digitalWrite(13, HIGH);
      delay(100);
      digitalWrite(13, LOW);
      delay(200);
      digitalWrite(13, HIGH);
      delay(100);

      lcd.setCursor(0, 2);
      lcd.print(millis() / 1000);

      digitalWrite(13, LOW);
      delay(600);
    }
    Код примерный....
    Сейчас исправно работает, но до конца не понял, как пофиксилось - комп перезагружен, ардуино - после ночи "приподостыл" (если, конечно, это вообще можно говорить подобным образом) - в итоге появился в COM3 и перепрошит.
    Теперь не использую delay.
    Проблема есть с монитором - слабое частое мерцание подсветки (со светом это не заметно, но в темноте уже можно).
     
  5. Sabber

    Sabber Нуб

    Проблема с экраном - питание слабова-то
    Если кто знает точно - можно ли подать большее напряжение на арудино уно с юсб? (например 2хUSB)
     
  6. nailxx

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

    А греется ли при работе регулятор напряжения на Ардуино? Чёрный трёхногий компонент рядом с бочонком штекера питания.
     
  7. Iskandaru

    Iskandaru Нерд

    По поводу порта COM, тут я тоже раз столкнулся с проблемой его определения. Оказалось, все дело в проводе USB. Почему-то один только питание давал Ардуино, но его не видел комп, а поставил другой шнур - все в порядке.
     
  8. elefant

    elefant Нуб

    Arduino может зависнуть, если делать вывод на ком порт без задержки. Имеется ввиду тот порт, через который ее программируют. В качестве симптома у меня горела лампа TX, и комп не видел порта по которому программируется плата.
    У меня это решалось так:
    • отключить все провода
    • отключить usb
    • зажать кнопку reset
    • подключить usb (лампа питания на плате не загорится)
    • одновременно с отпусканием кнопки reset загрузить в плату пример blink
    После второго-третьего цикла, все загрузилось и стало работать.
     
  9. skillz

    skillz Нуб

    Аналогичная проблема. Были тоже глюки с "просьбой" выбрать другой порт.
    Я перетыкивал usb заново а потом лил.
    Очередно перетыкивая кабель, Arduino перестал определятся в диспетчере устройств.
    Диоды rx tx не мигают при включении (они вроде мигали).
    3 дня всего пользуюсь. помогите плиз.
    Cкладывается ощущение что сгорел мост usb2com.
    Скетч залитый в МК работает.
     
  10. klez

    klez Нуб

    Проблема такая же, как у Skillz. После очередного подключения-отключения кабеля Плата больше не детектится в диспетчере устройств. попробовал на разных компьютерах. Неужели usb2com выгорел?
    Последний загруженный скетч работает.
    Помогите пожалуйста.
     
  11. Chris

    Chris Нерд

    К сожалению больше 5 вольт подать невозможно... Для этого есть отдельное питание... А по USB только +-5V... Есть еще hyper-speed порты, там 500 mAh, но не более... его все равно не хватит... Все зависания как раз от нехватки питания. Еще как вариант попробовать delaymills
     
  12. Unixon

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

    Если проблема с питанием, остается одно из:
    0) на всякий случай проверить куда уходит имеющееся и на чем конкретно садится мощность;
    1) в разумных пределах накидать емкостей на 5V, где-нибудь около 1000мкф, но не на много больше, чтобы цепям питания не поплохело при включении;
    2) соорудить шилд с более мощным(и) стабилизатором(ами) и питать его от ноутбучного БП;
    3) (а) найти и купить или (б) [для полных энтузиастов] редизайнить и собрать свою ардуину со своим питанием на требуемый ток.
     
  13. skillz

    skillz Нуб

    Амперка прислала мне другую плату. А старая до сих пор лежит. Правда ее можно через ISP шить
     
  14. Unixon

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

    @skillz,klez: на вашей ардуине на чем выполнен мост USB-UART, какая микросхема стоит ?