Проблема с добавлением нового скетча

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

  1. Nick

    Nick Нуб

    залил свой первый скетч.
    Все отлично заработало, а вот залить следующий скетч уже не могу.
    IDE выводит ошибку
    Код (Text):
    stk500_recv(): programmer is not responding.
    Arduino тем временем успешно выполняет скетч.
    Ось UBUNTU 10.10
     
  2. nailxx

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

    Ubuntu? Попробуйте аккурат в момент перезаписи нажать на Ардуино кнопку reset. Поможет или не?
     
  3. Nick

    Nick Нуб

    Нет. не помогает.
     
  4. nailxx

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

    А у вас последняя версия IDE? В опциях точно Uno выставлена?

    Если всё как здесь делаеть — проблема сохраняется? Можно попробовать в обход IDE через avr-dude прошивать. Я именно так и делаю так как официальная IDE хиленькая в плане удобства: работаю в gvim и терминале.

    Вот есть тема с похожей проблемой.
     
  5. Nick

    Nick Нуб

    где можно подробней узнать о avrdude и как прошивать им arduino?
     
  6. nailxx

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

    На самом деле avrdude — это просто утилита, позволяющая заливать уже скомпилированную программу для микроконтроллера на него. Подобно тому как готовые программы в винде помещаются в *.exe файл, программа для МК помещается в *.hex файл. А получается она в результате компиляции исходников компилятором avr-gcc. И сама Arduino IDE за кулисами работает именно через них. Попробуйте зажать shift, когда нажимаете в IDE компиляцию или прошивку: в output упадёт подробный лог что и с какими параметрами запускаются эти вещи.

    Узнать что и как принимает avrdude можно из `man avrdude`. Как всё соотносится именно с Arduino можно понять из Makefile, сделанного специально для замены Arduino IDE.

    В вашем случае, я практически уверен, что всё же дело в reset'e. Та, первая программа, пользовалась Serial? Если да — она при подключении может занимать контакты 0 и 1 по которым и происходит прошивка. Стоит попробовать понажимать reset в разные моменты: перед прошивкой, на время прошивки, за секунду до, прямо во время и т.д.

    Я делаю reset программно, используя вот такой скрипт для заливки:

    Код (Text):
    $ cat arduino-upload.py
    #!/usr/bin/env python

    import sys
    import subprocess
    from serial import Serial
    from time import sleep
     
    def upload(path):
        serial_port = '/dev/ttyACM0'
        subprocess.call(['stty', '-F', serial_port, 'hupcl'])

        # pulse on dtr
        s = Serial(serial_port, 115200)
        s.setDTR(False)
        sleep(0.1)
        s.setDTR(True)

        subprocess.call([
            '/home/nailxx/Downloads/Arduino/arduino-0022/hardware/tools/avrdude',
            '-C', '/home/nailxx/Downloads/Arduino/arduino-0022/hardware/tools/avrdude.conf',
            '-p', 'atmega328p',
            '-P', serial_port,
            '-c', 'stk500v1',
            '-b', '115200',
            '-D',
            '-U', 'flash:w:%s:i' % path,
        ])
     
    if __name__ == '__main__':
        upload(sys.argv[1])
     
  7. Nick

    Nick Нуб

    Спасибо за помощь! Проблема была в USB-кабеле. За скрипт спасибо! На счет IDE, попробую использовать Eclipse http://habrahabr.ru/blogs/arduino/111908/
     
  8. spyker

    spyker Нуб

    Nick, как Вы это узнали?

    nailxx, много читал про ресет с уно, однако у меня в данный момент аналогичная проблема с другой платой на atmega644pa, где установлен арду-совместимый загрузчик. аплоад через IDE (dev=sanguino) проходит без проблем.

    avrdude же упорно выдает:

    Код (Text):

    Using Port                    : /dev/ttyUSB1
             Using Programmer              : stk500v1 // не поддерживается m644*(?) ; загрузчик arduino выдает тоже самое
    avrdude: Send: 0 [30]   [20]
    avrdude: Send: 0 [30]   [20]
    avrdude: Send: 0 [30]   [20]
    avrdude: ser_recv(): programmer is not responding
    avrdude: stk500_recv(): programmer is not responding
     
    использование скриптов для паузы, в том числе Вашего скрипта, не помогает.
    возможно, подскажите, в какую сторону копать?
     
  9. nailxx

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

    Не работал с atmega644pa, можете попробовать использовать программатор stk500v2 вместо stk500v1?
     
  10. freeman86

    freeman86 Нуб

    Arduino Uno R3. При попытке залить очередной простой скетч, "что-то пошло не так", после чего вообще ничего не заливается. Пробовал на двух компах (Win XP, Win 10). Все то же самое. При попытке заливать скетч, поочередно один раз мигают TX, RX, затем все останавливается. Горит непрерывно ON и L. Ошибка типа: "ardude: verification error, content mismatch". Забыл добавить деталь! Когда подключаешь плату по USB, компьютер никак не реагирует, видимо не определяет ее как устройтсво..
    Я только пару дней как получил плату, так что ничего не знаю...подскажие пожалуйста, как вернуть плату в "исходное" состояние? :(
     
  11. fogary

    fogary Гик

    Начните с простого, замените USB-кабель (автору темы помогло).

    Если после нажатия кнопки Reset на плате Arduino, светодиод L не моргает - то возможно проблема в загрузчике.
     
  12. freeman86

    freeman86 Нуб

    Кабели в порядке, потому что на разных компьютерах проверяю, т.е. два разных кабеля и они комплектные от принетров.
    После нажатия кнопки, светодиод L три раза моргает и опять загорается "на постоянку".
     
  13. Tomasina

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

    заново прошей загрузчик, может он слетел.
     
  14. freeman86

    freeman86 Нуб

    а как его заново прошить?:rolleyes:
     
  15. Tomasina

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

    freeman86 нравится это.
  16. freeman86

    freeman86 Нуб

  17. Tomasina

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

    В первой ссылке UNO - то что у тебя.
     
  18. freeman86

    freeman86 Нуб

    Выходит, без второй uno, в заводское состояние плату не вернуть? :(
     
  19. Tomasina

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

    Да, нужна вторая Arduino (любая), либо программатор типа USBASP.
     
    freeman86 нравится это.
  20. freeman86

    freeman86 Нуб