Arduino Ethernet не могу загрузить скетч

Тема в разделе "Arduino & Shields", создана пользователем Maksim312, 8 фев 2013.

  1. Maksim312

    Maksim312 Нуб

    Здравствуйте дорогие форумчане, помогите разобраться купил Arduino Ethernet w POE, также имеется
    Адаптер USB-UART TTL
    Основан на чипе CP2102, не могу загрузить скетч, IDE выдает сообщение:


    avrdude: stk500_getsync(): not in sync: resp=0x00


    Думал проблема в адаптере, замыкал tx rx, нормально, данные передаются. На arduino светится светодиод ON, и светодиод L9 - постоянно.
    Что показывает L9 и за что отвечает ?
     
  2. roggedhorse

    roggedhorse Гик

    "LED: 9. There is a built-in LED connected to digital pin 9. When the pin is HIGH value, the LED is on, when the pin is LOW, it's off. On most other arduino boards, this LED is found on pin 13. It is on pin 9 on the Ethernet board because pin 13 is used as part of the SPI connection"

    L9 подключен к PORTB 1 микроконтроллера (Digital pin 9 Arduino). Во время Reset МК сбрасывает все ноги в "Ноль" - L9 по идее не должен гореть, если только загрузчик его не "поджигает".

    Чтобы загружать скетч через USB-UART нужно либо подключить ногу DTR через конденсатор к пину Reset ардуины, либо после того, как скетч скомпилирован и сразу перед попыткой avrdude его загрузить, нажать кнопку Reset. Первый способ, соответственно, является автоматическим, второй - ручным.
    После нескольких загрузок в ручном режиме вы обязательно реализуете автоматический :)

    Некто Nestor Oakписал по теме ручного режима:
    "При нажатии кнопки Upload необходимо сделать маленькую хитрость, чтобы программа смогла залиться. Если пустить все на самотек, то программа будет долго пытаться залиться и, наконец, выдаст ошибку. Для избежания ошибки необходимо в ручную сделать ресет проца в момент, когда прога скомпилилась. Этот момент случается, когда в поле состояния вылазит строка Binary sketch size: xxx bytes (of a xxxxx byte maximum) В этот момент быстро нажмите и отпустите кнопку на плате, и тогда прога успешно зальется! Если на конвертере начали быстро моргать зеленая и красная лампочки - все идет правильно. Если этого не произошло, возможно, вы нажали не вовремя - попробуйте еще раз"


    Да, вот еще что: как сделать Reset через DTR можно подсмотреть здесь
    http://arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf
    Найдите конденсатор C5 на схеме и пляшите от него
     
    nailxx нравится это.
  3. Maksim312

    Maksim312 Нуб

    Так на переходнике есть reset который я подключаю к ардуино

    IMG_0322.JPG


    Кстати если нажать перед avrdude reset на ардуино то IDE сразу выдает :

    avrdude: ser_drain(): read error: Операция ввода/вывода была прервана из-за завершения потока команд или по запросу приложения.
     
  4. roggedhorse

    roggedhorse Гик

    дайте, плиз, ссылку на доки на ваш USB-UART
     
  5. Maksim312

    Maksim312 Нуб

  6. roggedhorse

    roggedhorse Гик

    в таблице Table 5. CP2102 Pin Definitions выход RST обозначен как "Device Reset. Open-drain output of internal POR or VDD monitor. An external source can initiate a system reset by driving this pin low for
    at least 15 µs"
    Т.е. этот пин используется для перезапуска самого CP2102 и, возможно, после POR CP2102 на этом пине появляется короткий импульс.
    Но в любом случае (имхо) его нельзя использовать при программировании Arduino.
    Отключите Reset от ардуины и попробуйте сделать так, как об этом пишет Nestor Oak. У меня тоже не сразу получилось, но получилось. Потом мне надоело делать это руками и я приладил кондер к DTR :)

    Забыл добавить: когда Reset ардуины подключен к Reset CP2102, то при попытке программировать ардуину (после нажатия кнопки Reset на ней) на RST CP2102 подается НОЛЬ, что в соответствии с Table 5 ( An external source can initiate a system reset by driving this pin low) вероятно вызывает перезапуск CP2102
     
    nailxx нравится это.
  7. Maksim312

    Maksim312 Нуб

    Получается что при прошивке управляющий сигнал DTR нужен ? То что я нажимаю на самом arduino reset перед прошивкой - это не поможет ?
     
  8. roggedhorse

    roggedhorse Гик

    DTR нужен для того, чтобы автоматически управлять сигналом Reset при прошивке скетча.
    То есть либо CP2102 пошлет в ардуину сигнал Reset через DTR и конденсатор, либо, если DTR не подключен к линии Reset, вы нажимаете кнопку Reset руками
     
  9. roggedhorse

    roggedhorse Гик

  10. Maksim312

    Maksim312 Нуб

    Получается нужно сделать вот так только без резистора ?

    http://www.kerrywong.com/blog/wp-content/uploads/2010/07/CP2102_ArduinoSch.png

    Кстати попробовал нажать reset, после нажатия кнопки загрузки скетча и о чудо - IDE сообщило мне что загружено, думал глюк, подключил светодиод, был загруженный тестовый скетч. Все работает :) , попробовал модифицировать программу и еще раз загрузить, прошло нормально. Осталось решить вопрос с авто RESET через DTR.
     
  11. roggedhorse

    roggedhorse Гик

    Приятное чувство, да ? :)
    Рад за вас!

    Насчет резистора: в ардуине Reset уже подтянут к Vcc резистором RN1D. Так что вам он не понадобится
     
  12. Maksim312

    Maksim312 Нуб

    Доработанный Адаптер USB-UART основанный на чипе CP2102, все работает, с первого раза, спасибо roggedhorse за содействие в решении проблемы.

    dtr.png
     
  13. keLv

    keLv Нуб

    У меня такая же ошибка при загрузки скетча в Arduino Ethernet w POE.
    Плату и порт выставил правильно, подключаю через
    покупал на амперке.

    Когда замыкаю Rx/Tx то всё нормально отображается на мониторинге.

    P.S.
    Заметил что при замыкании Rx/Tx, то загорается L9, но при размыкании не гаснет.

    IMG_0507.JPG
     
    Последнее редактирование: 31 окт 2013